前言: 通讯协议与耀华的相同
本篇有些纸上谈兵,因为没有柯力地磅系统实物来做对接,更多的是看他的产品说明书中的文档来实现数据对接。发现与耀华的协议是相同的,感觉应该代码可以通用。可以参考我前面关于耀华地磅对接的文章,这里主要说一下对一些之前疑惑问题的处理。
一、通讯协议格式
所传送的数据为仪表的当前重量。每帧数据由 12 组数据组成 。格式如下表所示:
二、 第10和11为异或校验的处理
异或=2⊕3⊕……8⊕9 异或校验高、低 4 位的确定:异或和高、低 4 位如果小于、等于 9,则加上 30h,成为 ASCII 码数字发送,例如:异或校验高 4 位为 6,加 30h 后,为 36h 即 ASCII 码的 6 发送;异或和高、 4 位如果大于 9,则加上 37h,成为 ASCII 码字母发送,例如:异或校验高 4 位为 B,加 37h 后,为 42h 即 ASCII 码的 B 发送。
三、异或校验简介
BBC(Block Check Character)信息组校验码, 因校验码是将所有的数据异或得出,因此也成异或校验,具体的算法是:将每个字节的数据(一般是是两个16进制的字符)进行异或后得到校验码。
列如: 16进制数据 01 A0 7C FF 02
计算: 01 xor A0 xor 7C xor FF xor 02 = 20
校验码是:20
四、异或校验的代码实现
知道了实现的逻辑,代码实现还是比较简单的。
public byte GetCheckCode(byte[] data)
{
byte CheckCode = 0;
int len = data.Length;
for (int i = 0; i < len; i++)
{
CheckCode ^= data[i];
}
return CheckCode;
}