基于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

最终的效果

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

上一篇:如何判断一个对象是否是空对象


下一篇:jQuery中的$.extend方法与$.fn.extend方法