首页 文章

如何不断更新情节?

提问于
浏览
2

我试图在Arduino的Matlab中“实时”绘图 . 我有以下代码来获取数据:

clear all; close all;clc;delete(instrfind({'port'},{'COM12'})); 
puerto=serial('COM12');
puerto.BaudRate=115200;
fopen(puerto);

for i=1:1000
    a=fscanf(puerto, '%d');
    v(i)=a;
    ++i;
end

fclose(puerto);
delete(puerto);

但是,有时我会得到一个错误,说明以下内容(参考变量a):

在赋值A(I)= B中,B和I中的元素数必须相同 . (第8行)中的错误v(i)= a;

所以我有3个问题:

  • 如何避免我提到的错误?

  • 如何连续绘制(v)?

  • 有没有办法从Arduino发送整数数组到Matlab?

1 回答

  • 0

    尝试这样的事情 . 使用串口的 BytesAvailableFcn . See Documentation

    function serialTest()
    
    lineHandle = plot(now,0);
    hold on;
    
    delete(instrfind({'port'},{'COM12'}));
    puerto=serial('COM12');
    puerto.InputBufferSize = 200; %Set to an appropriate number of bytes see docs
    puerto.BaudRate=115200;
    puerto.BytesAvailableFcnCount = 100;  %Set to an appropriate number see docs.
    set(puerto,'BytesAvailableFcn',{@bytesFcnCallback,lineHandle});
    drawnow
    fopen(puerto);
    
    function bytesFcnCallback(puerto,evtData,lineHandle)
    temp = fgetl(puerto);  %Read a single line from the com port.
    C    = textscan(temp,'%f');
    lineHandle(1).YData= [lineHandle(1).YData  C{1}];
    lineHandle(1).XData(end+1) = now;
    

    编辑:更新以显示如何连续更新绘图 .

相关问题