www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

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

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

1 引言

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

2 總體設計方案

總體設計方案如圖 1 所示。


圖 1 總體設計圖

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

3 串口通信設計與實現

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

3.1 下位機的串口通信模塊

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

下面重點介紹一下串口通信模塊的處理方式。

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

3.2 上位機的串口通信模塊

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


圖 2 上位機串口通信模塊處理流程圖

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

基類_base_com 的聲明如下。

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

{

protected:

volatile int _port; //串口號

volatile HANDLE _com_handle;//串口句柄

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

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

COMMTIMEOUTS _co; // 超時時間

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

virtual bool open_port() = 0;

void init(); //初始化

public:

_base_com()

{

init();

}

virtual ~_base_com();

/*基本參數設置*/

//設置串口參數:波特率,停止位,等

inline bool set_para();

//支持設置字符串 "9600, 8, n, 1"

bool set_dcb(char *set_str);

//設置內置結構串口參數:波特率,停止位

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

ONESTOPBIT);

//設置緩沖區(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);

//關閉串口

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 中行為模組的設計與實現

下位機通過串口傳輸的數據,經過上位機串口通信程序轉換成 Virtools 可以識別的消息,然后 交由Virtools 中的行為模組進行處理,從而達到利用外部采集數據控制界面顯示的目的。

4.1Virtools 消息發(fā)送行為模組

Virtools 消息發(fā)送行為模組對串口通信模塊處理得到的數據信息進行重新封裝,然后發(fā)送給消息 解釋執(zhí)行行為模組。消息發(fā)送行為模組是使用Virtools 提供的開發(fā)工具包中相關類的方法實現對信 息的重新封裝。具體實現如下:

CKBeObject *beo = beh->GetTarget(); //獲取消息發(fā)送目標

if(!beo)

return CKBR_OWNERERROR;

int *tab = (int *)beh->GetLocalParameterReadDataPtr(0); //獲得本地變量操作句柄

CKMessageManager *mm = BehContext.MessageManager; //消息管理對象

int temp = GetMessage(BehContext) - '0'; //調用串口通信模塊讀取串口消息

mm->SendMessageSingle(tab[temp],beo); //調用消息發(fā)送函數發(fā)送已經封裝好的動作消息

activeOutput_0 = TRUE;

4.2 消息解釋執(zhí)行行為模組

消息解釋執(zhí)行行為模組首先從當前的消息列表中獲取消息類型,根據消息類型屬性中指定的特 定消息類型來判斷當前到達的消息是否為該特定消息,并根據判斷結果調用不同的處理模塊。具體 的處理流程如圖3 所示。


圖 3 消息解釋執(zhí)行行為模組流程圖

利用 Virtools 中行為模組的回調機制,循環(huán)調用該行為模組。在界面切換時檢測一下消息,判 斷是否與屬性中設定的動作消息一致。如果一致,則向動作控制行為模組發(fā)送激活消息。

4.3 動作控制行為模組

動作控制行為模組主要使用 Virtools 自帶的行為模組,像按鍵響應行為模組、腳本的控制行為 模組等。另外為了控制外部媒體文件的播放,還利用了Virtools 中加載資源文件、播放資源文件的 行為模組。

動作控制行為模組接收到消息解釋執(zhí)行行為模組發(fā)送的激活信息,就會調用相應的行為模組完 成界面的輸出。

5 結論

本文從工程應用的角度,給出了基于 Virtools 和串口通信的界面交互性的設計方法,并給出關鍵部分的設計思路和方法。該設計方法具有一定的通用性,可應用于其它需要用戶界面交互設計的 應用系統(tǒng)中。

本文作者創(chuàng)新點:串口通信下,采集下位機(單片機)傳遞的信息,運用 Virtools 的行為模組 進行實時處理,實現了人機界面的交互。這一設計也為其他人機界面交互性的實現提供了一種新的 思路。



來源:zhengxiaoxiao1次

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

在現代電子設備的設計領域中,將電容式感應技術與 LED 照明系統(tǒng)相結合,正逐漸成為一種備受青睞的創(chuàng)新趨勢。這種融合旨在打造出更加智能、便捷且交互性強的產品體驗。然而,如同任何復雜的工程整合一樣,在設計具有電容式感應和 L...

關鍵字: 感應技術 照明系統(tǒng) 交互性

串口全稱是串行接口(Serial Interface),串口通訊指僅用一對傳輸線就能將數據以比特位進行傳輸的一種通訊方式。盡管串口通訊必按字節(jié)傳輸的并行通信慢,但是串口可以在僅用兩根線的情況下完成數據傳輸,大大降低了成本...

關鍵字: 串口 UART

隨著電腦技術的發(fā)展,一些老的設備在新電腦上不能被使用,主要原因是不管是臺式電腦,還是筆記本電腦,都很少有串口接口,也就是我們常說的COM口。好在這些設備都有USB接口,不妨通過接口轉換的方式,使我們的設備在新電腦上重新被...

關鍵字: 串口 USB

串口:串口是一個泛稱,UART、TTL、RS232、RS485都遵循類似的通信時序協(xié)議,因此都被通稱為串口。串口通訊應用是工控人必須掌握的一個技能,幾乎在每一個項目中都會用到,今天我們就來詳細比較一下它們究竟有何區(qū)別。

關鍵字: 串口 協(xié)議

在嵌入式開發(fā)過程中,許多系統(tǒng)通常使用串口驅動來滿足通信要求,但在實際應用中,使用SPI通信方式會更加高效和快捷。

關鍵字: 串口 驅動

串口WiFi模塊作為新一代嵌入式WiFi模塊,因其體積小、功耗低的特點,廣泛應用于物聯網、智能家居等領域。

關鍵字: 串口 WiFi模塊 嵌入式

在現代嵌入式系統(tǒng)設計中,FPGA(現場可編程門陣列)的靈活性和可重構性使其成為許多應用的理想選擇。而在FPGA的開發(fā)和部署過程中,如何實現遠程升級和故障恢復成為了一個重要議題。本文將詳細探討如何通過BPI FLASH實現...

關鍵字: FPGA 串口 MultiBoot 嵌入式系統(tǒng)

在現代電子設計中,FPGA(現場可編程門陣列)因其高度的靈活性和可重構性,成為眾多領域的核心組件。特別是在需要動態(tài)更新或調整系統(tǒng)功能的場景中,FPGA的串口升級和MultiBoot功能顯得尤為重要。本文將深入探討FPGA...

關鍵字: FPGA 串口 MultiBoot

之前有個同事因為用串口查詢方式發(fā)送數據,被我說了一頓,明明有DMA資源,竟然放著不用,對于魚鷹這種性能強迫癥來說,肯定無法忍受,所以當時就和他說,有時間你把它改一下。誰知道過了好幾個月他才有時間弄這個,然后還是出了問題,...

關鍵字: DMA 串口

串行通訊是指僅用一根接收線和一根發(fā)送線就能將數據以位進行傳輸的一種通訊方式。盡管串行通訊的比按字節(jié)傳輸的并行通信慢,但是串口可以在僅僅使用兩根線的情況下就能實現數據的傳輸。

關鍵字: 串口 串行通信
關閉