基于Matlab脚本实现对串口数据的实时采集绘图

在工作路径中新建文件夹shang_wei_ji,新建两个m文件,包括main.mmy_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

最终的效果

在这里插入图片描述

  • 13
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值