我想使用PySerial通过串口发送消息。串行构造函数的一个参数是'bytesize'。我一直在尝试serial.SEVENBITS和serial.EIGHTBITS并没有注意到差异。文档有点模糊,我是Python和串行通信的新手。 这只是设置一个字节可以容纳的最大值,还是与有符号字节有关?任何人都可以清楚为什么我使用8位超过8位? 我一直在寻找,但没有找到答案。
谢谢
答案 0 :(得分:3)
历史上,通常仅通过串行连接发送ASCII文本,其适合7位,并且第8位将用作奇偶校验标记,其可指示数据是否正确传输。
由于奇偶校验检查没有捕获偶数位上的错误,并且根本无法校正数据,因此它没有那么有价值,而现代的做法是使用8位数据并进行错误检测和纠正在更高的协议层。
简短的回答是你可能想要8位,但这取决于串行连接的另一端所期望的。
更新: 从你的另一个问题来看,这听起来像你正在编程连接的两端,并校验你的消息,所以使用8位肯定是最直接的。
答案 1 :(得分:1)
这是指每个传输字符中的数据位数。来自wikipedia:
数据位
每个中的数据位数 字符可以是5(对于Baudot代码), 6(很少使用),7(真正的ASCII),8 (对于任何类型的数据,因为这匹配 一个字节的大小),或9(很少 用过的)。 8个数据位差不多 普遍用于较新的 应用。一般为5或7位 只有旧设备才有意义 比如电传打字机。
大多数串行通信设计 发送每个字节内的数据位 首先是LSB(最低有效位)。 该标准也称为 “小端”。也可能,但是 很少使用,是“大端”或MSB (最高位)第一个串行 通信。 (见Endianness for 更多关于比特排序。)的顺序 位通常不可配置,但是 数据只能在之前进行字节交换 发送。