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

小弟我收到外部设备的这些信息,应该怎么转化为相应的数据呢

2012-02-24 
我收到外部设备的这些信息,应该如何转化为相应的数据呢?我采用SPCOMM控件,与外部设备进行串口通信,当我发

我收到外部设备的这些信息,应该如何转化为相应的数据呢?
我采用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;

热点排行