1

PySerial を使用してシリアル ポート経由でメッセージを送信したい。シリアル コンストラクターのパラメーターの 1 つに「bytesize」があります。serial.SEVENBITS と serial.EIGHTBITS を試してみましたが、違いに気づきませんでした。ドキュメントは少し曖昧で、私は Python とシリアル通信の両方に不慣れです。これは、バイトが保持できる最大値を設定するだけですか、それとも符号付きバイトと関係がありますか? なぜ8ビットよりも7ビットを使用するのか、誰かが明確にすることができますか? 私は検索してきましたが、答えが見つかりませんでした。

ありがとうございました

4

2 に答える 2

3

歴史的には、7 ビットに収まる ASCII テキストのみをシリアル接続で送信するのが一般的でした。8 番目のビットは、データが正しく送信されているかどうかを示すパリティ マーカーとして使用されていました。

パリティ チェックは偶数ビットのエラーを検出せず、データをまったく修正できないため、それほど価値がありません。現在の慣例では、8 ビット データを使用し、より高いビット数でエラーの検出と修正を行います。プロトコルのレイヤー。

簡単な答えは、おそらく 8 ビットが必要だということですが、シリアル接続の相手側が何を期待しているかによって異なります。

更新:あなたの他の質問から、接続の両端をプログラミングし、メッセージをチェックサムしているように聞こえるので、8ビットを使用するのが間違いなく最も簡単です。

于 2010-12-01T19:33:11.110 に答える
1

これは、送信される各文字のデータ ビット数を指します。ウィキペディアから:

データビット

各文字のデータ ビット数は、5 (Baudot コードの場合)、6 (めったに使用されない)、7 (真の ASCII の場合)、8 (あらゆる種類のデータの場合、これはバイトのサイズに一致するため)、または 9 です。 (ほとんど使われません)。新しいアプリケーションでは、8 データ ビットがほぼ普遍的に使用されています。5 ビットまたは 7 ビットは、通常、テレプリンターなどの古い機器でのみ意味があります。

ほとんどのシリアル通信設計は、各バイト LSB (最下位ビット) 内のデータ ビットを最初に送信します。この規格は「リトルエンディアン」とも呼ばれます。また、「ビッグ エンディアン」または MSB (Most Significant Bit) ファースト シリアル通信も可能ですが、めったに使用されません。(ビット順序の詳細については、エンディアンを参照してください。) 通常、ビットの順序は構成できませんが、データは送信前にのみバイト スワップできます。

于 2010-12-01T19:35:30.420 に答える