• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      農(nóng)機(jī)車載電子設(shè)備用戶界面框架設(shè)計

      2014-08-06 03:29:58李由付衛(wèi)強(qiáng)包涵孟志軍
      關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu)菜單單片機(jī)

      李由,付衛(wèi)強(qiáng),包涵,孟志軍

      (1.國家農(nóng)業(yè)信息化工程技術(shù)研究中心,北京 100097;2.北京農(nóng)業(yè)智能裝備技術(shù)研究中心;3.國家農(nóng)業(yè)智能裝備工程技術(shù)研究中心;4.農(nóng)業(yè)部農(nóng)業(yè)信息技術(shù)重點(diǎn)實(shí)驗(yàn)室)

      隨著農(nóng)業(yè)現(xiàn)代化步伐的加快,農(nóng)業(yè)生產(chǎn)現(xiàn)場使用到越來越多的電子設(shè)備,這些設(shè)備的顯示方式大致分為聲光信號,點(diǎn)陣式黑白屏幕,高分辨率彩色屏幕。其中以LCD 為主的點(diǎn)陣式單色屏,因具有顯示清晰,成本低廉,接口簡單,強(qiáng)光下可讀等優(yōu)點(diǎn),在一些以監(jiān)測控制為主的車載設(shè)備上得到廣泛的應(yīng)用。

      然而在編寫其界面顯示時,由于程序可移植性差,導(dǎo)致在不同設(shè)備中需要完全重寫界面。在界面修改時牽一發(fā)而動全身,不僅拖延了設(shè)備開發(fā)周期,而且還降低了設(shè)備可靠性。彭良清等提出了基于樹形菜單結(jié)構(gòu)的通用界面的一些模型和方法[1-3],這些方法將菜單數(shù)據(jù)和顯示函數(shù)分離開來,解決了程序可移植性差的問題,但是存在界面修改困難、函數(shù)復(fù)用性差等問題,并且受嵌入式設(shè)備屏幕大小的限制,一些功能缺少實(shí)際用途。宋曉輝等對樹形菜單結(jié)構(gòu)做了一些改進(jìn)[4],將功能型菜單項(xiàng)和數(shù)據(jù)型菜單項(xiàng)分開,一定程度上解決了函數(shù)冗余的問題;但仍采用適應(yīng)于桌面操作系統(tǒng)的菜單操作方式導(dǎo)致其數(shù)據(jù)結(jié)構(gòu)復(fù)雜,并不能很好應(yīng)用于小屏幕的嵌入式系統(tǒng)。

      因此,提出了一種新型的界面顯示框架,實(shí)現(xiàn)多種農(nóng)業(yè)裝備常見的界面應(yīng)用類型,解決了小屏幕嵌入式系統(tǒng)顯示界面移植性差問題。

      1 農(nóng)機(jī)車載設(shè)備常用界面簡介

      農(nóng)業(yè)現(xiàn)場的電子設(shè)備通常以監(jiān)測控制為主,監(jiān)測和控制設(shè)備一般是在農(nóng)機(jī)運(yùn)行前進(jìn)行參數(shù)設(shè)置,在運(yùn)行過程中進(jìn)行數(shù)據(jù)顯示,在很多情況下監(jiān)測和控制是合二為一的,因此要求界面是非阻塞式的,能在各種狀態(tài)下方便的相互切換,并可以通過菜單項(xiàng)選擇實(shí)現(xiàn)一定的功能(如:啟動,停止)。農(nóng)業(yè)上常用的計量單位標(biāo)準(zhǔn)尚不統(tǒng)一,通常還需實(shí)現(xiàn)計量單位切換功能。

      工業(yè)控制常用的界面分為5 種類型:菜單屏、變量屏、選擇屏、設(shè)定屏和顯示屏[5]。與之類似將界面類型分為:菜單選擇屏、靜態(tài)文本屏、動態(tài)文本屏和參數(shù)設(shè)定屏。各個類型界面的功能見表1。

      基于以上界面類型,參照一般人機(jī)交互的按鍵系統(tǒng)考慮到通用性及便捷性,系統(tǒng)設(shè)計時采用7 鍵制,分別為:上、下、左、右、確定、設(shè)置、返回。

      表1 界面功能分類表Table 1 The classification of interface features

      以下介紹各界面的元素類型和操作分析:

      菜單選擇界面主要用于自頂向下的樹狀界面操作,為界面設(shè)計中常用的類型,用戶通過此類界面進(jìn)行界面跳轉(zhuǎn),功能設(shè)定。靜態(tài)標(biāo)簽一般為提示性文字,靜態(tài)選項(xiàng)為帶被選擇功能文字。

      菜單選擇界面的一般操作為:上下鍵變更選項(xiàng),左右鍵翻頁,確定鍵進(jìn)入下一界面,或?qū)崿F(xiàn)某一功能,返回鍵返回上一界面,設(shè)置鍵的功能一般不使用。

      靜態(tài)文本界面主要用于顯示固定的內(nèi)容,一般用于信息提示,幫助文檔,版權(quán)信息的顯示,即它只包含靜態(tài)標(biāo)簽。

      因?yàn)殪o態(tài)文本界面本身操作較少,所以其按鍵響應(yīng)也相對簡單,只包含滾屏和返回,操作方法與菜單選擇界面類似。

      動態(tài)文本界面主要用于變量數(shù)據(jù),運(yùn)行狀態(tài)的實(shí)時顯示,用戶主要通過這類界面實(shí)現(xiàn)對系統(tǒng)實(shí)時狀態(tài)的了解,其界面由靜態(tài)標(biāo)簽和動態(tài)標(biāo)簽組成,而動態(tài)標(biāo)簽又由固定文字,變量文字組成。

      像靜態(tài)文本界面一樣動態(tài)文本界面本身并不需要太多操作,所以其按鍵響應(yīng)也相對簡單與靜態(tài)文本界面相同。

      參數(shù)設(shè)定界面也是用戶界面中常用的界面,主要用于用戶對系統(tǒng)中的變量進(jìn)行設(shè)置。它包含了幾乎所有的界面常用功能,其組成如圖1 所示。這里的動態(tài)選項(xiàng)指的是既可以被選中,又會因變量和單位的改變而變化顯示內(nèi)容的選項(xiàng)。

      圖1 參數(shù)設(shè)定界面組成Fig.1 The interface elements of parameter setting

      參數(shù)設(shè)定界面的操作相對復(fù)雜,因其有兩種狀態(tài),即選項(xiàng)切換和變量修改,其操作邏輯如圖2所示。

      圖2 參數(shù)設(shè)定界面操作Fig.2 The operating procedures of parameter setting interface

      以上分析了界面的組成和操作。在操作上采用了和目前大多數(shù)手持設(shè)備相仿的操作模式,并且在各種類型界面間保持了操作風(fēng)格的統(tǒng)一。

      2 界面的數(shù)據(jù)結(jié)構(gòu)設(shè)計

      目前常見的界面框架數(shù)據(jù)結(jié)構(gòu)都以菜單為單位,缺少對菜單項(xiàng)的精細(xì)化分,這使得界面顯示和操作函數(shù)對各種類型的菜單很難做到通用,而基于菜單項(xiàng)的菜單組織結(jié)構(gòu)可以很好解決這個問題。將以上分析抽象為實(shí)際的數(shù)據(jù)結(jié)構(gòu),則形成菜單和項(xiàng)兩種數(shù)據(jù)結(jié)構(gòu),其中項(xiàng)是菜單的子結(jié)構(gòu),為了適應(yīng)較小的屏幕,并簡化顯示和操作函數(shù),一項(xiàng)即實(shí)際屏幕顯示中的一行。

      2.1 項(xiàng)數(shù)據(jù)結(jié)構(gòu)設(shè)計

      項(xiàng)中含有文本內(nèi)容,即格式化字符串,用于格式化輸出的字符串;含有數(shù)據(jù)變量地址和單位變量地址,用于填入格式化字符串中的變量內(nèi)容;含有項(xiàng)狀態(tài)標(biāo)志,用于區(qū)別項(xiàng)的類型,以便在顯示和操作時加以區(qū)分;含有跳轉(zhuǎn)菜單指針,用于表明該項(xiàng)所應(yīng)該跳轉(zhuǎn)的菜單。特別指出將數(shù)據(jù)變量類型定義為無類型指針,從而使得同一種數(shù)據(jù)結(jié)構(gòu)可以實(shí)現(xiàn)多種數(shù)據(jù)變量類型的表示。具體數(shù)據(jù)結(jié)構(gòu)如下:

      一個常見的項(xiàng)數(shù)據(jù)如下:

      其中第一個元素表示了要顯示的數(shù)據(jù)和變量元素的顯示格式;第二、三個元素分別是數(shù)據(jù)變量地址和單位字符串首地址,在設(shè)置模式時可以利用這些指針修改變量原始值,實(shí)現(xiàn)數(shù)據(jù)設(shè)置和單位更改;第四個元素是項(xiàng)狀態(tài)標(biāo)志,表示該項(xiàng)是可選中項(xiàng),用于區(qū)分標(biāo)題和選項(xiàng);最后一個元素表示選擇此項(xiàng)后跳轉(zhuǎn)的目標(biāo)菜單。通常定義項(xiàng)數(shù)據(jù)時是定義一個項(xiàng)數(shù)組用來組成一個菜單,以減少存儲空間,并實(shí)現(xiàn)隨機(jī)存儲。

      2.2 菜單數(shù)據(jù)結(jié)構(gòu)設(shè)計

      菜單是用于表達(dá)一個界面內(nèi)容和狀態(tài)的數(shù)據(jù)結(jié)構(gòu)。它應(yīng)該含有項(xiàng)數(shù)組首地址,用于表示界面顯示的內(nèi)容;含有界面狀態(tài)標(biāo)志位,用于表明界面的狀態(tài)和界面的功能;含有被選項(xiàng),用于表明當(dāng)前界面的被選項(xiàng);含有頁頂項(xiàng),用于控制界面視圖位置;含有最大項(xiàng)數(shù),用于防止項(xiàng)數(shù)組越界;含有按鍵響應(yīng)函數(shù),用于相應(yīng)按鍵操作。其中按鍵響應(yīng)函數(shù)采用帶參函數(shù)指針形式,利用界面的狀態(tài)和按鍵共同決定需要執(zhí)行的操作,既實(shí)現(xiàn)了統(tǒng)一接口,又增強(qiáng)了可擴(kuò)展性。菜單間的關(guān)系只由項(xiàng)與菜單的指針決定,而與項(xiàng)的順序無關(guān)。具體代碼如下:

      一個常見的菜單數(shù)據(jù)如下:

      其中第一個元素表示了該菜單對應(yīng)的項(xiàng)數(shù)據(jù)數(shù)組;第二個元素是菜單狀態(tài)標(biāo)志,表示該菜單是參數(shù)設(shè)置類型,該元素也可以在運(yùn)行過程中被改為正在設(shè)置狀態(tài);第三、四個元素默認(rèn)填充0,在程序?qū)嶋H運(yùn)行中可更改,以變更選項(xiàng)或視圖;第五個元素是菜單最大項(xiàng),與項(xiàng)數(shù)據(jù)數(shù)組長度相當(dāng);第六個元素是操作響應(yīng)函數(shù),對應(yīng)的函數(shù)為參數(shù)設(shè)定界面的操作函數(shù)。

      3 界面框架實(shí)現(xiàn)

      3.1 菜單顯示

      將以上數(shù)據(jù)結(jié)構(gòu)作為基礎(chǔ),菜單的操作實(shí)現(xiàn)也呼之欲出。界面顯示函數(shù),每次從PageTopSelect 對應(yīng)項(xiàng)開始顯示,顯示接下來的若干項(xiàng)到屏幕(受屏幕顯示最大行影響),顯示項(xiàng)數(shù)據(jù)時,先分析項(xiàng)字符串中的變量類型和顯示寬度,再將項(xiàng)數(shù)據(jù)中對應(yīng)的變量插入到顯示字符串中。同時可以利用MenuSelect 變量值反顯選中行。如此可以顯示超過屏幕長度本身的菜單,每次只顯示對應(yīng)屏幕大小的一部分內(nèi)容,相當(dāng)于擴(kuò)展了屏幕。具體流程圖如圖3 所示。

      圖3 顯示函數(shù)流程圖Fig.3 The flowchart of display function

      3.2 操作功能

      實(shí)現(xiàn)樹狀菜單結(jié)構(gòu)使用堆棧,即主界面為棧底,每次執(zhí)行菜單跳轉(zhuǎn)時執(zhí)行壓棧操作,菜單返回時執(zhí)行出棧操作,并且堆棧操作都使用指針方式實(shí)現(xiàn),這樣既可以較少的代價實(shí)現(xiàn)多級菜單跳轉(zhuǎn),又將菜單的操作和菜單數(shù)據(jù)本身分離,使得在修改菜單數(shù)據(jù)時避免了對其他菜單關(guān)系的影響。

      每個菜單可以使用不同的按鍵響應(yīng)函數(shù),相同類型菜單之間還可以共用響應(yīng)函數(shù),兼顧了靈活性與復(fù)用性。

      將菜單顯示和操作分開,用戶可以將顯示刷新放在定時中斷中,將操作放在外部中斷中,增強(qiáng)了編程的靈活性。

      一個典型的界面操作流程如圖4 所示。

      圖4 界面操作Fig.4 The interface operation

      菜單操作對應(yīng)的軟件實(shí)現(xiàn)方式見表2。

      表2 菜單操作實(shí)現(xiàn)對照表Table 2 The implementation of menu operation function

      3.3 菜單修改

      對于已經(jīng)編寫好的菜單對其修改非常簡單,以下介紹幾種常見的菜單修改方式:

      (1)要增加(刪除)菜單中某項(xiàng),直接增加(刪除)該項(xiàng)數(shù)據(jù),并修改相關(guān)菜單數(shù)據(jù)的最大項(xiàng)參數(shù)即可。

      (2)要修改項(xiàng)數(shù)據(jù)顯示格式,直接修改項(xiàng)數(shù)據(jù)中的格式化字符串即可。

      (3)要調(diào)節(jié)菜單項(xiàng)順序,直接調(diào)整項(xiàng)數(shù)組的順序而不用修改其他數(shù)據(jù)內(nèi)容。

      (4)要修改某項(xiàng)跳轉(zhuǎn)的菜單,直接替換掉該項(xiàng)數(shù)據(jù)后的跳轉(zhuǎn)菜單指針。

      (5)要修改某項(xiàng)顯示的變量,直接修改該項(xiàng)數(shù)據(jù)中的變量指針指向即可。

      (6)要將菜單中的某項(xiàng)移至同類型其他菜單,直接將相關(guān)項(xiàng)數(shù)據(jù)移至目標(biāo)菜單項(xiàng)數(shù)組,并修改兩個菜單數(shù)據(jù)的最大項(xiàng)參數(shù)即可。

      (7)要增加(刪除)某菜單只需將與其相關(guān)的項(xiàng)數(shù)據(jù)同時增加(刪除),并修改相關(guān)菜單數(shù)據(jù)的最大項(xiàng)參數(shù)即可。

      這些修改完全不涉及整個菜單的結(jié)構(gòu)調(diào)整,項(xiàng)與項(xiàng),菜單與菜單之間沒有直接關(guān)系,在修改時也不會相互影響。

      4 結(jié)語

      文章提出的界面框架適用于農(nóng)業(yè)裝備顯示,解決了小屏幕嵌入式系統(tǒng)顯示界面移植性差問題。采用線性存儲結(jié)構(gòu)減少了數(shù)據(jù)冗余,提高了訪問速度。簡化優(yōu)化了菜單關(guān)系,使得操作函數(shù)可以統(tǒng)一,菜單建立和改寫方便。利用抽象方法使得一種菜單數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)多種界面類型以滿足農(nóng)業(yè)設(shè)備的一般交互需求。

      [1]彭良清.基于節(jié)點(diǎn)編號的通用樹狀菜單設(shè)計方法與實(shí)現(xiàn)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2002(9):36-40.

      [2]黃聲野,陳秀華,王東生.一種用C51實(shí)現(xiàn)的單片機(jī)系統(tǒng)菜單管理方案[J].計算機(jī)工程,2004,30(3):191-192.

      [3]陸錚,羅嘉.單片機(jī)C語言下LCD多級菜單的一種實(shí)現(xiàn)方法[J].工礦自動化,2006(1):50-51.

      [4]宋曉輝,葉樺,丁昊.基于單片機(jī)的多級菜單實(shí)現(xiàn)方法改進(jìn)[J].東南大學(xué)學(xué)報:自然科學(xué)版,2007,37(S1):66-70.

      [5]陳冬,徐文立,夏遂華.液晶顯示多層菜單結(jié)構(gòu)的軟件設(shè)計[J].電氣傳動,2001,31(4):56-59.

      [6]周雪珍,朱志明,符策健,等.多功能數(shù)字化弧焊逆變電源人機(jī)交互系統(tǒng)[J].電焊機(jī),2007,37(1):6-10.

      [7]納新,趙東風(fēng).非阻塞模式LCD多級菜單的設(shè)計及其數(shù)據(jù)結(jié)構(gòu)[J].云南民族大學(xué)學(xué)報:自然科學(xué)版,2007,16(4):347-349.

      [8]古容江,張珣.基于ARM的圖形用戶界面軟件開發(fā)平臺的搭建[J].液晶與顯示,2009(6):901-906.

      [9]賈志成,程敏,宋濤,等.基于狀態(tài)機(jī)的LCD多級菜單設(shè)計[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2012,12(2):73-75.

      [10]陳慧,王宏遠(yuǎn).一種基于AVR單片機(jī)的樹狀菜單界面的設(shè)計[J].電子工程師,2005,31(6):68-70.

      [11]許秀英,韓靜,石建飛,等.水稻田間環(huán)境參數(shù)無線智能監(jiān)測系統(tǒng)[J].黑龍江八一農(nóng)墾大學(xué)學(xué)報,2013,25(5):70-73.

      [12]李敏通,張戰(zhàn)國.一種建立單片機(jī)應(yīng)用系統(tǒng)菜單的新方法[J].計算機(jī)工程,2006,32(16):259-260.

      猜你喜歡
      數(shù)據(jù)結(jié)構(gòu)菜單單片機(jī)
      中國新年菜單
      基于單片機(jī)的SPWM控制逆變器的設(shè)計與實(shí)現(xiàn)
      電子制作(2019年13期)2020-01-14 03:15:28
      基于單片機(jī)的層次漸變暖燈的研究
      電子制作(2019年15期)2019-08-27 01:12:10
      基于單片機(jī)的便捷式LCF測量儀
      電子制作(2019年9期)2019-05-30 09:42:02
      本月菜單
      美食堂(2017年1期)2017-01-13 01:37:42
      “翻轉(zhuǎn)課堂”教學(xué)模式的探討——以《數(shù)據(jù)結(jié)構(gòu)》課程教學(xué)為例
      高職高專數(shù)據(jù)結(jié)構(gòu)教學(xué)改革探討
      中國市場(2016年45期)2016-05-17 05:15:48
      Microchip推出兩個全新PIC單片機(jī)系列
      TRIZ理論在“數(shù)據(jù)結(jié)構(gòu)”多媒體教學(xué)中的應(yīng)用
      《數(shù)據(jù)結(jié)構(gòu)》教學(xué)方法創(chuàng)新探討
      河南科技(2014年5期)2014-02-27 14:08:57
      鸡泽县| 宁远县| 临海市| 大邑县| 凌源市| 泰和县| 溆浦县| 剑阁县| 哈密市| 达孜县| 子长县| 玛曲县| 井陉县| 宁武县| 宝清县| 扎鲁特旗| 庆云县| 松溪县| 巴彦县| 卓资县| 高碑店市| 凉山| 岳池县| 巨野县| 青阳县| 宜兰县| 江安县| 永春县| 饶阳县| 班玛县| 利川市| 张北县| 云南省| 宁都县| 元江| 方城县| 南宫市| 崇义县| 潞西市| 阳原县| 新建县|