3

シリアル クラスのバイトサイズ属性は、その接続に使用されるデータ ビット数として定義されます。奇数パリティを有効にすると、定義されたデータ ビットの 1 つがパリティを意味するように変換されますか? それとも、スタート ビットとストップ ビットの間に別のビットを追加するだけですか?

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 ]

どんな助けでも大歓迎です。ありがとう

4

2 に答える 2

1

パリティ ビットは、DB7 の後にエクストラ ビットとして追加されます。

ウィキペディアのRS232 タイミングに関するこの図を参照してください。いくつかのドイツ語のビットがありますが、パリティがデータ ビット 0 ~ 7 に加えて余分なビットであることがよくわかります。

通常、シリアル ポート ドライバから余分なデータ ビットとしてパリ​​ティ情報を受け取ることはありませんが、UART はすべてのデータ ビット + パリティ ビットの合計を計算し、結果が期待どおりでない場合はパリティ エラーを報告します。プロトコル (「偶数パリティ」の偶数ビット合計、「奇数パリティ」の奇数ビット合計)。

Multidropバス( Stackoverflow 14212660も参照)のようないくつかのエキゾチックな 9 ビット アプリケーションがあり、9 番目のビットはエラー チェック (「パリティ ビット」) の目的ではなく、何らかのモード切り替え/アドレス指定のために存在します。標準の「8 データ ビット」RS232/RS485 ハードウェアおよびドライバを使用して、このような 9 ビット アプリケーションをシミュレートまたは監視するための回避策として、一時的なパリティ変更を使用できます。

于 2014-03-01T12:22:39.697 に答える