2012-08-11 104 views
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 

回答

0

从我方便的ASCII表格0x43是'C'。 大小为0×10 = 16 数据是87H的...

×43 + 0×10 + 0×87 + 0X31 + 0x2E之间+ 0x35 = 0x16E(如何总结这一点?)

只是将它们添加“ +”

补体是‘〜’

屏蔽只是一个字节是‘& 0xFF的’,你如果你把所有的算术以字节为单位不需要做。

+0

关于 'C' 命令文件说: 命令:< 'C',为0x10,calibrationtype, “XX.XX”, “XX.XX”, “XXXX”,校验> COVAL,CO2val,Hcval 校准类型: b7:1点(用于现场)校准如果设置为1 b6:3点校准:低点1如果设置为1 b5:3点校准:中点2如果设置为1 。 。 。 你知道什么意思是“0x87”吗?因为“0x31,0x2E,0x35”接缝为1.5 C16'0x87'1.5'checksum' – jlemes 2012-08-11 21:50:48

+0

0x87是一个eeprom映射 – jlemes 2012-08-11 22:19:06