请教各位高手:怎样使用SPCOMM将一个字符串发送出去呀!!!!

解决方案 »

  1.   

    每次取字符串的一位,然后转换到byte一个一个发
    function TForm1.ComSendDate(str:TSendData):boolean;
    var rbuf:array of byte;
        max,i:integer;
        commflg:boolean;
    begin
      try  max:=6+length(str.Data);
      SetLength (rbuf,max); //重新设定缓冲数组的大小
      rbuf[0]:=byte($02);   //帧头
      rbuf[max-1]:=byte($03); //帧尾
      rbuf[1]:=ord(char(str.Addr[1]));
      rbuf[2]:=ord(char(str.Addr[2]));
      rbuf[3]:=ord(char(str.Func[1]));
      rbuf[4]:=ord(char(str.Func[2]));
      for i:=5 to max-2 do   //转换字符到ASCII
        rbuf[i]:=ord(char(str.Data[i-4]));  //发送主体
      for i:=0 to max-1 do
        begin
          if not comm1.writecommdata(@rbuf[i],1) then
            begin
              commflg:=false;
              break;
            end;
          sleep(2);   //发送时字节间的延时
          //if not commflg then messagedlg('发送失败',mterror,[mbyes],0);
        end;
      except  end;
    end;这是我程序中的一段,你仔细看“发送主体”那一段吧
    发送延时是一定要的
      

  2.   

    这样可能也行,你试试
    var
    s : pchar;
    begin
       s := '10001001';
       Comm1.WriteCommData(s,8);
    end;
      

  3.   

    http://www.kaer.cn/default.aspx
    上边有关于SPCOMM的例子
      

  4.   

    不用逐个字节发的,comm1.writecommdata(pchar(str),length(str));就可以。
      

  5.   

    我不是也写了啊
    var
    s : pchar;
    begin
       s := '10001001';
       Comm1.WriteCommData(s,8);
    end;
      

  6.   

    各位高手靖帮我解决一个有关动态链接库调用的问题:http://expert.csdn.net/Expert/TopicView1.asp?id=2053076,
    感激不尽!