我的电子称型号是XK3100-B2+他的说明书里面串口发数的。是2、数据格式:每次发送数据有6帧,其定义如下:
第1帧: D0~D7 —— 0FFH(起始位)
第2帧: D0~D2 —— 为小数点位数(0-5)
D3~D4 —— 当前的工作模式:00 - 计重模式;01 - 计数模式;10 - 百分比模式;
D5 —— 1表示重量为负,0表示重量为正
D6 —— 1表示重量稳定,0表示重量不稳定
D7 —— 1表示重量溢出,0表示重量未溢出
第3帧: D0~D7 —— BCD1(显示数值的最低字节)
第4帧: D0~D7 —— BCD2(显示数值的中间字节)
第5帧: D0~D7 —— BCD3(显示数值的最高字节)
第6帧: D0~D7 —— 计重模式下的单位:1表示单位是磅,0表示单位是公斤;
里面那个第345帧是什么意思我还真不知道。。是不是比如 1000 1001 就表示89 ???是不是就是发六位的数据过来??请高手指点
第1帧: D0~D7 —— 0FFH(起始位)
第2帧: D0~D2 —— 为小数点位数(0-5)
D3~D4 —— 当前的工作模式:00 - 计重模式;01 - 计数模式;10 - 百分比模式;
D5 —— 1表示重量为负,0表示重量为正
D6 —— 1表示重量稳定,0表示重量不稳定
D7 —— 1表示重量溢出,0表示重量未溢出
第3帧: D0~D7 —— BCD1(显示数值的最低字节)
第4帧: D0~D7 —— BCD2(显示数值的中间字节)
第5帧: D0~D7 —— BCD3(显示数值的最高字节)
第6帧: D0~D7 —— 计重模式下的单位:1表示单位是磅,0表示单位是公斤;
里面那个第345帧是什么意思我还真不知道。。是不是比如 1000 1001 就表示89 ???是不是就是发六位的数据过来??请高手指点
需要按2进制方式接受.
第345帧协议的描述说了BCD码,1个字节表示2位10进制数,数据需要倒着使用.
第4帧: D0~D7 —— BCD2(显示数值的中间字节)
第5帧: D0~D7 —— BCD3(显示数值的最高字节)以下仅供参考:
应该是三字节BCD码,每个一字节(8位),你收到的时候应该是16进制表现形式的十进制数。比如串口你收到这三个字节(10进制)是18、52、86
你的做法是用hex分别转换它们到16进制hex(18)、hex(52)、hex(86)得到12 34 56
然后按高字节在前低字节在后组成563412的结果,有没有小数位看其它协议。
下面是上一任的哥们写的。。
Public Function weight(wei_rec() As Byte) As Single
Dim i As Byte
Dim tmp1, tmp2, tmp3, tmp4, tmp5, tmp6 As Byte
i = wei_rec(1) And &H7
If i > 0 Then
i = i - 1
End If
tmp1 = wei_rec(2) And &HF
tmp2 = (wei_rec(2) And &HF0) / 16
tmp3 = wei_rec(3) And &HF
tmp4 = (wei_rec(3) And &HF0) / 16
tmp5 = wei_rec(4) And &HF
tmp6 = (wei_rec(4) And &HF0) / 16
weight = (tmp6 * 100000) + (tmp5 * 10000) + (tmp4 * 1000) + (tmp3 * 100) + (tmp2 * 10) + tmp1
weight = weight / (10 ^ i)
End Function然后就是里面那个wei_rec 我找完他整个程序。没有定义过这个函数。。请高手指点
返回代表十六进制数值的 String。