串行协议通信

时间:2012-08-11 20:24:28

标签: serial-port

我第一次接触串行通信时,我必须通过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

1 个答案:

答案 0 :(得分:0)

从我方便的ASCII表0x43是'C'。 大小为0x10 = 16 数据是0x87 ......

  

0x43 + 0x10 + 0x87 + 0x31 + 0x2E + 0x35 = 0x16E(如何对此进行求和?)

只需添加'+'

即可

补充是'〜'

掩盖到一个字节是'&amp;如果你以字节为单位保留所有算术,则不需要执行0xff'。