matlab串行数据实时绘图

时间:2013-05-23 16:05:23

标签: matlab plot serial-port

我正在尝试在matlab上绘制实时序列值,但我无法通过任何演示成功。我的嵌入式系统已经发送了由串行终端检查的数据。当我试图让他们通过matlab时出现这样的错误:

Warning: Matching failure in format. 
???  In an assignment  A(I) = B, the number of
elements in B and
 I must be the same.

Error in ==> real_time_data_plot at 81 voltage(count) = fscanf(serialObject,'%f');  %#ok<SAGROW>

作为matlab中的序列我正在使用此文件:http://www.mathworks.com/matlabcentral/fileexchange/25519-collect-and-plot-data-from-an-instrument-in-real-time 在嵌入式方面,我只是发送固定值100,以减少错误案例概率为

sprintf(str,"%d\n",100);
USART_puts(USART2,str); 

代码可以绘制几个样本,但稍后它会因上面的错误通知而崩溃。你有什么建议吗? 感谢

1 个答案:

答案 0 :(得分:1)

错误消息:

  

在赋值A(I)= B中,B和I中的元素数必须为   同样的。

表示您的 fscanf(serialObject,'%f')向量与 count 的长度不同。如果你可以在一个这样的实例中检查 fscanf(serialObject,'%f')的输出,你会看到这种情况。假设count是一个整数,那么serialObject很可能包含多个元素。

一个简单的解决方法就是:

temp = fscanf(serialObject,'%f');voltage(count) = temp(1);

如果最终值是您感兴趣的值,您可能希望使用temp(结束)。

我不熟悉“USART_puts()”,但我的猜测是有一些积压形成,所以它偶尔会向serialObject发送多个更新。它也可能是发送一个空向量,其中大小(temp)将为0 x 0,这也会导致错误消息。