2010-12-01 30 views
1

PySerialを使用してシリアルポート経由でメッセージを送信します。シリアルコンストラクタのパラメータの1つは 'bytesize'です。私はシリアルを試みています。セブンビットとシリアル。ライトビットと違いを気付いていない。ドキュメントは少し曖昧で、私はPythonとシリアル通信の両方に新しいものです。 これは単にバイトが保持できる最大値を設定するのか、それとも符号付きバイトと何か関係があるのでしょうか? 8ビット以上の7ビットを使う理由を誰もが解明できますか? 私は検索していますが、答えが見つかりませんでした。PySerialモジュールの 'bytesize'

答えて

1

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

データは、各 キャラクタにおけるデータ・ビットの数が5(ボドーコード用)、 6(ほとんど使用されない)、7(真ASCII用)、8 (することができる

ビットこれは バイトのサイズに一致します)、または9(めったに が使用されます)のいずれの種類のデータでも、 8データビットは、 アプリケーションで一般的に使用されているほとんど です。 5または7ビット一般に は、テレプリンタなどの古い機器 でのみ意味があります。

ほとんどのシリアル通信デザイン は、各バイト内のデータビットをLSB(Least Significant Bit)より先に送信します( )。 この規格は、 「リトルエンディアン」とも呼ばれます。可能であれば、 はほとんど使用されず、 "ビッグエンディアン"またはMSB (最上位ビット)が最初にシリアル通信 です。 (のエンディアン参照)ビットの順序は通常 ビットですが、 のデータは、 の送信前にのみバイトスワップできます。ラッセルは、非常に高く評価

+0

「ほとんどのシリアル通信の設計は、各バイト内のデータビットを送信するLSB」ほとんどのシリアルハードウェアだけのバイトを提供し、ポスターはpyserial抽象少し離れ注文で発生する可能性があるのインタフェースインタフェース。一方、LSB標準[UART(RS-232を含む)]ではなくMSB標準[SPI、I2C] – SingleNegationElimination

+0

ありがとう。ですから、私はそれがちょうど8ビットで行くのがベストだと思っています。 – Jack

+0

@Jack、あなたはあなたが必要としているもの(一般的には8)もしあなたが両端を管理しているのであれば、ASCIIのみのデータに関連する(おそらく)必要条件の組み合わせと、冗長な8番目のビットのオーバーヘッドをスキップするようなパフォーマンスの必要がなければ、7ビットを使用する理由はほとんどありませんあなたにとって非常に重要です。 –

3

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

パリティチェックは偶数ビットのエラーを捕捉せず、データをまったく訂正できないため、あまり価値がないわけではなく、現代では8ビットデータを使用してエラー検出を行い、プロトコルの上位層での訂正。

簡単な答えはおそらく8ビットですが、シリアル接続のもう一方の端に何が期待されているかによって決まります。

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

+0

感謝:)再 – Jack

関連する問題