8

私は組み込みシステムに取り組んでおり、シリアルポートを介して特定のデータチャンクを送信するというドラマがあります。絞り込んでみたところ、メッセージに 0x9B が含まれていると、メッセージが破損していることがわかりました。

それで、 http://www.asciitable.com/で0x9b (155) を検索すると、見つからない! 奇妙な偶然じゃないですか!

これは特別なキャラクターか何かですか?

-編集- 申し訳ありませんが、これは 0x9b が原因ではなく、0x11 文字でした。XON/XOFF キャラクターのドラムロールはどれですか。私は誤ってコンピューター上で xon/xoff としてフロー制御を行っていましたが、デバイス上ではフロー制御を行っていませんでした! とにかく助けてくれてありがとう。

4

5 に答える 5

6

ANSI エスケープ シーケンスで0x9Bは、 は 1 文字の制御シーケンス イントロデューサです (よりよく知られている複数文字のバージョンはESC-[.

于 2010-04-15T05:29:02.907 に答える
3

0x9Bは、CSIまたは「制御シーケンスイントロデューサー」であり、制御コードのC1セットの一部です。http ://www.search.com/reference/C0_and_C1_control_codesを参照してください。

データがC1制御コードを処理するレイヤーを通過していると仮定すると、この文字の後に数バイトが欠落していることは驚くことではありません。これは、ANSIエスケープシーケンスの開始を示すために使用されるためです。一部のレイヤーが命令の一部としてバイトをピーリングしているため、バイトは消えています。詳細については、http://en.wikipedia.org/wiki/Control_Sequence_Introducerをご覧ください。

明らかに、これがあなたの問題であることを保証することはできませんが、あなたが説明した症状に基づいて、APIドキュメントを掘り下げ始めるところです。

于 2010-04-15T05:49:08.613 に答える
2

0x9B の前の文字が 0x10 (DLE - データ リンク エスケープ文字) である場合、表示される文字が失われている可能性があります。一部のデバイスは、制御コマンド インジケータとして DLE を使用し、その後の文字はコマンドです。DLE 文字がエスケープされていない場合、通常の兆候は、ストリーム内の 2 文字の損失、またはデバイスからの異常な動作です。DLE 文字を DLE でエスケープします。したがって、あなたの場合、データストリームに以下が含まれている場合:

... 0x10 0x9b ...

あなたは書かなければならないでしょう

... 0x10 0x10 0x9b ...

于 2010-04-15T06:14:00.507 に答える
1

これは 0x1B、つまり ASCII エスケープ文字で、8 番目のビット位置にパリティ ビットがあると思います (シリアル通信などから来ています)。

技術的には、ASCII セットの文字はすべて 0x7F 以下であり、0x80 から 0xFF までの文字は拡張ASCIIの一部です。通常、0x7F より上のコードの意味はさまざまであり、複数の文字セットの 1 つを正確に 1 バイトのサイズのコードで処理できます。残念ながら、この機能は、使用中の特定の追加文字セット (必要に応じて「コード ページ」) を知る必要がある場合にあいまいさをもたらします。
たとえば、質問で参照されている「ASCII」テーブルには、0x9B に関連付けられた文字がないように見えますが、他の多くの拡張 ASCII セットでは、これを「プレーン」/表示可能な文字 (例: >ISO-8859 の見た目の文字) に使用しています。 1、セント記号(cのような文字)と別のセットなど

したがって、0x9B 文字の考えられる意味は、基礎となるアプリケーションで使用されている [暗黙の] 文字セットに依存する可能性があります。しかし、前に述べたように、文字は 1 つのパリティ ビットで 7 ビット (したがって、「純粋な」ASCII 文字である可能性が高い) でエンコードされているように見えます。

于 2010-04-15T04:40:21.183 に答える
0

タイトルのためだけにこの質問に来る人のために: 0x9B/155は ASCII 文字ではないため、ASCII テーブルにはありません。ASCII 文字は 7 ビット幅しかないため、128 文字しかなく、155 文字はありません。

[コミュニティ Wiki は、実際には質問に答えていないため、タイトルのみです。]

于 2010-04-15T14:42:23.823 に答える