首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

请问串口读数有关问题

2012-06-14 
请教串口读数问题串口读出18位数之后,要如何区分符号位,小数点位置?本人初学,看不明白说明,请各位指点一二

请教串口读数问题
串口读出18位数之后,要如何区分符号位,小数点位置?本人初学,看不明白说明,请各位指点一二,谢谢!
仪表说明如下:
连续输出格式为18个字节。
连续输出格式
STX SWA SWB SWC X X X X X X X X X X X X CR CKS
12 3 4 5 6
其中:
<STX>ASCII起始符(02H)
状态字A,B,C
显示重量可能是毛重也可能是净重,6位不带符号和小数点的数字
皮重值,6位不带符号和小数点的数字
<CR>ASCII同车符(ODH)
<CKS>可选的校验和

状态字A 
Bits0,1,2 
012小数点位置 
100XXXXXO
O1OXXXXXX
110XXXXX.X
001XXXX.XX
101XXX.XXX
Bits3,4 
43分度值因子 
01X1
10X2
11X5
Bit5恒为1
Bit6恒为1


[解决办法]
怎么凑好像都有问题,到底是18位还是18字节
如果说是18位,则,开始接受stx,cr要占18位,如何解释
如果是18字节,“状态字A Bits0,1,2 ”又只有三位。有好多无用字节?

[解决办法]
http://topic.csdn.net/u/20070427/03/16415E91-4833-49F3-96FF-8EC17B5A5160.html
[解决办法]
你这个已经自己分析出来了啊 
共18位:起始位(02)+状态值A(00110011)[XXXXX.X]+状态值B(无用)+状态值(无用)+6位无符号数字(净重)+6位数字+CR+CKS


023330202030303532342030303030300D43写为 02 33 30 20 20 30 30 35 32 34 20 30 30 30 30 30 0D 43,对应分析出来就可以了
[解决办法]
Dim SWA As Byte, bytPointState As Byte, bytMultiPle As Byte
Dim dblWeight1 As Currency, dblWeight2 As Currency
Dim a As Currency

SWA = Mid(strData, 2, 1)
dblWeight1 = Val(Mid(strData, 5, 6) & "&")
dblWeight2 = Val(Mid(strData, 11, 6) & "&")

bytPointState = SWA And 7
bytMultiPle = (SWA\8) And 3

Select Case bytPointState
Case 4
a = 10
Case 3
a = 0.1
Case 1
a = 0.01
Case 5
a = 0.001
Case Else
a = 1
End Select

'不清楚你的标度如何处理,假定是倍乘
If bytMultiPle = 2 Then
a = a * 2
ElseIf bytMultiPle = 3 Then
a = a *5
End If

dblWeight1 = dblWeight1 * a
dblWeight2 = dblWeight2 * a

热点排行