調べる必要のある専門用語は「シリアル化」です。
これは、シリアル接続での興味深い問題であり、エンドツーエンドで使用できる文字に制限があり、文字ごとに8ビットを渡すこともできない場合があります。
特定の文字コードの制限はかなり一般的です。これが袖口からのいくつかです:
ソフトウェアフロー制御が使用されている場合、従来、制御文字DC1およびDC3(Ctrl-QおよびCtrl-S、XONおよびXOFFとも呼ばれる)は、他の送信者を開始および停止するために送信されるため、データとして送信できません。ケーブルの端。
一部のデバイスでは、NULおよび/またはDEL文字(0x00および0x7F)がレシーバーのFIFOから単に消えることがあります。
受信者がUnixttyであり、termioモードが正しく設定されていない場合、文字Ctrl-D(EOTまたは0x04)により、ttyドライバーがttyを開いているプロセスにファイルの終わりを通知する可能性があります。
シリアル接続は通常、バイト幅とパリティビットを含めるように構成できます。一部の接続では、8ビットバイトではなく、パリティ付きの7ビットバイトを使用する必要があります。(非常に古い)レガシーハードウェアに接続して、5ビットおよび6ビットバイト用に多くのシリアルポートを構成することも可能です。1バイトあたりの使用可能なビット数が8ビット未満の場合、バイナリデータを処理するにはより複雑なプロトコルが必要になります。
ASCII85は、7ビットデータと制御文字の制限の両方を回避するための一般的な手法です。これは、慎重に選択された85個のASCII文字コードのみを使用してバイナリデータを再書き込みするための規則です。
さらに、送信者と受信者の間のバイト順序については確かに心配する必要があります。すべてのシステムがIEEE-754浮動小数点を使用しているわけではないため、浮動小数点形式についても心配する必要があるかもしれません。
肝心なのは、純粋なASCIIプロトコルを選択することがより良い答えであることが多いということです。人間が理解できるという利点があり、シリアル接続の問題に対してはるかに耐性があります。浮動小数点データの塊を送信しない限り、実装の容易さによって表現の非効率性が上回る可能性があります。
受け入れるものは寛大で、放出するものは控えめにしてください。