public static byte CalcXor(byte[] bs) {
byte result = 0;
for (byte b : bs) {
result ^= b;
}
return result;
}
海大艺高表协议和数据
广播读表号表数指令:
发送:
0E 0D 0B 03 FF FF FF FF 0B
功能码
返回:
0E 0D 0B 03 FF 01 00 00 F5
功能码
表地址01(十六进制数)
表数0(BCD码)
读取表数:
发送:
0E 0D 0B 02 01 FF FF FF F4
功能码
表地址01
校验和,将前面的所有数据异或后得出的数据即为校验和
返回:
0E 0D 0B 02 01 06 07 00 0A
功能码
表地址01
表数700
校验和,将前面的所有数据异或后得出的数据即为校验和
http://www.ip33.com/bcc.html
修改表地址命令:
发送:
0E 0D 0B 9A 05 FF FF FF 68 0E 0D 0B 9A 05 FF FF FF 68
功能码 功能码
表地址05(十六进制数),该地址为修改后的地址
表地址05(十六进制数),该地址为修改后的地址
该指令为将两条一模一样的修改表号指令发送两遍,即为修改表号,单独发一条,无法完成表号修改。需快速发两遍。
无返回指令。
测试数据:
波特率:1200,偶检验
[09:30:16.384] 0E 0D 0B 03 FF FF FF FF 0B
[09:30:16.615] 0E 0D 0B 03 FF 17 07 00 E4
表号:23 表数:700
[09:42:47.286] 0E 0D 0B 02 17 FF FF FF E2
[09:42:47.519] 0E 0D 0B 02 17 06 07 00 1C
[10:18:41.429] 0E 0D 0B 9A 05 FF FF FF 68 0E 0D 0B 9A 05 FF FF FF 68
[10:18:49.167] 0E 0D 0B 03 FF FF FF FF 0B
[10:18:49.396] 0E 0D 0B 03 FF 05 07 00 F6
表号变为5 修改表地址成功