MATLAB读取串口数据serialport

时间:2024-03-05 12:28:55

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.