首页 文章

MATLAB / SIMULINK - 串行接收块

提问于
浏览
0

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

我相信我已经找到了如何使用串行命令块发送命令 . 但是,我正在努力尝试使用串行接收模块而且我正在努力奋斗 . 可以在此处找到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

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

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

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

相关问题