【问题标题】:Matlab serial communication: fprintf inconsistent behaviourMatlab串行通信:fprintf不一致的行为
【发布时间】:2015-03-09 15:24:14
【问题描述】:

我正在编写一个脚本来与 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');

但这又什么也没做(尽管在命令提示符下可以正常工作)。

有人遇到过同样的问题吗?

【问题讨论】:

    标签: matlab serial-port printf arduino-uno


    【解决方案1】:

    原来问题的根源在于 fopen 函数的工作时间很长。 我之前曾尝试在它之后添加 1 秒的暂停,但没有看到任何改进,我将其删除。 现在我只是尝试添加更多时间(当前为 3 秒),脚本正确执行。

    总结一下:如果你有同样的问题,添加一个

    pause(3)
    

    在 fopen 和任何其他串口命令之间,脚本应该可以正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多