Matlab GUI的上位機(jī)與智能車的兩種實(shí)時通信
摘要:基于Matlab的串口通信機(jī)制,簡要介紹了查詢方式下的非實(shí)時通信,提出一種將事件中斷寫入GUI組件函數(shù)的方式,相對于改寫instrcallback函數(shù)實(shí)現(xiàn)串口中斷機(jī)制的實(shí)時通信方式,大大簡化了中斷方式實(shí)現(xiàn)實(shí)時通信的過程,并詳述了三者的差異和實(shí)現(xiàn)過程。利用Matlab的GUI工具和內(nèi)置的串口通信API,設(shè)計(jì)了一個可視化的串口通信界面,通過藍(lán)牙串行接口,實(shí)現(xiàn)智能車系統(tǒng)采集數(shù)據(jù)的實(shí)時接收,并利用Matlab強(qiáng)大的科學(xué)計(jì)算功能,對數(shù)據(jù)進(jìn)行實(shí)時處理,圖形化量示數(shù)據(jù)處理結(jié)果。實(shí)驗(yàn)結(jié)果表明,該方法可行,具有一定的應(yīng)用價值。
關(guān)鍵詞:Matlab GUI;智能車;MC68HCS12G128單片機(jī);回調(diào)函數(shù)instrcallback;實(shí)時通信
引言
在以速度決定優(yōu)劣的飛恩卡爾智能車比賽中,任何因素都可能影響小車的運(yùn)行。為了滿足對小車在賽道中各種狀態(tài)精確分析的需求,上位機(jī)的效據(jù)采集與處理要求通信波特率高、信號傳輸穩(wěn)定、不丟包、數(shù)據(jù)處理量大、數(shù)據(jù)處理及時等。在基于Matlab環(huán)境下的串口通信中,查詢方式下的非實(shí)時串行通信技術(shù)對實(shí)時性要求很高的智能車通信有很大的局限性。而在目前普遍采用的中斷機(jī)制下的通信雖然可以滿足實(shí)時性的需要,卻需要修改Matlab自帶的instrcallback回調(diào)函數(shù)。程序調(diào)試過程中慘改了回調(diào)函數(shù)后,需要重新啟動Matlab才能使得新的回調(diào)函數(shù)文件生效。由此可以看出,其操作復(fù)雜易出錯,且instrcallback函數(shù)接收到保存在工作空間的數(shù)據(jù)不能被GUI組件的函數(shù)實(shí)時調(diào)用。故此方式在需要對多組數(shù)據(jù)進(jìn)行分別作圖分析時,往往生成多個零散圖形窗口。為了滿足智能車的實(shí)時通信需求,同時使基于Matlab GUI的通信界面更加簡潔,本文提出了一種將事件中斷函數(shù)寫入GUI組件函數(shù)中的方式。
Matlab是由美國Mathworks公司開發(fā)的面向理論分析研究及工程設(shè)計(jì)處理和繪圖的一套具有強(qiáng)大功能的軟件系統(tǒng)。Matlab運(yùn)行穩(wěn)定、可靠,使用方便,是廣大科研人員進(jìn)行科學(xué)研究的得力助手。從Matlab6.0版本開始,Mathworks公司在軟件中增加了設(shè)備控制箱(instrument control toolbox),提供了對RS-232/RS-485通信標(biāo)準(zhǔn)的串口通信的正式支持。Matlab GUI(Graphic User Interface)是內(nèi)置于Matlab的進(jìn)行圖形界面開發(fā)的模塊。本文主要介紹在Mariab GUI環(huán)境下,上位機(jī)與智能車進(jìn)行實(shí)時通信盼辦法。該方法較之使用VC/VB高級語言編程,
大大縮減了開發(fā)時間,提高了開發(fā)效率。另外,較之傳統(tǒng)的RS-232接口,使用藍(lán)牙接口能夠更大范圍地全方位進(jìn)行數(shù)據(jù)傳輸和采集。實(shí)驗(yàn)結(jié)果表明,經(jīng)過兩次握手處理后數(shù)據(jù)傳輸實(shí)時穩(wěn)定,具有很強(qiáng)的實(shí)用性。
1 系統(tǒng)總體設(shè)計(jì)方案
系統(tǒng)采用飛恩卡爾MCA8HCS12G128單片機(jī)作為智能車的控制器,PC機(jī)為上位機(jī)。利用Matlab GUI構(gòu)建起二者的實(shí)時通信、數(shù)據(jù)處理和繪圖等平臺。整個系統(tǒng)的原理框圖如圖1所示,介紹了基于Matlab的GUI和串口通信機(jī)制下建立上位機(jī)與智能車實(shí)時通信和作圖的平臺方法。
智能車與PC機(jī)通過藍(lán)牙相連,系統(tǒng)工作時,由Matlab調(diào)用設(shè)備控制工具箱中的serial類函數(shù)來設(shè)置串口屬性,創(chuàng)建串口對象,從而實(shí)現(xiàn)Matlab對串口的控制和讀寫操作。在對智能車的調(diào)試過程中,可以通過Matlab向藍(lán)牙發(fā)送特殊指令,啟動智能車。在智能車系統(tǒng)運(yùn)行后便可以將所采集位置和速度等效據(jù)通過藍(lán)牙回送給PC機(jī)。
由Matlab通過中斷方式實(shí)時接收數(shù)據(jù),并對數(shù)據(jù)進(jìn)行分析和處理,實(shí)時繪出相應(yīng)的圖形。
2 Matlab GUI設(shè)計(jì)介紹
①運(yùn)行Matlab后,點(diǎn)擊主界面左上角的GUI圖標(biāo)即可運(yùn)行Matlab GUI開發(fā)工具。
②點(diǎn)擊Blank GUI(Default)選項(xiàng)并點(diǎn)擊OK按鈕,完成新建Blank GUI。
③在新建的Blank GUI界面的右方菜單中添加設(shè)計(jì)所需要的元素,完成串口通信及數(shù)據(jù)實(shí)時顯示等功能的GUI界面設(shè)計(jì)。
④編寫GUI組建相應(yīng)的響應(yīng)控制代碼,運(yùn)行后的通信仿真界面如圖2所示。
數(shù)字通信相關(guān)文章:數(shù)字通信原理
通信相關(guān)文章:通信原理
評論