基于Virtools 和串口通信的界面交互性的設(shè)計(jì)與實(shí)現(xiàn)
摘 要:本文介紹了一種采用Virtools 和串口通信實(shí)現(xiàn)人機(jī)界面交互的設(shè)計(jì)方法。下位機(jī)通過(guò) 串口通信的方式將采集的數(shù)據(jù)傳給上位機(jī),上位機(jī)通過(guò)Virtools 的行為模組對(duì)這些數(shù)據(jù)進(jìn)行處理, 并根據(jù)處理結(jié)果做出響應(yīng),從而實(shí)現(xiàn)人機(jī)界面的交互。
1 引言
用戶界面設(shè)計(jì)是屏幕產(chǎn)品的重要組成部分,它為人機(jī)交互構(gòu)建了一個(gè)溝通環(huán)境。其中交互性設(shè) 計(jì)是用戶界面設(shè)計(jì)中的重要內(nèi)容之一。交互設(shè)計(jì)的目的是讓用戶能夠簡(jiǎn)單方便地使用產(chǎn)品,任何產(chǎn) 品功能的實(shí)現(xiàn)都是通過(guò)人機(jī)交互完成的?,F(xiàn)以單片機(jī)為核心的嵌入式應(yīng)用中界面交互性設(shè)計(jì)為例具 體介紹其實(shí)現(xiàn)方法。
2 總體設(shè)計(jì)方案
總體設(shè)計(jì)方案如圖 1 所示。
圖 1 總體設(shè)計(jì)圖
以單片機(jī)為核心的下位機(jī)主要是負(fù)責(zé)采集處理數(shù)據(jù)信息,在接到上位機(jī)的數(shù)據(jù)請(qǐng)求的時(shí)候發(fā)送 數(shù)據(jù)給上位機(jī)。編寫(xiě)上位機(jī)端的串口通信程序,用于處理串口信息并且把處理過(guò)后的消息發(fā)送給 Virtools。在Virtools 中設(shè)計(jì)消息解釋執(zhí)行行為模組,將解釋出的相應(yīng)動(dòng)作信息發(fā)送給界面控制程序, 最后由其完成屏幕的輸出。同時(shí)協(xié)調(diào)Virtools 中各行為模組的工作,使之達(dá)到良好的演示效果。
3 串口通信設(shè)計(jì)與實(shí)現(xiàn)
串口通信是指外設(shè)和計(jì)算機(jī)間,通過(guò)數(shù)據(jù)信號(hào)線、地線、控制線等,按位進(jìn)行傳輸數(shù)據(jù)的一種 通信方式。這種通信方式使用的數(shù)據(jù)線少。本文的串口通信設(shè)計(jì)包括下位機(jī)端的串口通信模塊和上 位機(jī)端的串口通信模塊。
3.1 下位機(jī)的串口通信模塊
下位機(jī)的串口通信模塊通過(guò)串口完成與上位機(jī)的通信,在接到上位機(jī)數(shù)據(jù)請(qǐng)求后將采集的數(shù)據(jù) 信息發(fā)送給上位機(jī)。 在設(shè)計(jì)中首先設(shè)定定時(shí)器 T1 為串口波特率發(fā)生器,設(shè)定波特率為19200bps;上位機(jī)發(fā)送數(shù)據(jù) 請(qǐng)求后觸發(fā)下位機(jī)串口中斷,為了能夠快速的響應(yīng)上位機(jī)的請(qǐng)求,減少上位機(jī)的等待,將串口中斷 的優(yōu)先級(jí)設(shè)置為最高;下位機(jī)會(huì)優(yōu)先調(diào)用通信模塊響應(yīng)該中斷,通信模塊首先判斷請(qǐng)求消息是否正 確,在確定是正確的請(qǐng)求消息后,從緩沖區(qū)中取出數(shù)據(jù),封裝成一條消息M 消息碼R(如M01R), 通過(guò)串口發(fā)送給上位機(jī)。通信模塊具備一定過(guò)濾及容錯(cuò)能力。
下面重點(diǎn)介紹一下串口通信模塊的處理方式。
串口通信模塊采用中斷處理方式,每完整地接收到一個(gè)字符或發(fā)送完一個(gè)字符都會(huì)觸發(fā)該中斷, 進(jìn)入到相應(yīng)的中斷處理函數(shù)中。中斷處理函數(shù)涉及到接收和發(fā)送兩個(gè)部分,因此在中斷處理函數(shù)開(kāi) 始的部分就判斷是接收引發(fā)的中斷,還是發(fā)送引發(fā)的中斷。如果是接收中斷,在接收中斷中每接收 一個(gè)字符都要判斷,確定是否為上位機(jī)發(fā)送過(guò)來(lái)的請(qǐng)求消息,如果不是放棄當(dāng)前接收到的內(nèi)容,從 頭開(kāi)始接收;如果是,則響應(yīng)上位機(jī)的數(shù)據(jù)請(qǐng)求,將接收態(tài)改為發(fā)送態(tài),然后向上位機(jī)發(fā)送通信緩 沖區(qū)中的第一個(gè)字符,每發(fā)送一個(gè)字符會(huì)產(chǎn)生中斷,在下次中斷中再發(fā)送下一字符,按此過(guò)程直到 發(fā)送完畢。
3.2 上位機(jī)的串口通信模塊
上位機(jī)的串口通信模塊通過(guò)串口向下位機(jī)發(fā)送請(qǐng)求信息,處理下位機(jī)返回的數(shù)據(jù)信息,并將其 發(fā)送給處理這些信息的行為模組。這一過(guò)程是循環(huán)執(zhí)行的。該程序是與下位機(jī)協(xié)同工作的唯一接口, 是聯(lián)系界面和下位機(jī)的橋梁。它的處理流程如圖2 所示。
圖 2 上位機(jī)串口通信模塊處理流程圖
上位機(jī)的串口通信程序是通過(guò)調(diào)用 Windows 提供的有關(guān)串口操作的API 函數(shù)完成的。首先創(chuàng)建 了基礎(chǔ)串口類_base_com,在其中實(shí)現(xiàn)基本信息配置、打開(kāi)、關(guān)閉串口等基礎(chǔ)功能。為了實(shí)現(xiàn)異步發(fā) 送和異步接收,在_base_com 類的基礎(chǔ)上派生出異步串口通信類_sync_com 完成異步的數(shù)據(jù)傳輸。
評(píng)論