【问题标题】:Add a parity bit to message bytes in Python在 Python 中向消息字节添加奇偶校验位
【发布时间】:2018-01-23 07:41:16
【问题描述】:

我想使用 pigpio 库通过串行链路使用 bit-banging 发送和接收 8 位二进制数据。另一方期望并发送带有添加的有效奇偶校验位的字节。不幸的是,pigpio 库中没有奇偶校验处理。但是,pigpio 库接受任意长度的块中的数据,因此我可以在将 9 位块呈现给发送例程(或接收 9位块并验证奇偶校验)。要发送的消息在缓冲区中作为 8 位二进制字节。 我正在查看 BitArray 函数,但我不知道如何用奇偶校验位扩展每个消息字节并用 Python 中的 9 位数据填充位数组。有人有建议吗?

【问题讨论】:

  • 请花一些精力来格式化您的问题,使其更易于阅读(例如,分成几段),并显示您迄今为止尝试过的内容,以便我们提供帮助。
  • 我的错误:pigpio 库中的 wave_add_serial() 函数不需要“任意长度的块”数据,而是 8 位的整数倍,即 8、16 或 32 位。

标签: python bitarray parity


【解决方案1】:

根据wave_add_serial() 的文档,您需要设置bb_bits=9

http://abyz.co.uk/rpi/pigpio/python.html#wave_add_serial

然后:

对于 bb_bits 9-16,每个字符将有两个字节。

因此,您需要提供格式为 9 位数据和 7 位无关位的两字节对的数据。这应该会让您的生活变得轻松,因为您的真实数据将简单地分散到原来两倍的字节中,奇偶校验存储在每个其他字节的第一位。

【讨论】:

  • 对!我的疏忽:我在 wave_add_serial() 中阅读了 bb_bits=9 参数,但忽略了该函数并不期望相应的确切位数,例如9,每个字符,而是整数字节数,在本例中为两个字节。是的,确实,这让我的生活更轻松。自我提醒:RTFM。
【解决方案2】:

看看struct 模块。您可以使用它来打包和解包二进制数据。

【讨论】:

    猜你喜欢
    • 2017-03-01
    • 2011-10-24
    • 2015-06-29
    • 2013-01-26
    • 1970-01-01
    • 2015-04-04
    • 2016-01-31
    • 2012-04-20
    相关资源
    最近更新 更多