MATLAB与串口通信
1.连接资源
链接:https://pan.baidu.com/s/1esJqS1Lwxu5oPokpU-gPZw
提取码:m1wt
连接有源代码和录制的视频供大家参考
2主要过程
串口发送格式
MATLAB图像
核心代码
%%
clc;
global x; %x坐标
global t; %x坐标
global ii; %类似于步长
%串口发送数据的个数可以在这修改
global YData1; %串口的第一个数据
global YData2; %串口的第二个数据
global YData3; %串口的第二个数据
YData1=0;
YData2=0;
YData3=0;
x= [0];
ii = 0;
t = 0;
p1 = plot(x,YData1,'r','LineWidth',2.0,'EraseMode','background','MarkerSize',5);
hold on;
p2 = plot(x,YData2,'g','LineWidth',2.0,'EraseMode','background','MarkerSize',5);
hold on;
p3 = plot(x,YData3,'y','LineWidth',2.0,'EraseMode','background','MarkerSize',5);
hold on;
grid on;
%%
try
s=serial('com4'); %COM4
catch
error('cant serial');
end
%波特率 数据位 停止位 校验码类型 数据流控制方式
set(s,'BaudRate', 115200,'DataBits',8,'StopBits',1,'Parity','none','FlowControl','none');
s.BytesAvailableFcnMode = 'terminator'; %结束符类型
s.BytesAvailableFcn = {@call,p1,p2,p3}; %字节计数回调函数
fopen(s); %打开串口
pause;
fclose(s); %关闭串口
%delete(s); %从内存中删除串口信息
%clear s
close all;
%clear all;
function call(s, BytesAvailable,p1,p2,p3)
global t;
global x;
global ii;
global YData1;
global YData2;
global YData3;
out = fscanf(s); %读取串口的字符
data = str2num(out) %把读取到的字符转化为数字
YData1 = [YData1 data(:,1)]; %存储第一个数据
YData2 = [YData2 data(:,2)]; %存储第二个数据
YData3 = [YData3 data(:,3)]; %存储第三个数据
x = [x ii];
set(p1, 'XData',x,'YData',YData1);
set(p2, 'XData',x,'YData',YData2);
set(p3, 'XData',x,'YData',YData3);
t = t + 1;
axis([t-100 t+200 0 10]); %坐标轴的范围
ii=ii+1;
end
这篇文章主要程序框架引用了 CSDN博主「qwertyuj」的原创文章
原文链接:https://blog.csdn.net/qwertyuj/article/details/12108155
接受多个字符的思想来自于CSDN博主「 luckpl」的原创文章
https://blog.csdn.net/luckpl/article/details/52354873
主要实现了串口接受多个字符,并且能够显示图像的目的
如果有什么错误的地方欢迎大家批评指正,共同进步。