通过MATLAB控制串口通信

发布时间:2023/2/27 浏览数:2771
clear all;
close all;
clc;
dt = 0.05;
xlength=50;
length = int16(xlength/dt*0.8);
t=zeros(1,length);
m=zeros(5,length);
p = plot(t,m,'EraseMode','background','MarkerSize',5);
x=-1*xlength*0.9;
axis([x x+xlength -2.5 2.5]);
s = serial('COM3', 'baudrate', 4800);
s.InputBufferSize = 1048576; %1mb的缓冲区
fopen(s);
grid on;
n=1000;
ratio=63;
eva = 0;
for i=1:100
    ax1 = fread(s,1,'int8')/ratio;
    ay1 = fread(s,1,'int8')/ratio;
    az1 = fread(s,1,'int8')/ratio;
    eva = eva + sqrtm(ax1*ax1+ay1*ay1+az1*az1);
end
eva = eva/100;
cha = 1-eva;
maxa = 1;
mina = 1;
count = 0;
for i=1:n
    t=[t(2:end) i*dt];
    ax1 = fread(s,1,'int8')/ratio;
    ay1 = fread(s,1,'int8')/ratio;
    az1 = fread(s,1,'int8')/ratio;
    a = sqrtm(ax1*ax1+ay1*ay1+az1*az1) + cha;
    if a>maxa
        maxa = a;
    elseif a<mina
        mina = a;
    end
    if a>1.15
        count = count+1;
    end
    clc;
    count
    m=[m(:,2:end) [ax1;ay1;az1;a;1.15]];
    set(p(1), 'XData', t, 'YData', m(1,:));
    set(p(2), 'XData', t, 'YData', m(2,:));
    set(p(3), 'XData', t, 'YData', m(3,:));
    set(p(4), 'XData', t, 'YData', m(4,:));
    set(p(5), 'XData', t, 'YData', m(5,:));
    drawnow;
    x=x+dt;
    axis([x x+xlength -2.5 2.5]);
end
maxa
mina
fclose(s);

Copyright 2017-2024 © 嘉兴麦特莱博软件开发工作室
  • 网站备案号:浙ICP备18008591号-1