代码之家  ›  专栏  ›  技术社区  ›  Mawg says reinstate Monica

是否有通过串行端口传递零件号的约定?

  •  3
  • Mawg says reinstate Monica  · 技术社区  · 14 年前

    我有一些设备可以读取一个RFID标签,并通过串行端口传递标签的序列号。

    在我看来,对序列号的每个数字使用两个字节是“更好的”,特别是因为有些设备正在发送一个终止的0x0d 0xA(CR/LF)。

    现在我找到一个设备,每个数字使用一个字节,所以要发送“12”,它不发送0x31、0x32,而是发送0x12。这意味着我无法区分CR/LF和真正的0xA和0xD。我问并得到一些华夫饼关于它不重要,因为弦长是固定的-所以为什么麻烦与CR LF?而且,为了保持一致性,它们对CR/LF使用两个字节。

    正如您可能已经了解到的,我对这个项目还比较陌生,对不同制造商的设备之间的不一致有些困惑。

    这家公司的制造商很乐意为我更换固件。我应该要求他们对每个数字使用两个字节吗?

    2 回复  |  直到 13 年前
        1
  •  6
  •   Jimmie Clark    14 年前

    连载似乎从未成为标准。它的传输方式是标准的,但是发送的内容总是由硬件/软件的开发人员决定。大多数设备都有某种信息包。通常是这样的:startbyte、data、checksum和sumtimes~ checksum(校验和的倒数)和stopbyte。校验和有助于确保数据有效,但由于只发送了几个字节,因此很难进行校验和。

    回答你的问题。确保尽可能精确的数据是一个好主意。这意味着您甚至不想将CR/LF与标记ID混淆。您可以通过编程方式确保它不是CR和LF,然后是有效的ID,或者请求他们更改固件。似乎大多数公司都喜欢以明文形式发送串行数据。我不喜欢这样,因为它体积庞大,而且坦率地说,这是在浪费性能(如果您的过程中需要速度的话)。对我来说,读取包的每个字节并相应地解释更容易。你甚至可以要求他们做这样的事情。0xFF 0x00数据0数据1 0xFF。它使用两个起始字节和一个终止字节。它会发送更多的数据,但有助于确保获得有效的数据。在代码中,您可以在末尾检查0xFF 0x00和0xFF。如果你没有得到,你就没有在一个有效的包上。

    如果你不想使用数据包,你可以一起检查CR/LF,我希望制造RFID标签的公司不会使用CR/LF作为他们的ID。

    如果你觉得你想要更清晰,不想改变任何东西,我建议与制造商交谈,并要求一些示例接口代码,或关于确保数据准确的最佳方法的建议。他们应该以你是客户的身份来容纳你。

    1. Forming Data Packets Information
    2. Serial Communication Concepts
    3. Example of Serial Communication with a Device
    4. Very Good website on General Serial and Packet Interpretation with Code examples

    如果你需要进一步的帮助,请告诉我。

        2
  •  0
  •   DefenestrationDay Tom Jefferys    13 年前

    始终包含一个字节,该字节指示消息的长度-要么是整个消息,要么只是数据区域。它只需要一个字节(假设消息的长度为256字节),并对消息进行解析 许多的 更容易的。