我想使用 PySerial 通过串口发送消息。串行构造函数的参数之一是“bytesize”。我一直在尝试 serial.SEVENBITS 和 serial.EIGHTBITS 并没有注意到有什么不同。文档有点模糊,我对 Python 和串行通信都是新手。这只是设置一个字节可以容纳的最大值还是与有符号字节有关?谁能弄清楚为什么我会使用 7 位而不是 8 位?我一直在寻找,但没有找到答案。
谢谢
从历史上看,通常只通过串行连接发送 ASCII 文本,该串行连接适合 7 位,而第 8 位将用作奇偶校验标记,可以指示数据是否正确传输。
由于奇偶校验在偶数位上抓不到错误,根本无法纠正数据,所以价值不大,现代做法是使用8位数据,在更高的位上进行错误检测和纠正协议层。
简短的回答是您可能想要 8 位,但这取决于串行连接的另一端所期望的。
更新:从您的另一个问题看来,您正在对连接的两端进行编程,并对您的消息进行校验和,因此使用 8 位绝对是最简单的。
这是指每个传输字符中的数据位数。来自维基百科:
数据位
每个字符中的数据位数可以是 5(用于 Baudot 代码)、6(很少使用)、7(用于真正的 ASCII)、8(用于任何类型的数据,因为这与字节的大小相匹配)或 9 (几乎没有使用过)。8 个数据位几乎普遍用于较新的应用中。5 或 7 位通常仅适用于较旧的设备,例如电传打印机。
大多数串行通信设计首先发送每个字节 LSB(最低有效位)内的数据位。这个标准也被称为“小端”。“big endian”或 MSB(Most Significant Bit)优先串行通信也是可能的,但很少使用。(有关位排序的更多信息,请参阅字节顺序。)位的顺序通常不可配置,但数据只能在发送之前进行字节交换。