MATLAB的温度曲线串口处理脚本与实时画图小白

  • Post author:
  • Post category:其他




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吧



版权声明:本文为weixin_39092315原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。