基于Matlab GUI的PC機與智能車的無線通信
基于Matlab查詢方式的非實時串口通信雖然編程簡單,對數據的調用處理也更為容易,但是只能接收一個過程的數據,這在對實時性要求較高的系統(tǒng)中往往不能滿足設計者的需求。以下為部分通信程序代碼。
6 基于Matlab中斷方式實現實時串行通信
事件驅動方式的優(yōu)點是程序響應及時,可靠性高。在Matlab環(huán)境下實現實時通信的中斷方式,實際上就是采用事件驅動的方式實現的,類似于VB語言MSComm控件中OnComm事件的實現方法。當串口上監(jiān)視到緩沖區(qū)有指定字節(jié)數目的數據可用(bytes-available event),串口接收到的數據長時間處于非激活狀態(tài)(break-interrupt event),串行口引腳狀態(tài)改變(pin-status event)或輸出緩沖區(qū)為空(output empty eve nt)等事件發(fā)生時,Matlab會自動調用回調函數進行通信事件的處理。因此,事件驅動實質上是一種中斷機制,而回調函數實質上相當于一個中斷服務子程序。Matlab端實時串行通信的程序流程如圖4所示。以下為兩種不同的方式實現實時通信的中斷機制程序。
6.1 將中斷服務子程序寫入GUI組件的部分M文件代碼
主程序創(chuàng)建串口設備對象、設置串口設備屬性及打開串口等初始化操作的代碼與查詢方式下的初始化代碼相同:
6.2 通過調用修改后的instroallback.m文件實現中斷
主程序:
修改instreallback(obj,evenlt)回調函數,instrcallback.m文件包含了Matlab提供的回調函數程序模板,設計者可以根據需要自行添加相應的服務程序代碼。Matlab安裝目錄下有兩個instrcallback.m文件,只需要修改MATLABtoolboxmatlabiofun@instrument目錄下的instrcallback.m文件即可。另外,在修改instrcallback.m文件之前,最好對其做一個備份。在修改了instrcallback(obj,event)回調函數后,需要對其進行保存,重新啟動Matlab配置該文件,才使修改后的函數生效。
圖5為以下方式實現的智能車啟動過程速度的實時顯示,修改后的instrcallback.m文件主要程序代碼如下:
數字通信相關文章:數字通信原理
評論