當(dāng)前位置:首頁 > 工業(yè)控制 > 電子設(shè)計自動化
[導(dǎo)讀]摘 要:本文介紹了一種采用Virtools 和串口通信實(shí)現(xiàn)人機(jī)界面交互的設(shè)計方法。下位機(jī)通過 串口通信的方式將采集的數(shù)據(jù)傳給上位機(jī),上位機(jī)通過Virtools 的行為模組對這些數(shù)據(jù)進(jìn)行處理, 并根據(jù)處理結(jié)果做出響應(yīng),從而實(shí)

摘 要:本文介紹了一種采用Virtools 和串口通信實(shí)現(xiàn)人機(jī)界面交互的設(shè)計方法。下位機(jī)通過 串口通信的方式將采集的數(shù)據(jù)傳給上位機(jī),上位機(jī)通過Virtools 的行為模組對這些數(shù)據(jù)進(jìn)行處理, 并根據(jù)處理結(jié)果做出響應(yīng),從而實(shí)現(xiàn)人機(jī)界面的交互。

1 引言

用戶界面設(shè)計是屏幕產(chǎn)品的重要組成部分,它為人機(jī)交互構(gòu)建了一個溝通環(huán)境。其中交互性設(shè) 計是用戶界面設(shè)計中的重要內(nèi)容之一。交互設(shè)計的目的是讓用戶能夠簡單方便地使用產(chǎn)品,任何產(chǎn) 品功能的實(shí)現(xiàn)都是通過人機(jī)交互完成的?,F(xiàn)以單片機(jī)為核心的嵌入式應(yīng)用中界面交互性設(shè)計為例具 體介紹其實(shí)現(xiàn)方法。

2 總體設(shè)計方案

總體設(shè)計方案如圖 1 所示。


圖 1 總體設(shè)計圖

以單片機(jī)為核心的下位機(jī)主要是負(fù)責(zé)采集處理數(shù)據(jù)信息,在接到上位機(jī)的數(shù)據(jù)請求的時候發(fā)送 數(shù)據(jù)給上位機(jī)。編寫上位機(jī)端的串口通信程序,用于處理串口信息并且把處理過后的消息發(fā)送給 Virtools。在Virtools 中設(shè)計消息解釋執(zhí)行行為模組,將解釋出的相應(yīng)動作信息發(fā)送給界面控制程序, 最后由其完成屏幕的輸出。同時協(xié)調(diào)Virtools 中各行為模組的工作,使之達(dá)到良好的演示效果。

3 串口通信設(shè)計與實(shí)現(xiàn)

串口通信是指外設(shè)和計算機(jī)間,通過數(shù)據(jù)信號線、地線、控制線等,按位進(jìn)行傳輸數(shù)據(jù)的一種 通信方式。這種通信方式使用的數(shù)據(jù)線少。本文的串口通信設(shè)計包括下位機(jī)端的串口通信模塊和上 位機(jī)端的串口通信模塊。

3.1 下位機(jī)的串口通信模塊

下位機(jī)的串口通信模塊通過串口完成與上位機(jī)的通信,在接到上位機(jī)數(shù)據(jù)請求后將采集的數(shù)據(jù) 信息發(fā)送給上位機(jī)。 在設(shè)計中首先設(shè)定定時器 T1 為串口波特率發(fā)生器,設(shè)定波特率為19200bps;上位機(jī)發(fā)送數(shù)據(jù) 請求后觸發(fā)下位機(jī)串口中斷,為了能夠快速的響應(yīng)上位機(jī)的請求,減少上位機(jī)的等待,將串口中斷 的優(yōu)先級設(shè)置為最高;下位機(jī)會優(yōu)先調(diào)用通信模塊響應(yīng)該中斷,通信模塊首先判斷請求消息是否正 確,在確定是正確的請求消息后,從緩沖區(qū)中取出數(shù)據(jù),封裝成一條消息M 消息碼R(如M01R), 通過串口發(fā)送給上位機(jī)。通信模塊具備一定過濾及容錯能力。

下面重點(diǎn)介紹一下串口通信模塊的處理方式。

串口通信模塊采用中斷處理方式,每完整地接收到一個字符或發(fā)送完一個字符都會觸發(fā)該中斷, 進(jìn)入到相應(yīng)的中斷處理函數(shù)中。中斷處理函數(shù)涉及到接收和發(fā)送兩個部分,因此在中斷處理函數(shù)開 始的部分就判斷是接收引發(fā)的中斷,還是發(fā)送引發(fā)的中斷。如果是接收中斷,在接收中斷中每接收 一個字符都要判斷,確定是否為上位機(jī)發(fā)送過來的請求消息,如果不是放棄當(dāng)前接收到的內(nèi)容,從 頭開始接收;如果是,則響應(yīng)上位機(jī)的數(shù)據(jù)請求,將接收態(tài)改為發(fā)送態(tài),然后向上位機(jī)發(fā)送通信緩 沖區(qū)中的第一個字符,每發(fā)送一個字符會產(chǎn)生中斷,在下次中斷中再發(fā)送下一字符,按此過程直到 發(fā)送完畢。

3.2 上位機(jī)的串口通信模塊

上位機(jī)的串口通信模塊通過串口向下位機(jī)發(fā)送請求信息,處理下位機(jī)返回的數(shù)據(jù)信息,并將其 發(fā)送給處理這些信息的行為模組。這一過程是循環(huán)執(zhí)行的。該程序是與下位機(jī)協(xié)同工作的唯一接口, 是聯(lián)系界面和下位機(jī)的橋梁。它的處理流程如圖2 所示。


圖 2 上位機(jī)串口通信模塊處理流程圖

上位機(jī)的串口通信程序是通過調(diào)用 Windows 提供的有關(guān)串口操作的API 函數(shù)完成的。首先創(chuàng)建 了基礎(chǔ)串口類_base_com,在其中實(shí)現(xiàn)基本信息配置、打開、關(guān)閉串口等基礎(chǔ)功能。為了實(shí)現(xiàn)異步發(fā) 送和異步接收,在_base_com 類的基礎(chǔ)上派生出異步串口通信類_sync_com 完成異步的數(shù)據(jù)傳輸。

基類_base_com 的聲明如下。

class _base_com //虛基類基本串口接口

{

protected:

volatile int _port; //串口號

volatile HANDLE _com_handle;//串口句柄

DCB _dcb; //波特率,停止位,等

int _in_buf, _out_buf; // 緩沖區(qū)

COMMTIMEOUTS _co; // 超時時間

//虛函數(shù),用于不同方式的串口打開

virtual bool open_port() = 0;

void init(); //初始化

public:

_base_com()

{

init();

}

virtual ~_base_com();

/*基本參數(shù)設(shè)置*/

//設(shè)置串口參數(shù):波特率,停止位,等

inline bool set_para();

//支持設(shè)置字符串 "9600, 8, n, 1"

bool set_dcb(char *set_str);

//設(shè)置內(nèi)置結(jié)構(gòu)串口參數(shù):波特率,停止位

bool set_dcb(int BaudRate, int ByteSize = 8, int Parity = NOPARITY, int StopBits =

ONESTOPBIT);

//設(shè)置緩沖區(qū)大小

inline bool set_buf(int in_buf, int out_buf);

//打開串口缺省 9600, 8, n, 1

inline bool open(int port);

//打開串口缺省 baud_rate, 8, n, 1

inline bool open(int port, int baud_rate);

//打開串口

inline bool open(int port, char *set_str);

//關(guān)閉串口

inline virtual void close();

//判斷串口是或打開

inline bool is_open();

//獲得串口句炳

HANDLE get_handle();

};

異步串口通信類_sync_com 的聲明如下。

class _sync_com : public _base_com

{

protected:

//打開串口

virtual bool open_port();

public:

_sync_com();

//同步讀

int read(char *buf, int buf_len);

//同步寫

int write(char *buf, int buf_len)

//同步寫

inline int write(char *buf)

{

assert(buf);

return write(buf, strlen(buf));

}

};

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)提供了一種新的 思路。



來源:zhengxiaoxiao1次

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉