基于Matlab GUI的PC機與智能車的無線通信

3 單片機與PC機串行通信
3.1 設計思想
MCA8HCS12G128單片機的軟件設計需要實現對程序的初始化、接收與發送串口信號、速度和位置數據的采集等功能。為了保證上位機采集數據的可靠性和穩定性,防止出現丟包事件,在通信過程中約定了雙方的握手方法。在程序初始化以后,等待fwrite命令發送的握手信號0xFF.當單片機第一次接收到的信號為0xFF時,則握手成功,并開始運行電機和激光頭等子程序。在實驗過程中發現存在發送的第一組數據第一個字節丟失的現象,為了增強數據的可靠性,首先判斷數據包的前兩個字節是否為0xFF,是則剔除相應字節,分離出有效的數據,再在回送的速度、激光傳感器的數據中嵌入兩個字節的握手信號0xFF,Matlab接收到串口的數據后進行相應的處理。智能車控制器通信的總程序流程如圖3所示。

3.2 系統藍牙串口通信主要代碼

在Matlab環境下,讀取串口數據有查詢和中斷兩種方式。查詢方式數據只能分批進行傳送,實時性不高,且對系統資源的占用比較大。以中斷方式實現的串口通信,通常的處理方式是對Matlab提供的instrcallback回調函數進行修改,采用事件驅動的方式,達到實時處理下位機傳送數據的目的。但是采用Matlab的事件和回調函數機制編程要相對復雜一些,在對instreallback函數進行修改和備份等操作時容易出錯且比較麻煩。另外,每次修改instreallbaek函數后都要重新啟動Matlab,可能會導致數據丟失等一些不必要的麻煩。將事件驅動函數寫入GUI組件的M文件中,可以減少綰程的復雜性,避免一些不必要的麻煩,實現串口之間的實時通信。
4.2 設備控制工具箱介紹
Matlab設備控制工具箱主要是提供Matlab軟件與各種智能儀器的直接通信功能。工具箱提供了以下功能:
①支持串行接口(RS-232/RS-422/RS-485)、GPIB接口(IEEE 488)等通信協議。
②支持IVI、VXI plugplay和Matlab設備驅動(instrument drivers),不需要學會寫與設備相關的指令即能與儀器直接聯通。
③傳輸的數據可以是文本或二進制的(數字的)。
④支持同步和異步(有阻塞或無阻塞)通信。
⑤支持基于事件的通信。
數字通信相關文章:數字通信原理








評論