我来也:
1。我是不是要先发一个握手指令,然后验证对方返回的数据,然后继续发指令?命令中的地址是什么意思呢?
答:是,握手命令:
上位机发:
Char(02)(XON)+地址编号(即地磅编号:'A'~'Z')+'A'(握手)+异或校验高4位+异或校验低4位+Char(03)(XOFF)
如下位机应以相同命令,则表示双方建立连接成功.当然,你得知道地磅的编号
例当呼叫地磅'B'时:
Char(02)+'B'+'A'(握手)+异或校验高4位+异或校验低4位+Char(03)
2.握手成功后上位机接着发请求其他命令,如对地磅'A'读毛重,则发
Char(02)+'A+'B'(读毛重)+异或校验高4位+异或校验低4位+Char(03)
下位机应以:
Char(02)+'A+'B'(送毛重)+符号('+')+'123456'+'1'+异或校验高4位+异或校验低4位+Char(03)
其中,当毛重为正数时符号为'+',这里'123456'为毛重值,后面的'1'为小数点位置,在此为从'123456'的右边网左数第一位,即实际毛重值应为12345.6
即实际发送:
Char($02)+Char($41)+Char($42)+Char($2B)+
Char($31)+Char($32)+Char($33)+Char($34)+Char($35)+Char($36)+Char($31)+
Char($31)+Char($45)+Char($03)//异或校验=$1E,-->Char($31)+Char($45)
其他命令类似,
3.异或校验
除帧的头Char(02)与尾Char(03)外,其他各字符进行逐字符异或,这样将得到一个字节的结果,不一定为ASC码字符,
将其转为两个ASC码字符
4.接收时先捕捉帧头Char(02),再读地磅编号与命令号,接着根据命令号决定后续读入的字符个数...
5.具体编程应该比较容易,最简单就是用SpComm,不过,用控件就只能整个串接收完后再进行判断(还要与前面收到的字符串接起来判断),就不好用4。说的方法做了