基于Matlab GUI的PC機(jī)與智能車的無線通信
3 單片機(jī)與PC機(jī)串行通信
3.1 設(shè)計思想
MCA8HCS12G128單片機(jī)的軟件設(shè)計需要實現(xiàn)對程序的初始化、接收與發(fā)送串口信號、速度和位置數(shù)據(jù)的采集等功能。為了保證上位機(jī)采集數(shù)據(jù)的可靠性和穩(wěn)定性,防止出現(xiàn)丟包事件,在通信過程中約定了雙方的握手方法。在程序初始化以后,等待fwrite命令發(fā)送的握手信號0xFF.當(dāng)單片機(jī)第一次接收到的信號為0xFF時,則握手成功,并開始運行電機(jī)和激光頭等子程序。在實驗過程中發(fā)現(xiàn)存在發(fā)送的第一組數(shù)據(jù)第一個字節(jié)丟失的現(xiàn)象,為了增強數(shù)據(jù)的可靠性,首先判斷數(shù)據(jù)包的前兩個字節(jié)是否為0xFF,是則剔除相應(yīng)字節(jié),分離出有效的數(shù)據(jù),再在回送的速度、激光傳感器的數(shù)據(jù)中嵌入兩個字節(jié)的握手信號0xFF,Matlab接收到串口的數(shù)據(jù)后進(jìn)行相應(yīng)的處理。智能車控制器通信的總程序流程如圖3所示。
3.2 系統(tǒng)藍(lán)牙串口通信主要代碼
4.1 Matlab GUI基礎(chǔ)上實現(xiàn)串口通信的軟件設(shè)計
在Matlab環(huán)境下,讀取串口數(shù)據(jù)有查詢和中斷兩種方式。查詢方式數(shù)據(jù)只能分批進(jìn)行傳送,實時性不高,且對系統(tǒng)資源的占用比較大。以中斷方式實現(xiàn)的串口通信,通常的處理方式是對Matlab提供的instrcallback回調(diào)函數(shù)進(jìn)行修改,采用事件驅(qū)動的方式,達(dá)到實時處理下位機(jī)傳送數(shù)據(jù)的目的。但是采用Matlab的事件和回調(diào)函數(shù)機(jī)制編程要相對復(fù)雜一些,在對instreallback函數(shù)進(jìn)行修改和備份等操作時容易出錯且比較麻煩。另外,每次修改instreallbaek函數(shù)后都要重新啟動Matlab,可能會導(dǎo)致數(shù)據(jù)丟失等一些不必要的麻煩。將事件驅(qū)動函數(shù)寫入GUI組件的M文件中,可以減少綰程的復(fù)雜性,避免一些不必要的麻煩,實現(xiàn)串口之間的實時通信。
4.2 設(shè)備控制工具箱介紹
Matlab設(shè)備控制工具箱主要是提供Matlab軟件與各種智能儀器的直接通信功能。工具箱提供了以下功能:
?、僦С执薪涌冢≧S-232/RS-422/RS-485)、GPIB接口(IEEE 488)等通信協(xié)議。
②支持IVI、VXI plugplay和Matlab設(shè)備驅(qū)動(instrument drivers),不需要學(xué)會寫與設(shè)備相關(guān)的指令即能與儀器直接聯(lián)通。
?、蹅鬏?shù)臄?shù)據(jù)可以是文本或二進(jìn)制的(數(shù)字的)。
④支持同步和異步(有阻塞或無阻塞)通信。
?、葜С只谑录耐ㄐ拧?/P>
數(shù)字通信相關(guān)文章:數(shù)字通信原理
評論