我现在用如下一组数据类型为字符串
68 02 00 00 00 00 00 68 81 17 52 c3 33 33 33 33 33 33 33 33 33 33 33 33 
33 33 33 33 33 33 33 33 dd 58 16 
我把这一组数据发到掌抄的时候,所结收到的第一个字节为54不知道为什么,请帮忙解决。

解决方案 »

  1.   

    是不是少字节了?
    我以前用spcomm是有两个属性一个是..out..和..in..什么的,把这两个属性都设置成false就行了,这个没用过,你可以试以下
      

  2.   

    procedure TForm1.MSComm1Comm(Sender: TObject);
    var 
      outstring:string;
    begin
            outstring:='6802000000000068811752c33333333333333333333333333333333333333333dd5816'
            Mscomm1.PortOpen:=true;
            MSCOMM1.OutBufferCount:=0;
            MSCOMM1.Output:=outstring;
    end;
      

  3.   

    或者用spcomm,或者turbopowercomm试试
      

  4.   

    你这样发,是发 ascii 码,你收到的
    54 = 0x36, 也就是ascii的 6, 也就是你发送的第一个字符
      

  5.   

    可参考下面的代码来发送十六进制的数据:type
      TCharArray=array[0..1] of Char;
      PCharArray=^TCharArray;procedure TForm1.WriteCom(const Buf:array of Char;
    var
      V:Variant;
      P:PCharArray;
      i:Integer;
    begin
      V:= VarArrayCreate([Low(Buf), High(Buf)], varChar);
      P := VarArrayLock(V);
      try
         for i:=Low(Buf) to High(Buf) do P^[i]:=Buf[i];
      finally
         VarArrayUnlock(A);
      end;
      MsComm1.OutPut:=V;
    end;function TForm1.ReadCom(var Buf):Integer;
    var
      V:Variant;
      P:PCharArray;
      i:Integer;
    begin
      V:=MsComm1.Input;
      P := VarArrayLock(V);
      try
         for i:=VarArrayLowBound(V,1) to VarArrayHighBound(V,1) do
             TCharArray(Buf)[i-VarArrayLowBound(V,1)]:=P^[i];
      finally
         VarArrayUnlock(A);
      end;
    end;
      

  6.   

    也可参考:
    http://www.18show.cn/SpecialArticleInfo.aspx?ArticleID=2766