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.