MATLAB從R2019b開始不建議使用serial創建串口對象 並建議改用serialport及其屬性,在R2020b以后的版本中使用serial可能會報錯。在寫這篇文章時,網上幾乎所有使用MATLAB讀取串口數據的教程都在使用serial。本文主要介紹在MATLAB R2020b環境下使用serialport及其屬性讀取串口數據的一種方法。
參考MATLAB中serial的文檔,初始化串口對象的方法:
s = serialport(port,baudrate)
port是串口號,baudrate是波特率。
使用serial時需要使用fopen與fclose打開與關閉串口,這個方法可以直接使用read等方法讀取數據,避免了串口的打開與關閉可能引起的錯誤。
configureCallback(device,"terminator",callbackFcn) 將 callbackFcn 設置為在終止符可供讀取時觸發。
configureCallback(device,"byte",count,callbackFcn) 將 callbackFcn 設置為在 count 字節數可供讀取時觸發。
configureCallback(device,"off") 關閉回調。
serialport 對象 BytesAvailableFcnMode 屬性指示模式為 "terminator"、"byte" 或 "off"。BytesAvailableFcn 屬性指示 callbackFcn 指定的回調函數。BytesAvailableFcnCount 屬性指示 count 設置。
回調函數包含兩個參數,官方提供的例子:
主程序代碼:
clear port = 'com4'; baudrate = 115200; s = serialport(port,baudrate); configureCallback(s,"byte",1,@serial_callback) pause configureCallback(s,"off")
回調函數:
function serial_callback(s,~) data = read(s,1,"uint8"); disp(data) end
We happy.