基于Virtools 和串口通信的界面交互性的設(shè)計(jì)與實(shí)現(xiàn)
4 Virtools 中行為模組的設(shè)計(jì)與實(shí)現(xiàn)
下位機(jī)通過(guò)串口傳輸?shù)臄?shù)據(jù),經(jīng)過(guò)上位機(jī)串口通信程序轉(zhuǎn)換成 Virtools 可以識(shí)別的消息,然后 交由Virtools 中的行為模組進(jìn)行處理,從而達(dá)到利用外部采集數(shù)據(jù)控制界面顯示的目的。
4.1Virtools 消息發(fā)送行為模組
Virtools 消息發(fā)送行為模組對(duì)串口通信模塊處理得到的數(shù)據(jù)信息進(jìn)行重新封裝,然后發(fā)送給消息 解釋執(zhí)行行為模組。消息發(fā)送行為模組是使用Virtools 提供的開(kāi)發(fā)工具包中相關(guān)類的方法實(shí)現(xiàn)對(duì)信 息的重新封裝。具體實(shí)現(xiàn)如下:
CKBeObject *beo = beh->GetTarget(); //獲取消息發(fā)送目標(biāo)
if(!beo)
return CKBR_OWNERERROR;
int *tab = (int *)beh->GetLocalParameterReadDataPtr(0); //獲得本地變量操作句柄
CKMessageManager *mm = BehContext.MessageManager; //消息管理對(duì)象
int temp = GetMessage(BehContext) - '0'; //調(diào)用串口通信模塊讀取串口消息
mm->SendMessageSingle(tab[temp],beo); //調(diào)用消息發(fā)送函數(shù)發(fā)送已經(jīng)封裝好的動(dòng)作消息
activeOutput_0 = TRUE;
4.2 消息解釋執(zhí)行行為模組
消息解釋執(zhí)行行為模組首先從當(dāng)前的消息列表中獲取消息類型,根據(jù)消息類型屬性中指定的特 定消息類型來(lái)判斷當(dāng)前到達(dá)的消息是否為該特定消息,并根據(jù)判斷結(jié)果調(diào)用不同的處理模塊。具體 的處理流程如圖3 所示。
圖 3 消息解釋執(zhí)行行為模組流程圖
利用 Virtools 中行為模組的回調(diào)機(jī)制,循環(huán)調(diào)用該行為模組。在界面切換時(shí)檢測(cè)一下消息,判 斷是否與屬性中設(shè)定的動(dòng)作消息一致。如果一致,則向動(dòng)作控制行為模組發(fā)送激活消息。
4.3 動(dòng)作控制行為模組
動(dòng)作控制行為模組主要使用Virtools 自帶的行為模組,像按鍵響應(yīng)行為模組、腳本的控制行為模組等。另外為了控制外部媒體文件的播放,還利用了Virtools 中加載資源文件、播放資源文件的 行為模組。
動(dòng)作控制行為模組接收到消息解釋執(zhí)行行為模組發(fā)送的激活信息,就會(huì)調(diào)用相應(yīng)的行為模組完 成界面的輸出。
5 結(jié)論
本文從工程應(yīng)用的角度,給出了基于Virtools 和串口通信的界面交互性的設(shè)計(jì)方法,并給出關(guān)鍵部分的設(shè)計(jì)思路和方法。該設(shè)計(jì)方法具有一定的通用性,可應(yīng)用于其它需要用戶界面交互設(shè)計(jì)的應(yīng)用系統(tǒng)中。
本文作者創(chuàng)新點(diǎn):串口通信下,采集下位機(jī)(單片機(jī))傳遞的信息,運(yùn)用 Virtools 的行為模組 進(jìn)行實(shí)時(shí)處理,實(shí)現(xiàn)了人機(jī)界面的交互。這一設(shè)計(jì)也為其他人機(jī)界面交互性的實(shí)現(xiàn)提供了一種新的思路。
評(píng)論