各位大哥,小弟现在用DELPHI通过串口实时采集一个采集卡的数据。
我使用的是SPCOMM,数据采集后传到电脑是一个字符串,两个字节代表一个数据。
现在我已经将字符串转换为16进制,不知道如何每次取出两个字节,请指教!
还有就是,两个字节中的高字节的高4位代表通道号,低4位和低字节一共12位代表数据,数据应该如何取出。小弟是新手,希望大家帮助!!谢谢!!!

解决方案 »

  1.   

    可以直接将字符串转化为array of byte 这样就比较好处理了
      

  2.   

    得到2字节内容后:
    var
      A: ^Byte;
      B: ^WORD;
      Lane: Byte;
      Data: WORD;
    begin
      A:=@Buf; //Buf是你从串口读取数据的缓冲区.
      Lane:=A^ shr 4;//得到通道号.
      B:=@Buf;
      Data:=B^ and $0FFF;//得到数据.
    end;
      

  3.   


    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.   

    两个字节如:BA 41
    两个字节中的高字节的高4位代表通道号:B 再转成10进制
    低4位和低字节一共12位代表数据:A41  再转成10进制