各位大哥,小弟现在用DELPHI通过串口实时采集一个采集卡的数据。
我使用的是SPCOMM,数据采集后传到电脑是一个字符串,两个字节代表一个数据。
现在我已经将字符串转换为16进制,不知道如何每次取出两个字节,请指教!
还有就是,两个字节中的高字节的高4位代表通道号,低4位和低字节一共12位代表数据,数据应该如何取出。小弟是新手,希望大家帮助!!谢谢!!!
我使用的是SPCOMM,数据采集后传到电脑是一个字符串,两个字节代表一个数据。
现在我已经将字符串转换为16进制,不知道如何每次取出两个字节,请指教!
还有就是,两个字节中的高字节的高4位代表通道号,低4位和低字节一共12位代表数据,数据应该如何取出。小弟是新手,希望大家帮助!!谢谢!!!
var
A: ^Byte;
B: ^WORD;
Lane: Byte;
Data: WORD;
begin
A:=@Buf; //Buf是你从串口读取数据的缓冲区.
Lane:=A^ shr 4;//得到通道号.
B:=@Buf;
Data:=B^ and $0FFF;//得到数据.
end;
procedure TDM.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
iTmp: array[1..3000] of byte;
begin
if BufferLength <> 0 then
begin
Move(buffer^,PChar(@iTmp)^, BufferLength);
//使用3楼朋友方法处理
end;
end;
两个字节中的高字节的高4位代表通道号:B 再转成10进制
低4位和低字节一共12位代表数据:A41 再转成10进制