一種HCI自適應(yīng)的解決辦法
摘要: 在嵌入式系統(tǒng)工程開(kāi)發(fā)及現(xiàn)場(chǎng)施工實(shí)踐中,為了解決由于嵌入式系統(tǒng)資源退化引起的人機(jī)交互復(fù)雜性和不確定性問(wèn)題,從可適應(yīng)性角度討論,分析了嵌入式系統(tǒng)中人機(jī)交互界面(HCI)的可適應(yīng)性需求,應(yīng)該針對(duì)資源退化提供一種HCI自適應(yīng)的解決辦法,故對(duì)于嵌入式設(shè)備交互特點(diǎn)進(jìn)行了研究,詳細(xì)描述了嵌入式設(shè)備的HCI模型和內(nèi)存結(jié)構(gòu)的建立,并給出具有實(shí)踐意義的HCI可適應(yīng)性策略,最后以一個(gè)工程實(shí)例進(jìn)行了驗(yàn)證。從實(shí)例可知,為嵌入式系統(tǒng)的項(xiàng)目開(kāi)發(fā)提供了一種可行性解決方案。
本文引用地址:http://cafeforensic.com/article/150931.htm嵌入式系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,適用于應(yīng)用系統(tǒng)對(duì)功能,對(duì)可靠性、成本、體積、功耗有嚴(yán)格要求的專(zhuān)用計(jì)算機(jī)系統(tǒng),其工程實(shí)踐正逐漸地引起研究人員的關(guān)注,在實(shí)際工程中有諸多因素需要考慮,比如微處理器的功耗,器件的可靠性,設(shè)備的抗惡劣環(huán)境能力,人機(jī)交互界面(HCI),現(xiàn)場(chǎng)通信等等問(wèn)題。HCI是嵌入式系統(tǒng)工程中的一個(gè)重要課題。由于某些嵌入式系統(tǒng)研發(fā)的復(fù)雜性和工程實(shí)施中的不確定性,導(dǎo)致嵌入式系統(tǒng)HCI有僵化的趨勢(shì),對(duì)此提出一種可適應(yīng)性的解決思路是必要的。
1 嵌入式工程的HCI
圖形用戶(hù)界面是當(dāng)前用戶(hù)界面的主流。HCI是決定嵌入式計(jì)算機(jī)系統(tǒng)是否友好的一個(gè)重要因素。嵌入式系統(tǒng)人機(jī)交互功能主要靠輸入輸出的設(shè)備與相應(yīng)的軟件協(xié)同來(lái)實(shí)現(xiàn)。可供人機(jī)交互使用的設(shè)備主要有鍵盤(pán)、顯示以及各種模式識(shí)別設(shè)備等。嵌入式系統(tǒng)的人機(jī)交互因其特殊性而與PC有所區(qū)別,多數(shù)的嵌入式系統(tǒng)都是顯示屏幕與鍵盤(pán),或者帶觸摸屏定位的設(shè)備組成。對(duì)用戶(hù)而言,需要用按鍵或觸摸屏的動(dòng)作告知系統(tǒng)如何按照人的意圖去輸出,絕大多數(shù)嵌入式系統(tǒng)都有個(gè)HCI系統(tǒng)供用戶(hù)使用。問(wèn)題是在工程中交互設(shè)計(jì)時(shí),設(shè)計(jì)者往往會(huì)把交互界面和系統(tǒng)的資源聯(lián)系起來(lái),使得界面的設(shè)計(jì)不獨(dú)立于系統(tǒng)資源。軟件設(shè)計(jì)勢(shì)必在很大程度上受限于硬件資源。實(shí)踐中,通常的做法是根據(jù)現(xiàn)有的硬件條件臨時(shí)組織一個(gè)數(shù)據(jù)結(jié)構(gòu),把一系列字符串值“串”起來(lái),之間可以實(shí)現(xiàn)相互跳轉(zhuǎn)。一個(gè)交互節(jié)點(diǎn)的快照描述一般需要幾部分組成:1)狀態(tài)枚舉量;2)顯示常量狀態(tài)值;3)前趨狀態(tài);4)后繼狀態(tài)。還可能需要包含節(jié)點(diǎn)Id標(biāo)識(shí)等其他的輔助信息。顯然,這是用一種靜態(tài)的方法來(lái)生成一個(gè)菜單對(duì)象,代碼易讀性強(qiáng),但各個(gè)部分相互依賴(lài),編碼和調(diào)試比較繁瑣,需要設(shè)計(jì)者對(duì)各部分都十分清楚。最大的問(wèn)題是可擴(kuò)展性受限,對(duì)后續(xù)規(guī)模的增加造成一定的影響。工程實(shí)踐中,用戶(hù)的需求及隱含需求往往是復(fù)雜和不確定的。
本文的研究目的是建立一套能夠適應(yīng)應(yīng)用復(fù)雜性和不確定性的實(shí)現(xiàn)方案,為后續(xù)嵌入式系統(tǒng)開(kāi)發(fā)提供一個(gè)工程性的解決思路。
2 可適應(yīng)的嵌入式HCI
可適應(yīng)的HCI是指可根據(jù)系統(tǒng)的計(jì)算環(huán)境或應(yīng)用情境進(jìn)行伴隨調(diào)節(jié)的界面??梢赃M(jìn)一步區(qū)分為被動(dòng)性適應(yīng)和主動(dòng)性適應(yīng)(或自適應(yīng))。
可適應(yīng)性HCI在嵌入式系統(tǒng)開(kāi)發(fā)中有著越來(lái)越迫切的要求。通常該需求來(lái)源于2個(gè)方面,一個(gè)是用戶(hù)需求的變更;另一個(gè)是系統(tǒng)執(zhí)行中的應(yīng)用環(huán)境變化。由這2種因素出發(fā),依據(jù)可適應(yīng)性的行為模式,嵌入式HCI的可適應(yīng)性從以下2個(gè)方面展開(kāi)研究:
所謂靜態(tài)可適應(yīng)性是指與系統(tǒng)靜態(tài)配置相關(guān)的可適應(yīng)性,通常適應(yīng)行為發(fā)生在2次系統(tǒng)啟動(dòng)之間。這種適應(yīng)的需求通常是外來(lái)的,比如用戶(hù)需求的修改,設(shè)計(jì)方案的變化。在工程中,常常出現(xiàn)迭代式的適應(yīng)性修改,所以靜態(tài)可適應(yīng)性也是一個(gè)很有現(xiàn)實(shí)意義的需求。這種可適應(yīng)性的實(shí)現(xiàn)必須借助非易失性存儲(chǔ)器來(lái)進(jìn)行,用來(lái)存儲(chǔ)變化后的定義及配置參數(shù),使得順利完成適應(yīng)行為。
動(dòng)態(tài)可適應(yīng)性是指在系統(tǒng)運(yùn)行過(guò)程中,可以依據(jù)環(huán)境的變化進(jìn)行在線(xiàn)自適應(yīng)修改,即普適環(huán)境下的修改。通常普適設(shè)備在使用環(huán)境中遷移,引起了環(huán)境參數(shù)的強(qiáng)制性變化,系統(tǒng)的HCI與環(huán)境就會(huì)產(chǎn)生矛盾,因此普適策略下的自適應(yīng)調(diào)整是很有必要的。依據(jù)收集到的系統(tǒng)狀態(tài)信息,判斷是否HCI與系統(tǒng)配置同步,依靠算法實(shí)時(shí)糾正系統(tǒng)配置來(lái)實(shí)現(xiàn)自適應(yīng)。普適環(huán)境下的自適應(yīng)特點(diǎn)在于動(dòng)態(tài)性,只有在出現(xiàn)矛盾的時(shí)候才做普適調(diào)整,在設(shè)計(jì)中必須對(duì)匹配性進(jìn)行考慮。
3 基于多重鏈表的嵌入式HCI
3.1 模型建立
多重鏈表在組織順序型結(jié)構(gòu)數(shù)據(jù)時(shí)具有較快的搜索速度,下面給出一個(gè)基于多重鏈表的模型,每個(gè)節(jié)點(diǎn)扇出為4,分別指向上層節(jié)點(diǎn)、下層節(jié)點(diǎn)及左、右的鄰居節(jié)點(diǎn),扇入不限。每個(gè)節(jié)點(diǎn)與相鄰的節(jié)點(diǎn)之間都有雙向連接,并且每個(gè)節(jié)點(diǎn)均可帶子節(jié)點(diǎn)進(jìn)行擴(kuò)展。
模型從功能上講是個(gè)層次結(jié)構(gòu),從數(shù)據(jù)模型上看是網(wǎng)狀結(jié)構(gòu),允許有一個(gè)以上的節(jié)點(diǎn)無(wú)雙親,并且一個(gè)節(jié)點(diǎn)可以有多于一個(gè)的雙親。每層節(jié)點(diǎn)的數(shù)目不固定,可視實(shí)際情況而變化。每層都是一個(gè)閉環(huán)的雙向回路,可進(jìn)行水平雙向遍歷。層與層之間由父節(jié)點(diǎn)與長(zhǎng)子節(jié)點(diǎn)雙向連接。父層節(jié)點(diǎn)對(duì)子層節(jié)點(diǎn)是一對(duì)一聯(lián)系,由父節(jié)點(diǎn)進(jìn)入子層時(shí)在長(zhǎng)子節(jié)點(diǎn)駐足;子層節(jié)點(diǎn)對(duì)父節(jié)點(diǎn)是多對(duì)一聯(lián)系,意味著由每個(gè)子節(jié)點(diǎn)都可回溯至父節(jié)點(diǎn)。由父層切換至子層的每次遍歷必須經(jīng)過(guò)長(zhǎng)子節(jié)點(diǎn),然后可由長(zhǎng)子節(jié)點(diǎn)依次進(jìn)行水平循環(huán)遍歷,子層切換至父層則比較靈活,每個(gè)子節(jié)點(diǎn)均可到達(dá)其父節(jié)點(diǎn)。
3.2 方案實(shí)現(xiàn)
3.2.1 內(nèi)存結(jié)構(gòu)設(shè)計(jì)
節(jié)點(diǎn)應(yīng)該具備4個(gè)域,除了標(biāo)示身份外還至少應(yīng)該具備指向上層父節(jié)點(diǎn)的指針域、指向下層子節(jié)點(diǎn)的指針域以及指向同層左、右兄弟的指針域。
圖1是一個(gè)簡(jiǎn)單的HCI結(jié)構(gòu)圖,從功能上看,它分為5層,第一層有5個(gè)節(jié)點(diǎn)項(xiàng)形成一個(gè)閉環(huán),第二層閉環(huán)是第一層第一個(gè)節(jié)點(diǎn)的子節(jié)點(diǎn)組,該子節(jié)點(diǎn)組的第二項(xiàng)又有子節(jié)點(diǎn)組。如此下去共有5層,處在最高位置的節(jié)點(diǎn)其父指針為空,最低位置的節(jié)點(diǎn)的兒子指針為空。
圖1 一個(gè)簡(jiǎn)單的HCI結(jié)構(gòu)圖
3.2.2 類(lèi)設(shè)計(jì)
依據(jù)模型定義如圖2所示的類(lèi)對(duì)象。左邊所示是個(gè)基本的菜單節(jié)點(diǎn)類(lèi),除了模型中提到的幾個(gè)節(jié)點(diǎn)指針,還增加了幾個(gè)相關(guān)的屬性域,Id用來(lái)標(biāo)識(shí)節(jié)點(diǎn)身份,displayValue用來(lái)存儲(chǔ)菜單的顯示標(biāo)題,布爾成員editable指明當(dāng)前節(jié)點(diǎn)是否可編輯,另外還增加一個(gè)ptr_function域,用來(lái)指向一個(gè)功能函數(shù),該函數(shù)完成節(jié)點(diǎn)在接受確定消息后要做的工作。
圖2 菜單結(jié)點(diǎn)的類(lèi)定義和菜單代理類(lèi)定義
在節(jié)點(diǎn)類(lèi)中還定義了幾個(gè)成員方法,與私有屬性相關(guān)的命名符合OOP的命名規(guī)定,均使用Get—Set前綴規(guī)則。除針對(duì)幾個(gè)成員屬性的方法外,還引入了另外幾個(gè)成員方法,CoUp執(zhí)行向父節(jié)點(diǎn)的跳轉(zhuǎn),CoDown執(zhí)行向長(zhǎng)子節(jié)點(diǎn)的跳轉(zhuǎn),CoLeft和GoRight負(fù)責(zé)向左右鄰居的跳轉(zhuǎn)。
從軟件設(shè)計(jì)獨(dú)立與資源來(lái)考慮,提出一個(gè)界面代理的概念,界面代理就是基于事件驅(qū)動(dòng),處在界面與環(huán)境之間一個(gè)中間對(duì)象。外界事件的消息均由代理來(lái)接收識(shí)別,并由它調(diào)用界面元素,對(duì)界面做出改變。圖2右邊上部所示的定義的是菜單代理類(lèi)MenuManageAgent。該類(lèi)對(duì)象用來(lái)作為菜單體系與外界交互的媒介物,它用來(lái)記錄菜單的頭指針,菜單體系的規(guī)模以及菜單的總體狀態(tài);初始化菜單結(jié)構(gòu),創(chuàng)建菜單系統(tǒng)并代表菜單接受外來(lái)的消息,并對(duì)消息加以識(shí)別和做出合理的響應(yīng)。圖2右下是對(duì)外部消息的定義。消息的列表可以依據(jù)實(shí)際情況擴(kuò)展和修正。
4 嵌入式HCI的可適應(yīng)性實(shí)現(xiàn)
靜態(tài)可適應(yīng)的實(shí)現(xiàn)是基于用戶(hù)主觀意圖進(jìn)行的。這個(gè)過(guò)程強(qiáng)調(diào)人機(jī)交互,因此用戶(hù)的工作內(nèi)容很重要,一般也作為靜態(tài)可適應(yīng)性實(shí)現(xiàn)的輸入?yún)?shù)。而實(shí)現(xiàn)的技術(shù)細(xì)節(jié)相對(duì)簡(jiǎn)單。在算法設(shè)計(jì)上,該種可適應(yīng)性實(shí)現(xiàn)工作重點(diǎn)仍然放在用戶(hù)交互內(nèi)容的管理上,由用戶(hù)的“交互內(nèi)容”綜合系統(tǒng)功能可以得到界面的“變更差”,進(jìn)而推導(dǎo)出系統(tǒng)HCI的具體參數(shù)集的變化。
如圖3所示,設(shè)備在使用環(huán)境中的動(dòng)態(tài)可適應(yīng)以系統(tǒng)狀態(tài)檢測(cè)開(kāi)始,這是一個(gè)周期性的行為,頻率依據(jù)系統(tǒng)在HCI上的實(shí)時(shí)性要求而定。系統(tǒng)狀態(tài)檢測(cè)應(yīng)該包含幾部分的工作:1)應(yīng)該有監(jiān)測(cè)環(huán)境參數(shù)的手段,比如傳感器、接入信號(hào)等;2)要依據(jù)特定的算法來(lái)測(cè)定這個(gè)矛盾,其中包括差異的獲取,尺度的制定。狀態(tài)檢測(cè)的結(jié)果是,是否有矛盾輸出,如果有矛盾出現(xiàn)的情況下,還需要做決策分析,其主要任務(wù)是基于系統(tǒng)現(xiàn)有條件是否可實(shí)現(xiàn)動(dòng)態(tài)可適應(yīng),比如已經(jīng)達(dá)到了臨界狀態(tài)時(shí),就喪失了這種可能性。所以這里涉及到對(duì)系統(tǒng)資源的管理調(diào)度。下一步就是在動(dòng)態(tài)適應(yīng)的情況下,采用動(dòng)態(tài)適應(yīng)策略對(duì)系統(tǒng)HCI給出合適的調(diào)整,從而達(dá)到普適環(huán)境下可動(dòng)態(tài)適應(yīng)的目的。
圖3 動(dòng)態(tài)自適應(yīng)性算法流程
評(píng)論