串行输入COM设备通过“流输入”块桌面实时仿真软件外部(SLDRT)万博1manbetx

12个视图(30天)
你好,
简而言之,我想模仿“串行接收”的功能块( https://de.mathworks.com/help/instrument/serialreceive.html )“流输入”块( https://de.mathworks.com/help/sldrt/ref/streaminput.html ),不知道如何去做。
解说:作为我的项目的一部分,我被迫在仿真软件的桌面实时运行我的代码万博1manbetx 外部 环境。但由于 串行 块只能在正常模式而不是外部模式,我需要有一些工作在这个,唯一的选择似乎流输入块。
例子:
在正常模式下我使用串行配置和串行接收模块如下:
一个消息包含的字节“a”开始和结束字节“\ n”。在目前是一个包含4个字节的值。这个我可以显示以下函数:
当我现在试图模仿这种行为与流块外部模式我试图这样做:
与董事会设置:
与相同的数据流在上面的例子中,鼻窦现在看起来像这样:
有人有一个想法,我做错了什么?一个问题是,流输入不使用一个字节开始,只是结束字节(不要越少我也试图进入a到消息终结者数组)。
此外我想收到一个消息包含3值和我不知道怎么做。
谢谢你提前为每一个提示。
最好的问候,
马克斯
2的评论
马克西米利安•贝克
马克西米利安•贝克 2021年8月20日
我终结者字节“\ n”和删除报头字节' A '这样我发送的消息只是5字节包括temrinator。我能说到目前为止关于这个设置是数据准备的港口给我正确的频率响应的消息在实际消息仍读如上图。问题因此躺在信息提取和格式化的方式,但我不擅长这一部分。我将坚持发布解决方案。

登录置评。

接受的答案

Jan Houska
Jan Houska 2021年8月20日
你好,马克斯,
流输入接收文本(ASCII)是专为数据块潜在变量的长度。因为你的二进制和固定长度的数据,输入包块是正确的块。为什么你越来越垃圾,而不是正确的数值是流输入块试图解释四个二进制字节ASCII文本,它不是。因此这不能工作。
祝你好运,简

答案(1)

马克西米利安•贝克
马克西米利安•贝克 2021年8月20日
编辑:马克西米利安•贝克 2021年8月20日
我仍然没能把“流输入”块工作。在阅读了一些信息并试图复制官方支持线程万博1manbetx https://de.mathworks.com/matlabcentral/answers/470722-how-to-use-stream-input-block-for-serial-communication-using-万博1manbetxsimulink-desktop-real-time 我改变了我的信息的终结者{' A ', ' \ n '} ' n ',在没有得到任何东西。这持续了几乎所有我尝试。
所以我想出了一个解决方案:我流sinusodial函数从Arduino由于串口COM3在我的电脑。消息是6个字节长,第一个字节的头,最后一个字节是终结者和4个字节之间是一个4字节浮点值,我必须重建。
而不是使用流的输入块给我的所有信息,我使用一个子系统和启用的形成 数据包输入 报头字节的块,我扫描重建的其他信息。
为此,我使用了从给出的信息和示例 https://github.com/leomariga/万博1manbetxSimulink-Arduino-Serial 在这里。请找到他的例子,我的仿真软件实现连接到这个答案。万博1manbetx我添加了一些指出,应该明确我所做的一切,为什么。
1评论
马克西米利安•贝克
马克西米利安•贝克 2021年8月20日
我仍然感兴趣,找到一个解决方案 流输入 块以来最初的想法似乎比我的方法更优雅。如果任何人有一个解决方案,请让我知道。

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!