MATLAB / SIMULINK - 串行接收块

时间:2015-12-08 02:02:39

标签: matlab serial-port simulink

我目前正在Simulink的一个项目中工作。我试图让Simulink通过串口与电机控制器通信。但是,我非常挣扎。

我相信我已经找到了如何使用Serial Command块发送命令。但是,我正在努力尝试使用串行接收模块而且我正在努力奋斗。可以在此处找到Serial Receive的帮助文档。 http://www.mathworks.com/help/instrument/serialreceive.html

有几个问题: - 我不知道这个块如何缓冲传入的数据。是否只是在收到终止信号之前一直填充缓冲区?如果它一直接收没有终止信号的数据会怎样?

  • 多久检查一次这些数据?在Simulink循环期间,如果没有收到信号,会发生什么感觉到最后一次检查? Simulink会不会等待什么?

  • 我特别对数据大小和数据类型感到困惑,因为我是如何通过串行接收ASCII字符链的。

这里具体是我期望收到的。

我将发送ASCII命令' 0000IP'。

我希望收到' IP = 0000FFFF'。这是总共11个ASCII字符。这些ASCII字符需要8 * 11 = 88位。我试图将0000FFFF作为整数值输入Simulink。

如何分解此讯息? Simulink是否提供任何类型的ASCII转换器?我感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

您可以在blocks属性页面中设置一些终结符字符,我假设在您的情况下终结符将是' none'并且您将拥有要读取的恒定字节长度。将数据类型设置为byte(uint8)并将串行recv块的输出连接到Matlab功能块,您可以在那里进行Ascii检查。

char(block_input_signal)会返回你的ascii字符串,你可以用它做你想做的事。

启用阻止模式是设置异步/同步模式的设置。如果启用,则模拟将等待每个模拟步骤中指定的字节数。如果没有,它将不会阻止您的模拟蚂蚁在数据可用时立即输出新值。块的状态端口将通知您是否接收到新数据,它将处于活动状态1个周期(当数据时是新的。)