gpt4 book ai didi

python - 带或不带奇偶校验的 RS232 字长

转载 作者:行者123 更新时间:2023-11-28 18:45:05 24 4
gpt4 key购买 nike

串行类中的 bytesize 属性定义为用于该连接的数据位数。如果我启用奇校验,它是否将定义的数据位之一转换为表示奇偶校验?或者只是在起始位和停止位之间添加另一位?

import serial

# Define a serial instance with 8 databits and no parity
my_com = serial.serial(bytesize=serial.EIGHTBITS, parity=serial.PARITY_NONE)
# My rs232 frame would now look something like:
[ START_BIT, DB0, DB1, DB2, DB3, DB4, DB5, DB6, DB7, STOP_BIT ]

# Change the parity settings
my_com.parity = serial.PARITY_ODD

# Do my frames now look like this
[ START_BIT, DB0, DB1, DB2, DB3, DB4, DB5, DB6, DB7, PARITY, STOP_BIT ]
# or do they look like this?
[ START_BIT, DB0, DB1, DB2, DB3, DB4, DB5, DB6, PARITY, STOP_BIT ]

如有任何帮助,我们将不胜感激。谢谢

最佳答案

奇偶校验位作为额外位添加在 DB7 之后。

参见 RS232 timing 上的插图来自维基百科。它有一些德语位,但它很好地显示了奇偶校验是如何在数据位 0-7 之外增加一个位。

请注意,通常您不会从串行端口驱动程序接收奇偶校验信息作为一些额外的数据位,但您的 UART 将计算所有数据位 + 奇偶校验位的总和,如果结果不是这样,则报告奇偶校验错误协议(protocol)所期望的(“偶校验”的偶数位和,“奇校验”的奇数位和)。

有一些奇特的 9 位应用程序,例如 Multidrop bus (另见 Stackoverflow 14212660 ),其中第 9 位的存在不是为了错误检查(“奇偶校验位”),而是为了某些模式切换/寻址。您可以使用 temporary parity changes作为使用标准“8 数据位”RS232/RS485 硬件和驱动程序模拟或监控此类 9 位应用程序的解决方法。

关于python - 带或不带奇偶校验的 RS232 字长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21565253/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com