请教下大家 用delphi里面 mscomm控件发送这样一串十六进制:0AA400100100C20129
代码上要怎么写,以下是我写的,好像有点不行,各路神仙帮忙看看
在一个按钮下面的事件:
var
  senddata: array[1..20] of char;
  sendstr: string;
  restr: string;
  i: longint;
begin
  mscomm1.CommPort := 1; //指定端口
  mscomm1.Settings := '9600,N,8,1'; //其它参数
  mscomm1.InBufferSize := 1024; //接收缓冲区
  mscomm1.OutBufferSize := 1024; //发送缓冲区
  mscomm1.InputMode := comInputModeBinary; //接收模式
  mscomm1.InputLen := 0; //一次读取所有数据
  mscomm1.SThreshold := 0; //一次发送所有数据
  mscomm1.InBufferCount := 0; //清空读取缓冲区
  mscomm1.OutBufferCount := 0; //清空发送缓冲区
  mscomm1.PortOpen := true; //打开端口
  MSComm1.RThreshold := 16; //设置接收多少字节开始产生oncomm事件
  senddata[1] := chr($0A); //要发送的数据  0AA400100100C20129 
  senddata[2] := chr($A4);
  senddata[3] := chr($00);
  senddata[4] := chr($10);
  senddata[5] := chr($01);
  senddata[6] := chr($00);
  senddata[7] := chr($C2);
  senddata[8] := chr($01);
  senddata[9] := chr($29);
  sendstr := ''; 
  for i := 1 to 9 do
    sendstr := sendstr + senddata[i];
  mscomm1.output := sendstr;
end;

解决方案 »

  1.   

    var
      senddata: array[1..9] of Byte;
      sendstr: string;
      restr: string;
      i: longint;
    begin
      mscomm1.CommPort := 1; //指定端口
      mscomm1.Settings := '9600,N,8,1'; //其它参数
      mscomm1.InBufferSize := 1024; //接收缓冲区
      mscomm1.OutBufferSize := 1024; //发送缓冲区
      mscomm1.InputMode := comInputModeBinary; //接收模式   特别注意这里,你是二进制处理方式(也就是整数方式)
      mscomm1.InputLen := 0; //一次读取所有数据
      mscomm1.SThreshold := 0; //一次发送所有数据
      mscomm1.InBufferCount := 0; //清空读取缓冲区
      mscomm1.OutBufferCount := 0; //清空发送缓冲区
      mscomm1.PortOpen := true; //打开端口
      MSComm1.RThreshold := 16; //设置接收多少字节开始产生oncomm事件 这里也要注意了,要是你接收的数据长度是正好是16,如(FFFFFFFFFFFFFFFF)那就没问题,否则容易产生问题,一般是设为0的,具体看你自己的情况
      senddata[1] := $0A; //要发送的数据 0AA400100100C20129  
      senddata[2] := $A4;
      senddata[3] := $00;
      senddata[4] := $10;
      senddata[5] := $01;
      senddata[6] := $00;
      senddata[7] := $C2;
      senddata[8] := $01;
      senddata[9] := $29;
      sendstr := '';  
      for i := 1 to 9 do
      sendstr := sendstr + IntToHex(senddata[i],2);
      mscomm1.output := senddata;
    end;
    跟你发送多少位,没有关系,需要多少位就可以发多少位,mscomm1.OutBufferSize := 1024; //发送缓冲区,1024还不够啊?
      

  2.   

    還不夠???
    mscomm1.InBufferSize := 1024; //接收缓冲区
    mscomm1.OutBufferSize := 1024; //发送缓冲区