基于事件-目標驅動(dòng)的人機界面設計

發(fā)布時(shí)間:2010-11-15 12:30    發(fā)布者:eetech
關(guān)鍵詞: 目標 , 驅動(dòng) , 人機界面 , 事件
人機界面(human-computer interface),又稱(chēng)用戶(hù)界面、人機交互、人機接口等,是人與機器之間傳遞、交換信息的媒介.是用戶(hù)使用計算機系統的綜合操作環(huán)境。在商品競爭中,一個(gè)應用系統的成功與否在某種程度上也取決于用戶(hù)使用界面的感受好壞,因此,人機界面的設計在應用系統的設計中有著(zhù)重要的作用。嵌入式系統強調人機界面操作的實(shí)時(shí)性,簡(jiǎn)單化,強調在特定平臺上特定應用的時(shí)間空間效率。在傳統的小系統設計中。程序設計一般采用前后臺工作方式。應用程序是一個(gè)無(wú)限的循環(huán),循環(huán)中調用相應的函數完成相應的操作,時(shí)間相關(guān)性很強的關(guān)鍵操作(crltical operation)是靠中斷服務(wù)來(lái)保證的。因為中斷服務(wù)提供的信息一直要等到后臺程序走到該處理此信息這一步時(shí)才能得到處理.這種系統在處理信息的及時(shí)性上,比實(shí)際可以做到的要差。最壞情況下的任務(wù)級響應時(shí)間取決于整個(gè)循環(huán)的執行時(shí)間。因為循環(huán)的執行時(shí)間不是常數,程序經(jīng)過(guò)某一特定部分的準確時(shí)間也是不能確定的。如果程序修改了,循環(huán)的時(shí)序也會(huì )受到影響.

實(shí)時(shí)操作系統將應用分解成多任務(wù),簡(jiǎn)化了應用系統軟件的設計。良好的多任務(wù)設計,有助于提高系統的穩定性和可靠性,并使系統的實(shí)時(shí)性得到保證。很多實(shí)時(shí)操作系統提供了專(zhuān)用函數,簡(jiǎn)化了程序的測試。

1 系統設計


如圖1所示,人機界面系統采用小鍵盤(pán)操作的文本菜單方式,使用在嵌入式數字視頻錄像DVR(Digital Video Record)系統中。在MSP430F149上移植μC/OS—Ⅱ來(lái)獨立實(shí)現人機界面的功能,用戶(hù)通過(guò)鍵盤(pán)輸入指令,經(jīng)過(guò)單片機處理后發(fā)往主系統,同時(shí)把相應信息通過(guò)專(zhuān)用芯片的OSD(0n Screen Display)功能顯示在監視器上;用戶(hù)根據監視器上的信息進(jìn)行菜單操作,形成人與機器的交互。





把人機界面部分從主系統中獨立出來(lái),用戶(hù)所有輸入的指令由單片機來(lái)處理,減少了主系統的工作量,使整個(gè)系統模塊化,便于開(kāi)發(fā)和調試,提高了可靠性和穩定性.另外,這種人機界面設計具有通用性,便于移植到各種嵌入式系統中。本系統選用MSP430nF149單片機,是基于以下三個(gè)方面的原因:

①OSD功能需要經(jīng)常刷新,并且要處理與主機部分的數據交換,要求單片機的計算速度足夠高,并且要求嵌入式系統能夠長(cháng)時(shí)間正常運轉,且芯片功耗低。
②實(shí)時(shí)操作系統本身要耗費一部分內存,同時(shí)0SD功能要求建立字庫,要求內存空間足夠大,否則要外接閃存,增加設計的復雜度及成本。
③要連接鍵盤(pán)電路,需較多I/O口。
MSP430系列單片機是由TI公司開(kāi)發(fā)的16位單片機。其突出特點(diǎn)是強調超低功耗,適合于各種功率要求低的應用;有較高的處理速度,在8 MHz晶振的驅動(dòng)下,指令周期為125ns;MSP430F149具有60 KB的Flash ROM和2 KB RAM,可滿(mǎn)足系統程序量和數據量大的要求,可以解決因為加載實(shí)時(shí)操作系統而增加的內存需求,具有2個(gè)串行通信接口,其中一個(gè)串口用于跟主系統通信,另一個(gè)可用于控制其他外圍模塊;具有48個(gè)可獨立編程的I/O口,其中有2個(gè)具有中斷功能的8位并行端口,在設計按鍵電路時(shí),可方便地采用中斷方式識別鍵值。

2 軟件設計與實(shí)現

2.1 實(shí)時(shí)操作系統


μC/OS—II是一個(gè)源碼開(kāi)放,擁有搶占式內核,支持多任務(wù)的實(shí)時(shí)操作系統;任務(wù)被分為休眠態(tài)、就緒態(tài)、運行態(tài)、掛起態(tài)和被中斷態(tài)五種狀態(tài),內核根據任務(wù)所處的狀態(tài)對任務(wù)作相應的處理,已經(jīng)準備就緒的高優(yōu)先級任務(wù)可以剝奪正在運行的低優(yōu)先級任務(wù)對CPU的使用權。系統大部分代碼采用C語(yǔ)言編寫(xiě),與硬件相關(guān)的部分很集中,并給出了規范的接口說(shuō)明,移植相當方便,可應用于目前大多數型號的8位、16位、32位CPU。μC/OS—II提供的僅僅是一個(gè)操作系統內核,對硬件系統要求很低,很適合在低端CPU上開(kāi)發(fā)小系統。

將μC/OS—II移植在MSP430F149單片機上,對其進(jìn)行裁減,只保留消息隊列一種任務(wù)間通信方式,利用它的任務(wù)優(yōu)先級搶占機制,使人機界面很好地滿(mǎn)足嵌入式系統對實(shí)時(shí)性和可靠性的要求。下面詳細介紹基于μC/0S—II操作系統的程序設計。

2.2 軟件設計

本系統的軟件部分設計基于E-O模型的思想,劃分事件和目標。以有限狀態(tài)機的方式,在實(shí)時(shí)操作系統μC/OS一Ⅱ中,用狀態(tài)機把目標和事件聯(lián)系起來(lái),實(shí)現OA (Object-Action)行為模式完成人機交互的過(guò)程,使以小鍵盤(pán)操作的文本菜單方式設計更清晰。

2.2.1 事件-目標驅動(dòng)的用戶(hù)界面模型

事件-目標驅動(dòng)的用戶(hù)界面模型,即E-O模型(E-vent-Object Drive User Interface Model),將人機交互活動(dòng)歸結為事件與目標的相互作用.事件是人機交互活動(dòng)中傳遞的信息,目標是交互活動(dòng)的對象;事件引發(fā)交互活動(dòng),目標是交互活動(dòng)的承受者。E-O模型基于的基本行為模式是“目標-動(dòng)作”(OA),以目標為核心,具有面向對象風(fēng)格。

E-O模型由四個(gè)邏輯部件組成:①設備管理模塊(device management module),提供與各種交互設備的接口,實(shí)現設備無(wú)關(guān)特性;②事件管理子系統(event Man-agement subsystem),它讀取輸入設備的輸入信息形成事件并進(jìn)行統一管理,將反饋信息的事件解釋為適當的輸出指令并傳送給輸出設備;③目標管理子系統(object Man-agement subsystem),創(chuàng )建、裝載、保存用戶(hù)界面中各類(lèi)目標,并對目標進(jìn)行管理,④事件-目標管理子系統(event-object management subsystem),主要職責是實(shí)現事件與目標的整合,按適當策略控制事件在各目標結點(diǎn)之間流動(dòng),以形成和維持交互的過(guò)程,是整個(gè)用戶(hù)界面系統的核心。

2.2.2 有限狀態(tài)機的形式化描述

有限狀態(tài)機FSM(Finite State Machine)由狀態(tài)、事件、轉換和活動(dòng)組成。每個(gè)狀態(tài)有1個(gè)狀態(tài)進(jìn)入動(dòng)作(entryaction)和1個(gè)狀態(tài)退出動(dòng)作(exit action),每個(gè)轉換有1個(gè)源狀態(tài)和目標狀態(tài)并且與1個(gè)事件相關(guān)聯(lián)。當在源狀態(tài)時(shí),該事件發(fā)生且觸發(fā)轉換的監護條件為真,則順序執行下列一些動(dòng)作:①源狀態(tài)的退出動(dòng)作;②轉換動(dòng)作;③目標狀態(tài)的進(jìn)入動(dòng)作。

FSM可以形式化表示為1個(gè)五元組:M=(0,I,λ,S,δ,S0)。

其中,S為有限狀態(tài)集;
I為有窮的事件輸入集;
0為有窮的輸出集,
S0為初始狀態(tài)集;
δ:S×I→S,進(jìn)入下一個(gè)狀態(tài)的過(guò)程;
λ:S×I→O,產(chǎn)生輸出的過(guò)程。
T=δUλ。T中的每個(gè)元素又可以表示為1個(gè)五元組,T=(Soure-State,Target-State,Input-Event,Con-straint,Action)。其中“Source-State”和“Target-State”分別表示T的初始狀態(tài)和目標狀態(tài),“Input-Event”表示來(lái)自于I的輸入事件或為空,“Constramt”表示監護條件及輸入事件參數等約束,Action表示轉換執行的動(dòng)作。

用軟件實(shí)現有限狀態(tài)機有兩種方法:表格法和過(guò)程驅動(dòng)法。表格驅動(dòng)法利用一個(gè)二維數組。該數組中的短一行與一個(gè)狀態(tài)相對應,每一列與一個(gè)輸入事件相對應,每一項則與某一狀態(tài)下對事件的處理相對應。表格驅動(dòng)法適用于具有結構規則、操作簡(jiǎn)單的有限狀態(tài)機。

過(guò)程驅動(dòng)法為每一個(gè)狀態(tài)都定義一個(gè)處理過(guò)程,處理過(guò)程實(shí)現在此狀態(tài)時(shí)對事件的響應,包括輸出處理及對當前狀態(tài)值的轉換。這個(gè)過(guò)程可以用case語(yǔ)句區分事件,并采用相應的處理。無(wú)論采用何種方法實(shí)現FSM,當FSM收到一條消息時(shí)必須知道當前的狀態(tài)。為此,對應每一個(gè)狀態(tài)機必須能夠保存當前所處的狀態(tài)。過(guò)程法適用于實(shí)現一個(gè)具有幾種轉換和復雜操作的有限狀態(tài)機。

2.3 程序設計與實(shí)現

基于消息驅動(dòng)的程序設計思想,為了保證系統的實(shí)時(shí)性,在中斷中只負責發(fā)送消息到相應的任務(wù)的消息隊列,由應用級的任務(wù)來(lái)處理,保證各個(gè)處理的時(shí)間是可確定的.主程序在消息循環(huán)中不斷地判斷各個(gè)任務(wù)的狀態(tài),執行進(jìn)入就緒態(tài)的任務(wù)。這就允許采用異步方式處理各種中斷及任務(wù)。

本系統程序中采用了兩組有限狀態(tài)機,運用消息驅動(dòng)的方式來(lái)驅動(dòng)狀態(tài)的變更。一組是通信任務(wù)中以串口接收數據驅動(dòng)為事件對象的有限狀態(tài)機,另一組是以用戶(hù)按鍵和命令碼驅動(dòng)為事件對象的有限狀態(tài)機.在實(shí)時(shí)操作系統μC/OS一Ⅱ下,整個(gè)人機界面分為三個(gè)模塊,即三個(gè)任務(wù)來(lái)實(shí)現,分別是鍵值處理模塊、與主機通信模塊和時(shí)鐘模塊。

(1)鍵值處理模塊

OSTaskCreate(KEYTaskStart,(void*)O,&TaskKey-Stk[],7);

先初始化所有的模塊,然后在循環(huán)中接收并處理鍵盤(pán)的輸入,Key-Process(char KeyValue)根據相應的輸入鍵值和系統所處的狀態(tài),對菜單進(jìn)行相應的操作。

State_Trans(char RxData)根據鍵值輸入事件負責調度系統的狀態(tài),并在相應的狀態(tài)下,根據從主系統收到的信息顯示菜單。

(2)主機通信模塊

OSTaskCreate(UARTTaskskStart,(void *)O,& TaskU-artStk[],6);

通過(guò)消息隊列OSQPend(OS_EVENT*pevent,INTl6U timeout,INT8U*err),接受串口中斷發(fā)來(lái)的消息隊列,對其中的數據進(jìn)行處理。在人機交互的過(guò)程中,需要大量的與主系統的交互,單獨用一個(gè)任務(wù)負責與主系統的通信,實(shí)現串口接收數據驅動(dòng)的有限狀態(tài)機。

(3)時(shí)鐘模塊

OSTaskCreate(TimcTCk,(void*)O,&TimeTickStk[],5);

時(shí)鐘任務(wù),使用單片機的時(shí)鐘中斷,可以設置各個(gè)任務(wù)需要的定時(shí)器,通過(guò)消息隊列發(fā)給需要定時(shí)的任務(wù)。

2.3.1 串口接收數據驅動(dòng)的有限狀態(tài)機

為了保證通信的可靠,系統中采用停止等待協(xié)議。在發(fā)送數據前要對數據打包,接收到數據要先解包,單片機在接收主系統發(fā)過(guò)來(lái)數據包的后需要去掉通信協(xié)議字段,然后對有效數據進(jìn)行正確的處理。為此,定義了一個(gè)Frame-FSM類(lèi)型的數據結構,用來(lái)對接收到的數據進(jìn)行處理。

typedefstruct{
byte State; //當前所處的狀態(tài)
byte SYM_Plas;//轉義字符標志,若為1,表示需對當前
//數據轉義
bytc DatoLenoth;//數據長(cháng)度
byte CheekSum;//校驗和
byte Offset; //偏移地址,對應當前接收到的數據在
。搸械奈恢
byteFrame_Data;//幀內的有效數據
}Frame_FSM;

利用主機發(fā)送過(guò)來(lái)的消息驅動(dòng)有限狀態(tài)機,串口接收數據驅動(dòng)的有限狀態(tài)機包括以下幾種狀態(tài);

①任意狀態(tài)。無(wú)論單片機原來(lái)處于何種狀態(tài),收到字符0xaa,都表明1幀新的數據即將開(kāi)始發(fā)送。此時(shí),如果單片機處于1幀正在接收的狀態(tài)。就會(huì )丟棄原數據重新進(jìn)入收到同步字符狀態(tài)。
②任意狀態(tài)(除了INIT_STATE之外)。無(wú)論單片機原來(lái)處于何種狀態(tài).收到字符0xfc,都表明系統中出現了轉義字符。此時(shí),將轉義字符標志置1,丟棄當前接收的數據后返回;每一次進(jìn)入重建幀處理函數后,系統會(huì )首先判斷轉義字符標志是否為l。若為l,則根據當前字符進(jìn)行轉義(當前字符為0x00,則轉義為Oxaa;當前字符為0x01,則轉義為Oxfc;如果為其他字符則丟棄),然后將轉義字符標志重新清O。
③INIT_STATE,初始狀態(tài)。在這個(gè)狀態(tài)下,將重建幀的偏移地址和校驗和清0,然后等待接收數據。收到起始宇符Oxaa后,將狀態(tài)轉入AA_SYN_STATE;收到其他字符都丟棄不理。
④AA_SYN_STATE,收到同步字符狀態(tài)。在這個(gè)狀態(tài)下,MCU將重建幀的偏移地址和校驗和清0,然后將狀態(tài)置為接收源地址狀態(tài)。
⑤SRC_ADDR_STATE,收到源地址狀態(tài)。此時(shí)比較源地址是否是主機地址。若是,則轉接收目的地址狀態(tài);否則,轉初始狀態(tài)。
⑥DEST_ADDR_STATE,收到目的地址狀態(tài)。此時(shí)比較目的地址是否是MCU地址。若是,則轉接收數據長(cháng)度狀態(tài);否則,轉初始狀態(tài);
⑦DATA_LEN_STATE,接收數據長(cháng)度狀態(tài)。將數據長(cháng)度備份,轉入接收數據狀態(tài)。
⑧DATA_STATE,接收正常數據狀態(tài)。將接收的數據存入接收數組REBUF中,每接收到一個(gè)數據就將對應的偏移地址加l,接收數據長(cháng)度減1,并且計算此時(shí)的校驗和。當數據長(cháng)度減為0時(shí),表明l幀數據已經(jīng)全部接收完畢,轉入檢驗校驗和狀態(tài)。

⑨CHECKSUM_STATE,接收校驗和狀態(tài)。將接收的校驗和與本地計算的校驗和進(jìn)行比較。如果兩者相等,將狀態(tài)轉為INIT_STATE,然后對正確的數據幀進(jìn)行處理,并給主系統發(fā)送一個(gè)確認幀;如果兩者不等,丟棄該幀,狀態(tài)轉入INIT_STATE,等待接收新的數據幀。
對應的狀態(tài)轉換圖(state transition diagram)如圖2所示。





2.3.2 鍵值和命令碼驅動(dòng)的有限狀態(tài)機

這組有限狀態(tài)機主要依靠用戶(hù)對菜單的操作進(jìn)行狀態(tài)轉換,即把鍵值和命令碼作為FSM的激勵源,其中鍵盤(pán)消息是最主要的激勵源。應用層的FSM具有多種主狀態(tài),用戶(hù)未按鍵或者是沒(méi)有接收到新的數據幀時(shí),狀態(tài)處于IDLE_STATE;接收到消息后,轉入對應的主狀態(tài)。然后,根據按鍵的不同或者是接收命令碼的不同,轉入對應的子狀態(tài)進(jìn)行處理。任務(wù)處理完畢,再將狀態(tài)置為IDLE_STATE,按取消鍵,可回到上一級狀態(tài)。

以用戶(hù)控制云臺上下左右轉動(dòng)為例,系統開(kāi)始處于IDLE_STATE。若用戶(hù)按云臺鏡頭控制鍵,則進(jìn)入云臺鏡頭選擇狀態(tài),并顯示云臺鏡頭控制菜單.選擇云臺控制選項后,進(jìn)入云臺方向設置狀態(tài);選擇向上鍵,轉入向上狀態(tài)。在該狀態(tài)執行向上命令操作后,狀態(tài)重新轉入IDLE_STATE,并伴隨著(zhù)輸出菜單的相應變化,按取消鍵可回到上一級云境選擇狀態(tài)。對于其他按鍵,系統全部過(guò)濾掉不作響應,狀態(tài)也不進(jìn)行轉換。云臺控制的狀態(tài)轉換圖如圖3所示。





3 測 試

μC/OS—IIV2.52較以前的版本,增加了兩個(gè)系統任務(wù)一一CPU負荷監測任務(wù)與堆棧容量檢查任務(wù)。這兩個(gè)任務(wù)給程序的調試帶來(lái)很大的方便。

將系統配置常數OS_TASK_STAT_EN設為l,統計任務(wù)OSTaskStat()就會(huì )建立。它每秒鐘運行1次,計算出當前CPU的利用率,放在一個(gè)有符號的8位整數0SCPUUsage中,精確度是l%。

μC/OS-Ⅱ內存是固定分配的,通過(guò)0STaskStkChk()可確定每個(gè)任務(wù)實(shí)際需要的最大堆?臻g,根據測得結果合理地分配內存空間。表l是用以上函數測出的系統參數。





與MSP430單片機系統相應的調試工具Embedded Workbench,可跟蹤程序的運行。通過(guò)運行在PC機上Embedded Workberlch能夠追蹤程序中各種參數的變化,查看單片機內存的使用情況。

結 語(yǔ)

本系統使用μC/OS-II后,系統的總體性能有了很大提高。使用實(shí)時(shí)操作系統前。運用前后臺的程序設計方式。在需要顯示較多數據在屏幕上,同時(shí)又需要接收數據時(shí),單片機處理不及時(shí),可以通過(guò)調試工具WorkbenCh看到接收緩存接收的數據幀不完整,而不能正確地在屏幕上顯示數據。移植操作系統之后,工作可靠,同時(shí)系統的反應速度,即實(shí)時(shí)性有了很大提高。文中介紹的人機界面與嵌入式主系統是獨立的模塊,可以靈活地在單片機上加載控制模塊,適合應用于各種嵌入式系統中。
本文地址:http://selenalain.com/thread-39322-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页