亚洲国产成人,色呦呦内射午夜,无码一级片,无码人妻少妇色欲AV一区二区

<samp id="jg8hh"></samp>

<p id="jg8hh"></p><delect id="jg8hh"><em id="jg8hh"><blockquote id="jg8hh"></blockquote></em></delect><acronym id="jg8hh"><dd id="jg8hh"></dd></acronym><button id="jg8hh"><dd id="jg8hh"><acronym id="jg8hh"></acronym></dd></button><samp id="jg8hh"><em id="jg8hh"><blockquote id="jg8hh"></blockquote></em></samp>

<p id="jg8hh"></p>

<samp id="jg8hh"><legend id="jg8hh"></legend></samp>
<samp id="jg8hh"><legend id="jg8hh"><samp id="jg8hh"></samp></legend></samp>

<samp id="jg8hh"></samp>

<p id="jg8hh"></p><acronym id="jg8hh"></acronym><p id="jg8hh"><dd id="jg8hh"><acronym id="jg8hh"></acronym></dd></p><p id="jg8hh"></p>

<p id="jg8hh"></p><delect id="jg8hh"><legend id="jg8hh"><var id="jg8hh"></var></legend></delect><button id="jg8hh"><listing id="jg8hh"><i id="jg8hh"></i></listing></button>
<delect id="jg8hh"><legend id="jg8hh"><var id="jg8hh"></var></legend></delect>

目標(biāo)驅(qū)動的人機(jī)界面設(shè)計

發(fā)布時間:2024-04-14
人機(jī)界面(human-computerinterface),又稱用戶界面、人機(jī)交互、人機(jī)接口等,是人與機(jī)器之間傳遞、交換信息的媒介.是用戶使用計算機(jī)系統(tǒng)的綜合操作環(huán)境。在商品競爭中,一個應(yīng)用系統(tǒng)的成功與否在某種程度上也取決于用戶使用界面的感受好壞,因此,人機(jī)界面的設(shè)計在應(yīng)用系統(tǒng)的設(shè)計中有著重要的作用。嵌入式系統(tǒng)強(qiáng)調(diào)人機(jī)界面操作的實時性,簡單化,強(qiáng)調(diào)在特定平臺上特定應(yīng)用的時間空間效率。在傳統(tǒng)的小系統(tǒng)設(shè)計中。程序設(shè)計一般采用前后臺工作方式。應(yīng)用程序是一個無限的循環(huán),循環(huán)中調(diào)用相應(yīng)的函數(shù)完成相應(yīng)的操作,時間相關(guān)性很強(qiáng)的關(guān)鍵操作(crlticaloperation)是靠中斷服務(wù)來保證的。因為中斷服務(wù)提供的信息一直要等到后臺程序走到該處理此信息這一步時才能得到處理.這種系統(tǒng)在處理信息的及時性上,比實際可以做到的要差。最壞情況下的任務(wù)級響應(yīng)時間取決于整個循環(huán)的執(zhí)行時間。因為循環(huán)的執(zhí)行時間不是常數(shù),程序經(jīng)過某一特定部分的準(zhǔn)確時間也是不能確定的。如果程序修改了,循環(huán)的時序也會受到影響.
實時操作系統(tǒng)將應(yīng)用分解成多任務(wù),簡化了應(yīng)用系統(tǒng)軟件的設(shè)計。良好的多任務(wù)設(shè)計,有助于提高系統(tǒng)的穩(wěn)定性和可靠性,并使系統(tǒng)的實時性得到保證。很多實時操作系統(tǒng)提供了專用函數(shù),簡化了程序的測試。
1、系統(tǒng)設(shè)計
如圖l所示,人機(jī)界面系統(tǒng)采用小鍵盤操作的文本菜單方式,使用在嵌入式數(shù)字視頻錄像dvr(digitalvideorecord)系統(tǒng)中。在msp430f149上移植μc/os—ⅱ來獨(dú)立實現(xiàn)人機(jī)界面的功能,用戶通過鍵盤輸入指令,經(jīng)過單片機(jī)處理后發(fā)往主系統(tǒng),同時把相應(yīng)信息通過專用芯片的osd(0nscreendisplay)功能顯示在監(jiān)視器上;用戶根據(jù)監(jiān)視器上的信息進(jìn)行菜單操作,形成人與機(jī)器的交互。
把人機(jī)界面部分從主系統(tǒng)中獨(dú)立出來,用戶所有輸入的指令由單片機(jī)來處理,減少了主系統(tǒng)的工作量,使整個系統(tǒng)模塊化,便于開發(fā)和調(diào)試,提高了可靠性和穩(wěn)定性.另外,這種人機(jī)界面設(shè)計具有通用性,便于移植到各種嵌入式系統(tǒng)中。本系統(tǒng)選用msp430nf149單片機(jī),是基于以下三個方面的原因:
①osd功能需要經(jīng)常刷新,并且要處理與主機(jī)部分的數(shù)據(jù)交換,要求單片機(jī)的計算速度足夠高,并且要求嵌入式系統(tǒng)能夠長時間正常運(yùn)轉(zhuǎn),且芯片功耗低。
②實時操作系統(tǒng)本身要耗費(fèi)一部分內(nèi)存,同時0sd功能要求建立字庫,要求內(nèi)存空間足夠大,否則要外接閃存,增加設(shè)計的復(fù)雜度及成本。
③要連接鍵盤電路,需較多i/o口。
msp430系列單片機(jī)是由ti公司開發(fā)的16位單片機(jī)。其突出特點是強(qiáng)調(diào)超低功耗,適合于各種功率要求低的應(yīng)用;有較高的處理速度,在8mhz晶振的驅(qū)動下,指令周期為125ns;msp430f149具有60kb的flashrom和2kbram,可滿足系統(tǒng)程序量和數(shù)據(jù)量大的要求,可以解決因為加載實時操作系統(tǒng)而增加的內(nèi)存需求,具有2個串行通信接口,其中一個串口用于跟主系統(tǒng)通信,另一個可用于控制其他外圍模塊;具有48個可獨(dú)立編程的i/o口,其中有2個具有中斷功能的8位并行端口,在設(shè)計按鍵電路時,可方便地采用中斷方式識別鍵值。
2、軟件設(shè)計與實現(xiàn)
2.1實時操作系統(tǒng)
μc/os—ii是一個源碼開放,擁有搶占式內(nèi)核,支持多任務(wù)的實時操作系統(tǒng);任務(wù)被分為休眠態(tài)、就緒態(tài)、運(yùn)行態(tài)、掛起態(tài)和被中斷態(tài)五種狀態(tài),內(nèi)核根據(jù)任務(wù)所處的狀態(tài)對任務(wù)作相應(yīng)的處理,已經(jīng)準(zhǔn)備就緒的高優(yōu)先級任務(wù)可以剝奪正在運(yùn)行的低優(yōu)先級任務(wù)對cpu的使用權(quán)。系統(tǒng)大部分代碼采用c語言編寫,與硬件相關(guān)的部分很集中,并給出了規(guī)范的接口說明,移植相當(dāng)方便,可應(yīng)用于目前大多數(shù)型號的8位、16位、32位cpu。μc/os—ii提供的僅僅是一個操作系統(tǒng)內(nèi)核,對硬件系統(tǒng)要求很低,很適合在低端cpu上開發(fā)小系統(tǒng)。
將μc/os—ii移植在msp430f149單片機(jī)上,對其進(jìn)行裁減,只保留消息隊列一種任務(wù)間通信方式,利用它的任務(wù)優(yōu)先級搶占機(jī)制,使人機(jī)界面很好地滿足嵌入式系統(tǒng)對實時性和可靠性的要求。下面詳細(xì)介紹基于μc/0s—ii操作系統(tǒng)的程序設(shè)計。
2.2軟件設(shè)計
本系統(tǒng)的軟件部分設(shè)計基于e-o模型的思想,劃分事件和目標(biāo)。以有限狀態(tài)機(jī)的方式,在實時操作系統(tǒng)μc/os一ⅱ中,用狀態(tài)機(jī)把目標(biāo)和事件聯(lián)系起來,實現(xiàn)oa(object-action)行為模式完成人機(jī)交互的過程,使以小鍵盤操作的文本菜單方式設(shè)計更清晰。
2.2.1事件-目標(biāo)驅(qū)動的用戶界面模型
事件-目標(biāo)驅(qū)動的用戶界面模型,即e-o模型(e-vent-objectdriveuserinterfacemodel),將人機(jī)交互活動歸結(jié)為事件與目標(biāo)的相互作用.事件是人機(jī)交互活動中傳遞的信息,目標(biāo)是交互活動的對象;事件引發(fā)交互活動,目標(biāo)是交互活動的承受者。e-o模型基于的基本行為模式是“目標(biāo)-動作”(oa),以目標(biāo)為核心,具有面向?qū)ο箫L(fēng)格。
e-o模型由四個邏輯部件組成:①設(shè)備管理模塊(devicemanagementmodule),提供與各種交互設(shè)備的接口,實現(xiàn)設(shè)備無關(guān)特性;②事件管理子系統(tǒng)(eventman-agementsubsystem),它讀取輸入設(shè)備的輸入信息形成事件并進(jìn)行統(tǒng)一管理,將反饋信息的事件解釋為適當(dāng)?shù)妮敵鲋噶畈魉徒o輸出設(shè)備;③目標(biāo)管理子系統(tǒng)(objectman-agementsubsystem),創(chuàng)建、裝載、保存用戶界面中各類目標(biāo),并對目標(biāo)進(jìn)行管理,④事件-目標(biāo)管理子系統(tǒng)(event-objectmanagementsubsystem),主要職責(zé)是實現(xiàn)事件與目標(biāo)的整合,按適當(dāng)策略控制事件在各目標(biāo)結(jié)點之間流動,以形成和維持交互的過程,是整個用戶界面系統(tǒng)的核心。
2.2.2有限狀態(tài)機(jī)的形式化描述
有限狀態(tài)機(jī)fsm(finitestatemachine)由狀態(tài)、事件、轉(zhuǎn)換和活動組成。每個狀態(tài)有1個狀態(tài)進(jìn)入動作(entryaction)和1個狀態(tài)退出動作(exitaction),每個轉(zhuǎn)換有1個源狀態(tài)和目標(biāo)狀態(tài)并且與1個事件相關(guān)聯(lián)。當(dāng)在源狀態(tài)時,該事件發(fā)生且觸發(fā)轉(zhuǎn)換的監(jiān)護(hù)條件為真,則順序執(zhí)行下列一些動作:①源狀態(tài)的退出動作;②轉(zhuǎn)換動作;③目標(biāo)狀態(tài)的進(jìn)入動作。
fsm可以形式化表示為1個五元組:m=(0,i,λ,s,δ,s0)。
其中,s為有限狀態(tài)集;
i為有窮的事件輸入集;
0為有窮的輸出集,
s0為初始狀態(tài)集;
δ:s×i→s,進(jìn)入下一個狀態(tài)的過程;
λ:s×i→o,產(chǎn)生輸出的過程。
t=δuλ。t中的每個元素又可以表示為1個五元組,t=(soure-state,target-state,input-event,con-straint,action)。其中“source-state”和“target-state”分別表示t的初始狀態(tài)和目標(biāo)狀態(tài),“input-event”表示來自于i的輸入事件或為空,“constramt”表示監(jiān)護(hù)條件及輸入事件參數(shù)等約束,action表示轉(zhuǎn)換執(zhí)行的動作。
用軟件實現(xiàn)有限狀態(tài)機(jī)有兩種方法:表格法和過程驅(qū)動法。表格驅(qū)動法利用一個二維數(shù)組。該數(shù)組中的短一行與一個狀態(tài)相對應(yīng),每一列與一個輸入事件相對應(yīng),每一項則與某一狀態(tài)下對事件的處理相對應(yīng)。表格驅(qū)動法適用于具有結(jié)構(gòu)規(guī)則、操作簡單的有限狀態(tài)機(jī)。
過程驅(qū)動法為每一個狀態(tài)都定義一個處理過程,處理過程實現(xiàn)在此狀態(tài)時對事件的響應(yīng),包括輸出處理及對當(dāng)前狀態(tài)值的轉(zhuǎn)換。這個過程可以用case語句區(qū)分事件,并采用相應(yīng)的處理。無論采用何種方法實現(xiàn)fsm,當(dāng)fsm收到一條消息時必須知道當(dāng)前的狀態(tài)。為此,對應(yīng)每一個狀態(tài)機(jī)必須能夠保存當(dāng)前所處的狀態(tài)。過程法適用于實現(xiàn)一個具有幾種轉(zhuǎn)換和復(fù)雜操作的有限狀態(tài)機(jī)。
2.3程序設(shè)計與實現(xiàn)
基于消息驅(qū)動的程序設(shè)計思想,為了保證系統(tǒng)的實時性,在中斷中只負(fù)責(zé)發(fā)送消息到相應(yīng)的任務(wù)的消息隊列,由應(yīng)用級的任務(wù)來處理,保證各個處理的時間是可確定的.主程序在消息循環(huán)中不斷地判斷各個任務(wù)的狀態(tài),執(zhí)行進(jìn)入就緒態(tài)的任務(wù)。這就允許采用異步方式處理各種中斷及任務(wù)。
本系統(tǒng)程序中采用了兩組有限狀態(tài)機(jī),運(yùn)用消息驅(qū)動的方式來驅(qū)動狀態(tài)的變更。一組是通信任務(wù)中以串口接收數(shù)據(jù)驅(qū)動為事件對象的有限狀態(tài)機(jī),另一組是以用戶按鍵和命令碼驅(qū)動為事件對象的有限狀態(tài)機(jī).在實時操作系統(tǒng)μc/os一ⅱ下,整個人機(jī)界面分為三個模塊,即三個任務(wù)來實現(xiàn),分別是鍵值處理模塊、與主機(jī)通信模塊和時鐘模塊。
(1)鍵值處理模塊
ostaskcreate(keytaskstart,(void*)o,&taskkey-stk[],7);
先初始化所有的模塊,然后在循環(huán)中接收并處理鍵盤的輸入,key-process(charkeyvalue)根據(jù)相應(yīng)的輸入鍵值和系統(tǒng)所處的狀態(tài),對菜單進(jìn)行相應(yīng)的操作。
state_trans(charrxdata)根據(jù)鍵值輸入事件負(fù)責(zé)調(diào)度系統(tǒng)的狀態(tài),并在相應(yīng)的狀態(tài)下,根據(jù)從主系統(tǒng)收到的信息顯示菜單。
(2)主機(jī)通信模塊
ostaskcreate(uarttaskskstart,(void*)o,&tasku-artstk[],6);
通過消息隊列osqpend(os_event*pevent,intl6utimeout,int8u*err),接受串口中斷發(fā)來的消息隊列,對其中的數(shù)據(jù)進(jìn)行處理。在人機(jī)交互的過程中,需要大量的與主系統(tǒng)的交互,單獨(dú)用一個任務(wù)負(fù)責(zé)與主系統(tǒng)的通信,實現(xiàn)串口接收數(shù)據(jù)驅(qū)動的有限狀態(tài)機(jī)。
(3)時鐘模塊
ostaskcreate(timctck,(void*)o,&timetickstk[],5);
時鐘任務(wù),使用單片機(jī)的時鐘中斷,可以設(shè)置各個任務(wù)需要的定時器,通過消息隊列發(fā)給需要定時的任務(wù)。
2.3.1串口接收數(shù)據(jù)驅(qū)動的有限狀態(tài)機(jī)
為了保證通信的可靠,系統(tǒng)中采用停止等待協(xié)議。在發(fā)送數(shù)據(jù)前要對數(shù)據(jù)打包,接收到數(shù)據(jù)要先解包,單片機(jī)在接收主系統(tǒng)發(fā)過來數(shù)據(jù)包的后需要去掉通信協(xié)議字段,然后對有效數(shù)據(jù)進(jìn)行正確的處理。為此,定義了一個frame-fsm類型的數(shù)據(jù)結(jié)構(gòu),用來對接收到的數(shù)據(jù)進(jìn)行處理。
typedefstruct{
bytestate;//當(dāng)前所處的狀態(tài)
bytesym_plas;//轉(zhuǎn)義字符標(biāo)志,若為1,表示需對當(dāng)前
//數(shù)據(jù)轉(zhuǎn)義
bytcdatolenoth;//數(shù)據(jù)長度
bytecheeksum;//校驗和
byteoffset;//偏移地址,對應(yīng)當(dāng)前接收到的數(shù)據(jù)在
//該幀中的位置
byteframe_data;//幀內(nèi)的有效數(shù)據(jù)
}frame_fsm;
利用主機(jī)發(fā)送過來的消息驅(qū)動有限狀態(tài)機(jī),串口接收數(shù)據(jù)驅(qū)動的有限狀態(tài)機(jī)包括以下幾種狀態(tài);
①任意狀態(tài)。無論單片機(jī)原來處于何種狀態(tài),收到字符0xaa,都表明1幀新的數(shù)據(jù)即將開始發(fā)送。此時,如果單片機(jī)處于1幀正在接收的狀態(tài)。就會丟棄原數(shù)據(jù)重新進(jìn)入收到同步字符狀態(tài)。
②任意狀態(tài)(除了init_state之外)。無論單片機(jī)原來處于何種狀態(tài).收到字符0xfc,都表明系統(tǒng)中出現(xiàn)了轉(zhuǎn)義字符。此時,將轉(zhuǎn)義字符標(biāo)志置1,丟棄當(dāng)前接收的數(shù)據(jù)后返回;每一次進(jìn)入重建幀處理函數(shù)后,系統(tǒng)會首先判斷轉(zhuǎn)義字符標(biāo)志是否為l。若為l,則根據(jù)當(dāng)前字符進(jìn)行轉(zhuǎn)義(當(dāng)前字符為0x00,則轉(zhuǎn)義為oxaa;當(dāng)前字符為0x01,則轉(zhuǎn)義為oxfc;如果為其他字符則丟棄),然后將轉(zhuǎn)義字符標(biāo)志重新清o。
③init_state,初始狀態(tài)。在這個狀態(tài)下,將重建幀的偏移地址和校驗和清0,然后等待接收數(shù)據(jù)。收到起始宇符oxaa后,將狀態(tài)轉(zhuǎn)入aa_syn_state;收到其他字符都丟棄不理。
④aa_syn_state,收到同步字符狀態(tài)。在這個狀態(tài)下,mcu將重建幀的偏移地址和校驗和清0,然后將狀態(tài)置為接收源地址狀態(tài)。
⑤src_addr_state,收到源地址狀態(tài)。此時比較源地址是否是主機(jī)地址。若是,則轉(zhuǎn)接收目的地址狀態(tài);否則,轉(zhuǎn)初始狀態(tài)。
⑥dest_addr_state,收到目的地址狀態(tài)。此時比較目的地址是否是mcu地址。若是,則轉(zhuǎn)接收數(shù)據(jù)長度狀態(tài);否則,轉(zhuǎn)初始狀態(tài);
⑦data_len_state,接收數(shù)據(jù)長度狀態(tài)。將數(shù)據(jù)長度備份,轉(zhuǎn)入接收數(shù)據(jù)狀態(tài)。
⑧data_state,接收正常數(shù)據(jù)狀態(tài)。將接收的數(shù)據(jù)存入接收數(shù)組rebuf中,每接收到一個數(shù)據(jù)就將對應(yīng)的偏移地址加l,接收數(shù)據(jù)長度減1,并且計算此時的校驗和。當(dāng)數(shù)據(jù)長度減為0時,表明l幀數(shù)據(jù)已經(jīng)全部接收完畢,轉(zhuǎn)入檢驗校驗和狀態(tài)。
⑨checksum_state,接收校驗和狀態(tài)。將接收的校驗和與本地計算的校驗和進(jìn)行比較。如果兩者相等,將狀態(tài)轉(zhuǎn)為init_state,然后對正確的數(shù)據(jù)幀進(jìn)行處理,并給主系統(tǒng)發(fā)送一個確認(rèn)幀;如果兩者不等,丟棄該幀,狀態(tài)轉(zhuǎn)入init_state,等待接收新的數(shù)據(jù)幀。
對應(yīng)的狀態(tài)轉(zhuǎn)換圖(statetransitiondiagram)如圖2所示。
2.3.2鍵值和命令碼驅(qū)動的有限狀態(tài)機(jī)
這組有限狀態(tài)機(jī)主要依靠用戶對菜單的操作進(jìn)行狀態(tài)轉(zhuǎn)換,即把鍵值和命令碼作為fsm的激勵源,其中鍵盤消息是最主要的激勵源。應(yīng)用層的fsm具有多種主狀態(tài),用戶未按鍵或者是沒有接收到新的數(shù)據(jù)幀時,狀態(tài)處于idle_state;接收到消息后,轉(zhuǎn)入對應(yīng)的主狀態(tài)。然后,根據(jù)按鍵的不同或者是接收命令碼的不同,轉(zhuǎn)入對應(yīng)的子狀態(tài)進(jìn)行處理。任務(wù)處理完畢,再將狀態(tài)置為idle_state,按取消鍵,可回到上一級狀態(tài)。
以用戶控制云臺上下左右轉(zhuǎn)動為例,系統(tǒng)開始處于idle_state。若用戶按云臺鏡頭控制鍵,則進(jìn)入云臺鏡頭選擇狀態(tài),并顯示云臺鏡頭控制菜單.選擇云臺控制選項后,進(jìn)入云臺方向設(shè)置狀態(tài);選擇向上鍵,轉(zhuǎn)入向上狀態(tài)。在該狀態(tài)執(zhí)行向上命令操作后,狀態(tài)重新轉(zhuǎn)入idle_state,并伴隨著輸出菜單的相應(yīng)變化,按取消鍵可回到上一級云境選擇狀態(tài)。對于其他按鍵,系統(tǒng)全部過濾掉不作響應(yīng),狀態(tài)也不進(jìn)行轉(zhuǎn)換。云臺控制的狀態(tài)轉(zhuǎn)換圖如圖3所示。
3、測試
μc/os—iiv2.52較以前的版本,增加了兩個系統(tǒng)任務(wù)一一cpu負(fù)荷監(jiān)測任務(wù)與堆棧容量檢查任務(wù)。這兩個任務(wù)給程序的調(diào)試帶來很大的方便。
將系統(tǒng)配置常數(shù)os_task_stat_en設(shè)為l,統(tǒng)計任務(wù)ostaskstat()就會建立。它每秒鐘運(yùn)行1次,計算出當(dāng)前cpu的利用率,放在一個有符號的8位整數(shù)0scpuusage中,精確度是l%。
μc/os-ⅱ內(nèi)存是固定分配的,通過0staskstkchk()可確定每個任務(wù)實際需要的最大堆棧空間,根據(jù)測得結(jié)果合理地分配內(nèi)存空間。表l是用以上函數(shù)測出的系統(tǒng)參數(shù)。
與msp430單片機(jī)系統(tǒng)相應(yīng)的調(diào)試工具embeddedworkbench,可跟蹤程序的運(yùn)行。通過運(yùn)行在pc機(jī)上embeddedworkberlch能夠追蹤程序中各種參數(shù)的變化,查看單片機(jī)內(nèi)存的使用情況。
結(jié)語
本系統(tǒng)使用μc/os—ii后,系統(tǒng)的總體性能有了很大提高。使用實時操作系統(tǒng)前。運(yùn)用前后臺的程序設(shè)計方式。在需要顯示較多數(shù)據(jù)在屏幕上,同時又需要接收數(shù)據(jù)時,單片機(jī)處理不及時,可以通過調(diào)試工具workbench看到接收緩存接收的數(shù)據(jù)幀不完整,而不能正確地在屏幕上顯示數(shù)據(jù)。移植操作系統(tǒng)之后,工作可靠,同時系統(tǒng)的反應(yīng)速度,即實時性有了很大提高。文中介紹的人機(jī)界面與嵌入式主系統(tǒng)是獨(dú)立的模塊,可以靈活地在單片機(jī)上加載控制模塊,適合應(yīng)用于各種嵌入式系統(tǒng)中。
上一個:安置房改造發(fā)生產(chǎn)權(quán)糾紛怎么辦
下一個:貢菊主要病害識別及綜合防治技術(shù)

《工業(yè)機(jī)器人 安全要求應(yīng)用規(guī)范》征求意見
ht1621b中文資料,中文資料,數(shù)據(jù)手冊
在選擇泵時應(yīng)該考慮哪些因素?
opopr9s怎么差GPU,oppor9s質(zhì)量不好
450L-E4HL1200YD安全光幕維修保養(yǎng)
工地400克加厚防雨布*
MAIER旋轉(zhuǎn)接頭
電腦控制橡膠門尼粘度儀用途和主要技術(shù)參數(shù)
鞋廠廢氣如何治理
4g網(wǎng)速慢怎么調(diào)設(shè)置移動(4g網(wǎng)速太慢了,怎樣讓它變快)