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