mscomm可以有字符和二进制方式采集串口的数据.而我使用spcomm采集数据,不知道
spcomm采集上来的数据是那种形式:二进制, 字符 ,ASCII值还是其他?
下部仪器来的数据格式是: f0h 43h,06h等16进制. 我需要对这些16进制数据进行计算,请问如何做?

解决方案 »

  1.   

    另外,我也要发送数据到下部仪器.需要发送16进制数,spcomm好象能发送字符串,我可否通过以下方式发送16进制数08h.
       str1:=chr($08);
       发送函数(pchar(str1),1);
      

  2.   

    procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
      BufferLength: Word);
    var RBuf:PChar;
        a,b:integer;
    begin
     Rbuf:=Buffer;
     a:=ord(Rbuf^);
     b:=Ord((Rbuf+1)^)
    ..................
    endvar PSend:pchar
        str:string;
        str:='123456';
        PSend:=pchar(str);
    WriteCommData(PSend,length(s))
      

  3.   

    var PSend:pchar
        str:string;
        str:='123456';
        PSend:=pchar(str);
    WriteCommData(PSend,length(str));
      

  4.   

    感谢,
    我的理解是
     a:=ord(Rbuf^);取第一个16进制数, b:=Ord((Rbuf+1)^)取第二个,以此类推。能否解释一下
    ord()函数的具体作用。在我的win2000中,integer是32位的,而一个16进制数是占用了八位,因为涉及到负值的情况(这时使用2个16进制数),我将他们转换到integer还能保证他们是负值吗?
    分不成问题。
      

  5.   

    http://218.56.11.178:8020/web/index.aspx->下载基地->例程-硬件控制->spcom事例程序//