MATLAB与Arduino的串行接口是很慢

问题描述 投票:1回答:1

我试图建立在Matlab的串行链路与Arduino板。从板上读取数据顺利。然而,将数据写入到板花费大约一秒钟为我发送的信息的每个块。

该代码我正在写数据:

s = serial(comprt,'BaudRate',9600,'DataBits',8); fopen(s); fprintf(s, '%c', 'c'); fprintf(s, '%u %u %u %u \n', [A B C D]); pause(1); fprintf(s, '%c', 'a'); pause(1);

A,B,C,d为0的任意位置的8位的数字 - 255,“C”和“a”是做在Arduino板的东西,并打入在板上的固件字符的命令。

如果我不包括暂停(1)命令,所以当我不从至少第二执行下一个命令停止MATLAB,串行信息没有得到通过。

谁能帮我加快写东西到串行端口?我与Arduino的编辑检查,当我通过他们的界面中,输入等效命令,一切都很好。因此,延迟不相关的Arduino板或设备驱动程序,这绝对是对事物Matlab的一面。

matlab interface serial-port arduino
1个回答
1
投票

我已经使用MATLAB颇有几分与Arduino的。例如:在这里看到(http://www.instructables.com/id/Arduino-to-MATLAB-GUI-Live-Data-Acquisition-Plotti/)[见造说明链接,我的GitHub的Arduino和MATLAB代码]和这里(https://www.youtube.com/watch?v=wY3oh2GIfCI)。

我认为对的事情你的Arduino侧您的问题。

该行添加到您的设置()函数:

Serial.setTimeout(100); //this will make the Arduino wait a max of only 100ms per incoming set of serial data, before moving on

在这里阅读:http://arduino.cc/en/Serial/SetTimeout

然后,逐步减少超时,直到你得到不好的结果,最大限度地减少浪费的等待时间。然后,再次增加了一点,以确保它设置得足够高。

这是一个快速和肮脏的方法。基本上,你的Arduino是设置为等待默认1秒继续上,一旦输入数据被读取之前。

更好的方法是使用一个终止字符。例如:有MATLAB发送一个终止换行符,并使用Arduino的功能Serial.readBytesUntil读取到终止字符。然后,串行输入超时永远不会达到,并且可以设置超时时间为长试(例如:1秒),而实际上不必等待延迟。

© www.soinside.com 2019 - 2024. All rights reserved.