-1

USARTからバイトを受信し、それらをメモリレジスタに入れています。バイトは、私が読んでそれに応じてメッセージで応答しなければならないコマンドです。1バイトを比較する方法を知っているので、複数バイトを比較するアルゴリズムを提案します。

たとえば、受信したバイトは16進数の16 04 32 01 00 32のようになります。長さが異なるため、比較がより困難になります。

4

1 に答える 1

1

メッセージの種類を明確に認識するのに十分なバイト数を比較するだけで済みます (この最初のステップでは気にする必要のない実際のデータ ペイロード)。ほとんどのシリアル プロトコルでは、指定された位置にある 1 バイトにすぎません。

メッセージの例を見ると、最初のバイトはメッセージの種類で、2 番目のバイトはデータ ペイロードの長さだと思います。その場合は、最初のバイト以上をチェックしてそれに応じてジャンプする必要はありません。これは、ほとんどの場合、メッセージ タイプ (最初のバイト) でインデックス付けされたジャンプ テーブルを介して行われます。

実際のメッセージ データ ペイロードを処理する関数は、データに対して実行したいことは何でも実行できますが、メッセージの処理方法を確認するためだけにメッセージ全体をチェックする必要はありません。

于 2012-09-26T08:51:57.627 に答える