Matlab通过简单的脚本程序读写串口
实验目的
关于Matlab的串口通信GUI的教程很多,但我就想直接用简单的脚本实现串口通信,得到数据,先随便记录一下吧。
实验环境
sscom5.13.1
Matlab2022a
确认串口正常
确定可以通过简单的串口程序实现通信
【需要确定单片机等串口通信的参数】
1、所要通信的端口号(本实验电脑只使用了一个端口)
2、设置的波特率、数据位、停止位、校验位
3、打开串口,发送数据AT\r\n(\r\n代表回车换行,因为单片机已经设置好的终止符)
结果如下:能正常收到回传的信息
注意:验证完串口能正常使用后记得关闭串口,因为不能同时打开同一个串口。
Matlab代码与解析
找到当前可用的端口号
Item=char(serialportlist("all")) %找到当前可用的串口Item
配置端口信息
Baud=double(115200); %设置的波特率
DataB=double(8); %数据位
StopB=double(1); %停止位
ParityB=char("none"); %校验位
SerialObject=serialport(Item,Baud,"DataBits",DataB,"StopBits",StopB, "Parity",ParityB); %串口配置
设置终止符CR/LF
此处设置了回车换行作为终止符,如果不想设置也行,每一次发送数据的时候就需要加上\r\n
configureTerminator(SerialObject,"CR/LF"); %设置终止符CR/LF
回调函数
第二个参数可以为
“terminator” :将回调设置为当终止符可供读取时触发。
“byte,count”:每当有新的 count 个字节可供读取时触发。
“off”:关闭回调。
configureCallback(SerialObject,"terminator",@readSerialData)
%% 回调函数
% function readSerialData(SerialObject,evt)
% ddate=readline( SerialObject)
% SerialObject.UserData =ddate;
% end
往串口写数据
writeline(SerialObject,"AT+interval=5");
writeline(SerialObject,"AT+switchdis="+open);
全部代码
串口通信
clc
clear %清除数据和关闭串口
aaa=0;
bbb=0;
gggg=0;
Item=char(serialportlist("all")) %找到当前可用的串口Item,只使用一个串口
Baud=double(115200); %设置的波特率
DataB=double(8); %数据位
StopB=double(1); %停止位
ParityB=char("none"); %校验位
SerialObject=serialport(Item,Baud,"DataBits",DataB,"StopBits",StopB, "Parity",ParityB); %串口配置
configureTerminator(SerialObject,"CR/LF"); %设置终止符CR/LF
%configureCallback(SerialObject,"terminator",@readSerialData)
writeline(SerialObject,"AT"); %实际上发送了AT和终止符(上文有说明)
%% 回调函数
function readSerialData(SerialObject,evt)
ddate=readline(SerialObject)
SerialObject.UserData =ddate;
end
总结
主要相关内容就这些,然后在此基础上再去一步步添加自己想要的功能。注意几个事项:
1、同一个端口不能被打开两次,想打开的时候得把已经打开的串口关闭;
2、设置正确的终止符在发送的时候就不用再手动添加终止符;