我们的完整技术支持人员不会监控此论坛。如果您需要员工成员的帮助,请从询问页面提交您的问题


登录要么登记在论坛中发布/答复。

为什么我的字符串与我的串行通信输出不匹配?


Whoneyc. 1月18日,2022 09:11 PM

我试图通过UMB协议气象站获得CR6,但我很麻烦。当我轮询传感器时,CR6似乎无法存储所有数据。我知道数据正在使用终端仿真器传输,但只有前几个字节存储在我的字符串中。到底是怎么回事?

删节代码:

公众录制为字符串* 128
公共umbpoll(8)只要我省略了如何为简洁起见表达这个命令。假设这是魔术的魔法。
公共Serialincount.
公共del10,del11,del12,del13作为字符串

Serialopen(COMC3,19200,3,100,128,4)
SerialFlush(COMC3)
SerialOutblock(COMC3,UMBPOLL,32)
延迟(0,150,MSEC)
serialincount = SerialInblock(COMC3,Instring,128)

Del5 = ASCII(中期(Instring,10,1))
del6 = ascii(MID(Instring,11,1))
del7 = ascii(MID(Instring,12,1))
DEL8 = ASCII(MID(Instring,13,1))


结果:
在第12个接收的字节之前,一切都是正确的,当一切报告ASCII 0.使用终端仿真器时,我可以看到正在传输和接收的正确值,包括从第12个接收的字节上的所有内容。为什么CR6没有忠实地从串行通讯记录我的数据?

del10 = 16'好
del11 = 0'好
del12 = 0'应该是07
del13 = 0'应该是08


Whoneyc. 1月20日,2022 08:32 PM

解决了。

这是字符串处理的空终止问题。SerialInblock没有什么是错误的。相反,字符串“打印”我在第11个字符(您可以在变量del11中看到)使用杀死自身。我解决了它的变化这个帖子,它利用MoveBytes忽略NULL字符。

登录要么登记在论坛中发布/答复。
Baidu