我应该为使用 Pyserial 通过串口传输的数据实现校验和过程吗?

Posted

技术标签:

【中文标题】我应该为使用 Pyserial 通过串口传输的数据实现校验和过程吗?【英文标题】:Should I implement a checksum process for the data transmited through serial port using Pyserial? 【发布时间】:2016-10-11 02:46:07 【问题描述】:

这是我在 *** 上的第一个问题,我还在学习英语。所以我恳求你的宽容。

我正在做一个项目,我需要使用 Python(特别是 Pyserial 库)从 USB 串行端口接收数据。 arduino 通过串行电缆向我发送数据,然后我从 COM 端口接收数据。

我目前正在实施一个基本的校验和过程,以验证传输的数据是否完整到达。从 arduino 中,我添加了我正在传输的数据的值并设置为校验和字段,这也将被传输。然后,在计算机上,我对数据执行相同的操作,并验证总和是否等于校验和字段的值。

我的问题是。我应该担心这个或那个任务已经由 USB 协议执行了吗?

如果有人可以给我一些参考,那对我很有帮助。

这是我目前计算校验和的方式:


    s1: 425.2,
    s2: 426.4,
    s3: 78.2,
    s4: 785.2,
    chksum: 1715

【问题讨论】:

【参考方案1】:

USB 不纠正串行数据。 CPU 用来与串行端口通信的只是一个bus。您认为在 Arduino 和 PC 之间进行通信的协议中添加一些校验和是一个不错的想法。

串行端口使用的一个非常常见的硬件协议是 RS232。它包含一些使用parity 位的错误检测支持。如果奇偶校验位不正确,则接收到的字节将被丢弃。所以我认为这对你没有多大帮助。

【讨论】:

非常感谢您的回答。我会记住这一点。我不能投票,因为我还没有声望。

以上是关于我应该为使用 Pyserial 通过串口传输的数据实现校验和过程吗?的主要内容,如果未能解决你的问题,请参考以下文章

基于LabVIEW和Python的USB串口数据传输

python中pyserial模块使用方法

python中Pyserial如何实现RS485串口通讯

python的pyserial读取串口占用状态?

Python代码从串口连续接收可变数据

用Python串口实时显示数据并绘图pyqtgraph(详细教程)