MATLAB的串口处理脚本与实时画图-小白版
1.前言
本文主要介绍在MATLAB中如何配置串口、创建回调函数、串口数据处理过程与实时画图几个过程。考虑到目前网上资料较少且不完善,故照顾小白出个教程。
2.MATLAB配置串口
新建.m文件,输入function serial_text() ,并且保存.m文件名:serial_text.m,注意需要前后一致。
function serial_text()
clc;
delete(instrfindall);
try
s=serial('com14');
catch
error('cant serial');
end
set(s,'BaudRate', 115200,'DataBits',8,'StopBits',1,'Parity','none','FlowControl','none','terminator','CR/LF');
set(s,'Timeout',0.1);
s.BytesAvailableFcnMode='byte';
s.BytesAvailableFcnCount=16;
s.BytesAvailableFcn=@callback;
fopen(s);
pause(1);
```
1.首先开始clc清空,然后调用**delete(instrfindall)**清除全部MATLAB可能已经连接的串口。
2.com14是你设备连接到电脑序列号,然后set()就是设置串口的一些参数,不多做解释。
3.set(s,‘Timeout’,0.1);是发送指令后等待接收返回的时间。以下**s.**同理。
4.fopen(s); pause(1);打开串口并暂停时间1s
5.注意
s.BytesAvailableFcn=@callback
的@表示的是回调函数名为:callback
3.创建回调函数与串口数据处理、实时画图
新建.m文件,命名为callback.m,函数名为:function callback(s,BytesAvailable),括号中的是指输入的串口参数。
function callback(s,BytesAvailable)
global time;
global fid;
out = fread(s);
if out(2) == 87
if out(3) == 68
data1 = 10;
data2 = 10;
Sumerror =0;
end
else if out(2) == 71
if out(3) == 84
data2 = (out(10)-48)*10 + (out(11)-48) +(out(12)-48)/10;
fclose(fid);
else
data1 = 20;
data2 = 20;
end
else
data1 = 20;
data2 = 20;
end
end
plot(time,data2);
set(gca,'ytick',(10.0:.2:40.0))
set(gca,'yTickLabel',num2str(get(gca,'yTick')','%.1f'))
drawnow;
end
1.fread(s)是指串口s所接收到的数据
一次性读取整个数据缓存区
,然后根据帧头帧尾判断
2.此处out(x)指的是第x帧数据的ASCII码,减去48就是十进制的数字
3.判断处理完后,就将数据输入plot(x,y),x是横坐标,y是纵坐标
4.set(gca,‘ytick’,(10.0:.2:40.0))确定y轴的范围是10.0-24.0,步进值是0.2
5.drawnow;千万记得加上这句,不然数据不会实时更新
下一期更新如何保存数据到.txt吧