这是我在 StackOverflow 上的第一个问题,我还在学习英语。所以恳请您的宽容。
我正在开发一个项目,需要使用Python(特别是Pyserial库)从USB串行端口接收数据。 Arduino 通过串行电缆向我发送数据,然后我从 COM 端口接收它。
我目前正在实施一个基本的校验和过程,以验证传输的数据是否完整到达。在 Arduino 中,我添加了正在传输的数据值,并将其设置为校验和字段,该字段也将被传输。然后,在计算机上,我对数据执行相同的操作并验证总和等于校验和字段的值。
我的问题是。我应该担心这个或那个任务已经由 USB 协议执行吗?
如果有人可以给我一些参考,这对我很有帮助。
这就是我目前计算校验和的方式:
{
s1: 425.2,
s2: 426.4,
s3: 78.2,
s4: 785.2,
chksum: 1715
}
USB 无法纠正串行数据。它只是 CPU 用于与串行端口通信的总线。您向用于 Arduino 和 PC 之间通信的协议添加一些校验和的想法是个好主意。
RS232 是串行端口使用的一种非常常见的硬件协议。它包含对使用“奇偶校验”位进行错误检测的一些支持。如果奇偶校验位不正确,则接收到的字节将被丢弃。所以我认为这对你的情况没有多大帮助。