PySerial模块中的'bytesize'

时间:2010-12-01 19:25:49

标签: python size byte pyserial

我想使用PySerial通过串口发送消息。串行构造函数的一个参数是'bytesize'。我一直在尝试serial.SEVENBITS和serial.EIGHTBITS并没有注意到差异。文档有点模糊,我是Python和串行通信的新手。 这只是设置一个字节可以容纳的最大值,还是与有符号字节有关?任何人都可以清楚为什么我使用8位超过8位? 我一直在寻找,但没有找到答案。

谢谢

2 个答案:

答案 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   更多关于比特排序。)的顺序   位通常不可配置,但是   数据只能在之前进行字节交换   发送。