matlab实时接收串口并绘制折线图

matlab实时接收串口并绘制折线图.

可以将这个功能分为两个部分. 第一是使用matlab将串口数据接收并保存起来,然后再是将这个数据绘制出折线图.

matlab有一个serialport的接口可以使用,就是专门用来使用串口的.

我们首先需要的是打开串口. 在打开之前,我们需要根据实际情况设置好串口号和波特率.

port = "COM10"; % 串口号,您需要根据实际情况修改
baudRate = 115200; % 波特率

serialObj = serialport(port, baudRate);

configureTerminator(serialObj, "LF"); % 设置终止符为换行符
set(serialObj, "Timeout", 10); % 设置超时为1秒

打开串口后,我们就可以读取串口中的数据了. 由于我需要的数据是一行一个的,因此直接使用readline就可以了.但是读取的数据一般都是str类型的,需要进行类型转换.

newdata = readline(serialObj);
num = str2double(newdata);

以上部分就是打开串口并读取数据的内容了.

第二部分就是将这些数据保存起来,然后绘制折线图. 由于折线图是实时绘制的,因此我们需要先绘制一个空白的图,然后再将读取的数据添加进去,再进行重新绘制.

总体的代码如下:

% 检查是否打开了串口,如果打开了,则关闭该串口重新打开. 
if exist("serialObj")
    clear serialObj;
end

port = "COM10"; % 串口号,您需要根据实际情况修改
baudRate = 115200; % 波特率

serialObj = serialport(port, baudRate);

configureTerminator(serialObj, "LF"); % 设置终止符为换行符
set(serialObj, "Timeout", 10); % 设置超时为1秒

figure(1);
x = 0;
y = 0;
h = plot(x,y);
while true
    newdata = readline(serialObj);
    num = str2double(newdata);
    % if num>10
    %     disp([length(y),num]);
    % end
    y = [y,num];
    x = 1:length(y);
    set(h, 'XData', x);
    set(h, 'YData', y);
    % 强制刷新图形
    drawnow;
end

你可能感兴趣的:(matlab,单片机,开发语言)