基于Matlab脚本实现对串口数据的实时采集绘图
作者:互联网
在工作路径中新建文件夹shang_wei_ji,新建两个m文件,包括main.m和my_callback1.m
1.main.m
作用:变量的定义+串口参数的设置
clear all;
delete(instrfindall)%关闭已经打开的串口
clear obj1
%全局变量的定义
global obj1;%表示串口号
global data;%表示从串口取得的数据
global sendbuff;
global data1;
global data2;
global data3;
global dian_ya;
global x;%用于画图
%变量的初始化
x=0;
dian_ya=0;
data1=0;
data2=0;
data3=0;
global n;
n=0;
data = zeros(5,1);
sendbuff = zeros(1,8);
%串口参数的设置
obj1 = serial('com3');
fclose(obj1);
set(obj1, 'InputBufferSize', 100);
set(obj1, 'OutputBufferSize', 100);
set(obj1, 'BaudRate', 4800);%bps的设置
set(obj1, 'Timeout', 15.0);%如果出现timeout的warning就调大
set(obj1,'BytesAvailableFcnMode','terminator');%中断触发模式
set(obj1,'terminator',10);%以十进制Ascii码的10为中断标记
set(obj1,'BytesAvailableFcn',@my_callback1);%调用中断函数
fopen(obj1);%打开串口
my_callback1.m
作用:其为中断返回函数,用于接收数据,对数据进行处理,实时画图。
function my_callback1(obj1,event)%标准形式
%全局变量的声明
global data;
global data1;
global data2;
global data3;
global dian_ya;
global x;
%从串口读数据并对数据进行处理
data = fread(obj1 , 5);%在中断函数中,从串口读入5个字节
if length(data)==5
if data(2)=='.'
data1=data(1)-48;
data2=data(3)-48;
data3=data(4)-48;
dian_ya=data1+0.1*data2+0.01*data3;
end
end
%实时画图
disp(dian_ya);%在Matlab命令栏中输出
x = [x dian_ya];
plot(x);
axis([0 inf 0 3]);%坐标限制
title('From Dsp');
xlabel('Sample');
ylabel('Voltage(V)');
drawnow;
end
最终的效果
标签:obj1,set,ya,global,绘图,Matlab,串口,data 来源: https://blog.csdn.net/weixin_43475628/article/details/118882229