我收到外部设备的这些信息,应该如何转化为相应的数据呢?
我采用SPCOMM控件,与外部设备进行串口通信,当我发出命令后得到以下信息:
7E 01 01 FF 09 06 DE 99 03 CA EF 82 EC CC 09 0D
再了一次命令时又得如下数据:
7E 01 01 FF 09 06 DD 4C 03 CB 21 82 EC CC 09 0D
设备说明书里写的返回数据为:
序号: 1 2 3 4 5 6 7 8
字节数:1 1 1 1 1 9 1 1
格式为:7EH 01H 01H FFH 0CH INFOH XXXX 0DH
INFO为返回的数据,每三个字节为一个数据,依次为:A1,A2,A3
测量数据为三字节浮点数:
BYTE1 BYTE2 BYTE3
阶码 原码
BIT7 BIT6 BIT8 BIT4 BIT3 BIT2 BIT1 BIT0
数符 阶符 阶
请问高手,如何把以上传过来的信号转化为我要要的那三个数据呢?请帮帮忙!我转化为十进制数据时,得来的是不对的,像DD就为221,这样怎么对呢?其中有一个数据实际是6点多的!还有一个是混度来着是:-3点多,怎么做呢?请指教!
[解决办法]
我计算的值是:
60.15625
6.525390625
-3.01171875
56.0625
6.5
-3.01171875
[解决办法]
返回的数据怎么定义的?每个数据是多少位十六进制数??
procedure Tfrm_icread.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
tmpArray:array[0..256] of Byte;
ArraySize: DWORD;
Count:DWORD;
tmpStr:string;
i:integer;
pStr:PChar;
begin //-------------接受返回信息-----------
pStr:=Buffer;
tmpStr:=string(pStr);
Dec(PStr);
tempb:= ' ';
for i:=0 to bufferlength-1 do
begin
inc(PStr);
tmpArray[i]:=Byte(PSTR^);
tempb:=tempb+IntToHEX(Ord(tmpArray[i]),2);
end;
pStr:= Buffer;
end;