1

私は最初にシリアル通信に接触しました。手動通信プロトコルが付属しているシリアルデバイスとJavaを介して通信する必要があります。重要な部分、つまりコマンド部分だけを理解するのを手伝ってもらいたいと思いました。

FORMAT : <command><size><data><checksum>
<command> : 1 byte type : CAPITAL LETTER from 'A' to 'Z'
<size> : 1 byte type : char between 0 and 255
<data> : String composed of <size> bytes : Format is depending on the command
<checksum> Calculated as follow : checksum = -(<command> + <size> + [b]E[/b](<data>(i))) modulo 0x100   ([b]E[/b] sum simbol)

Command example : 0x43,0x10,0x87,0x31,0x2E,0x35 (What this means in string format?)

CheckSum calculation : 
  0x43+0x10+0x87+0x31+0x2E+0x35 = 0x16E (How to sum this ?)
  Then calcule it complement : -0x16E = 0xE92
  Then : checksum = 0xE92 modulo 0x100 = 0x92
4

1 に答える 1

0

私の便利な ASCII テーブルから 0x43 は 'C' です。サイズは 0x10 = 16 データは 0x87 ...

0x43+0x10+0x87+0x31+0x2E+0x35 = 0x16E (これを合計する方法は?)

「+」で追加するだけです

補数は「~」

1 バイトだけにマスキングするのは '& 0xff' です。これは、すべての演算をバイト単位で保持する場合は必要ありません。

于 2012-08-11T20:47:20.157 に答える