我正在编写一个与arduino交谈的脚本。 arduino侦听串口上的通信,并根据收到的命令行动。
如果我在Matlab命令提示符下工作,一切都按预期工作:我发送命令:
s = serial('COM4','BaudRate',9600, 'Terminator', 'LF/CR');
fopen(s);
fprintf(s, '%s','start');
pause(10;
fprintf(s, '%s','stop');
fclose(s);
并且arduino通过启用泵10秒钟做出反应,然后关闭它。
如果我使用脚本中完全相同的代码,则不会发生任何事情。 问题似乎存在于fprintf中,因为如果我从脚本打开串行通信(并保持打开状态),我可以从提示符发送启动/停止命令,它可以工作。
我尝试在脚本中添加行终止符
fprintf(s, '%s \n','start');
但是这也没有做任何事情(虽然它在命令提示符下工作正常)。
有没有人遇到同样的问题?
答案 0 :(得分:1)
事实证明问题的根源是fopen函数需要很长时间才能工作。 之前我曾试图在它之后添加1秒的暂停,但看不到任何改进我已将其删除。 现在我只是尝试添加更多时间(目前为3秒)并且脚本正确执行。
总结一下:如果您遇到同样的问题,请添加
pause(3)
在fopen和任何其他串口命令之间,脚本应该可以正常工作。