我有一些设备读取RFID标签并通过串口传递标签的序列号.
在我看来,对于序列号的每个数字使用两个字节是"更好的",特别是因为一些设备正在发送终止0x0D 0xA(CR/LF).
现在我发现一个设备每个数字使用一个字节,因此要发送"12"它不发送0x31,0x32,而是发送0x12.这意味着我无法区分CR/LF和真正的0xA和0xD.我问了一些关于它的问题,因为弦是固定的长度 - 所以为什么要打扰CR LF?而且,为了保持一致,它们每个都使用两个字节用于CR/LF.
正如您可能已经收集到的那样,我对这个项目相当新,并且对不同制造商的设备之间的不一致感到有些困惑.
这个制造商很乐意改变他们的固件以适应我.我应该让他们为每个数字使用两个字节吗?
Serial似乎永远不会成为标准.它传输的方式是标准的,但发送的内容始终取决于硬件/软件的开发人员.大多数设备都有某种信息包.通常类似于STARTBYTE,DATA,CHECKSUM和sumtimes~CHECKSUM(校验和的反转),也许是一个STOPBYTE.校验和可以帮助您确保数据有效,但只发送几个字节就难以进行校验和.
回答你的问题.确保尽可能准确的数据是一个绝妙的主意.这意味着您甚至不希望将CR/LF与您的标签ID混淆.您可以通过编程方式确保它不是CR和LF - 然后是有效的ID,或者请求他们更改固件.似乎大多数公司喜欢以纯文本形式发送串行数据.我不喜欢这个,因为它笨重而且坦率地浪费了性能(如果你需要速度在你的过程中).对我来说,更容易读取数据包的每个字节并进行相应的解释.你甚至可以要求他们做这样的事情.0xFF 0x00 DATA0 DATA1 0xFF.这使用2个开始字节和一个停止字节.它会发送更多数据,但有助于确保您获得有效数据.在你的代码中,你可以检查最后的0xFF 0x00和0xFF.如果你没有那个,
如果您不想使用数据包,您可以随时检查CR/LF,我希望构建RFID标签的公司不会使用CR/LF作为其ID.
如果您想要更清晰并且不想更改任何内容,我建议您与制造商讨论并询问一些示例界面代码,或者提供有关确保准确数据的最佳方法的建议.他们应该像您一样容纳客户.
如果您需要任何进一步的帮助,请告诉我.