Author: Manba Cople
专业:IOT
说明:记录和输出学习内容
问题
最近,在做电赛题目时,需要对采集的串口数据进行实时显示,没想到强大的MATLAB中具有串口serial()函数可以单片机进行通信。因此,将本次所学分享于此。MATLAB代码
初始化串口代码
delete(instrfindall) %清除找到的串口!!! 必须否则串口打不开
clear s
s = serial('COM4'); % 使用默认设置创建串口s
set(s,'BaudRate',9600); % 设置波特率
s.BytesAvailableFcnMode='byte'; % 字节
s.InputBufferSize=4096; % 输入缓存
s.OutputBufferSize=1024; % 输出缓存
...
动态显示代码
for i=0:4068
data = str2double(fgetl(s)); % 读取串口数据
cnt=cnt+1;
t = [t i];
value = [value data]; % m是采集数据数组
save('data.mat','data','-ascii','-append');
stem(t,value,'filled'); % 只显示点
xlabel('t');
ylabel('data');
axis([i-100 i+100 0 5]);
grid on
drawnow;
end
...
注意
再用STM32的ADC采集的数据通过串口上传时,当采集速率比串口发送速率快的情况下,串口发送回导致部分数据丢失。对于这种情况,目前我还没有找到好的解决方法,我们团队当时时放弃串口上传数据。读者有好的解决方法欢迎留言评论!本文地址:https://blog.csdn.net/qq_43457539/article/details/109265962
您可能感兴趣的文章:
如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!
网友评论