众高手指教,关于MSComm串口通讯的问题,如何解析二进制数据?急!急!急!不够加分!!!
我用如下代码接收数据
procedure TForm1.MSComm1Comm(Sender: TObject);
var
vtmp,ovtmp:variant;
bTmp:Byte;
i,ireceived:integer;
begin
if mscomm1.CommEvent =2 then
mscomm1.InputMode:=comInputModeBinary;
iReceived:=mscomm1.InBufferCount;
ovtmp:=mscomm1.Input;
vtmp:=VarArrayCreate([0,17],varbyte);
vtmp:=ovtmp ;
end;
现在我要解析一个18byte的数据包
连续输出格式
STX A B C X X X X X X X X X X X X CR CKS
1 2 3 4 5 6
其中:
1、〈STX〉ASCII起始符(02H)。
2、状态字A、B、C。
3、显示重量 可能是毛重也可能是净重。6位不带符号和小数点的数字。
4、皮重 6位不带符号和小数点的数字。
5、〈CR〉ASCII回车符(0DH)。
6、〈CKS〉可选的校验和。
A的格式为前3位为小数点的位置
0 0 0 XXXX00
1 0 0 XXXXX0
0 1 0 XXXXXX
1 1 0 XXXXX.X
0 0 1 XXXX.XX
1 0 1 XXX.XXX
0 1 1 XX.XXXX
1 1 1 X.XXXXX
我怎样判断数据包并获得像状态字A每一位的置来确定数据的小数点位置呢?