先不管你的数据是如何组织的,你用这一句代码的意义是什么呢?if not Comm1.SendDataEmpty then //如果没有发送完成当前数据,你就接着发数据?我一般操作串口也用SPCOMM,但我对发送的数据与接收的数据都用一个数组来完成;
且先定义成一种数据类型;
type  TDataBuff=array [0..255] of char;
将对应的发送数据写入到数组内,然后发送;
var
  sendbuff:tdatabuff;
  sendlen:integer;
  //....组织数据
  comm1.startcomm;
  sleep(10);
  comm1.writecommdata(sendbuff,sendlen);
  //...在这儿为止,就发送完成了.把上面的功能写成一个功能函数,就可以实现发送数据到串口了;function SendDataToCOMM(sendbuff:tdatabuff;sendlen:integer):boolean;

解决方案 »

  1.   

    不好意思,我没有那句的,忘记删除了,
    数据进行第一次循环时能把数据顺利写进单片机内,但是进行第二次循环时,就不能写进了,该如何解决呢?
       try 
        s:=''; 
        sleep(100); 
        for i:=1 to 73 do  s:=s+chr(CStr[i]); 
        if Comm1.WriteCommData(Pchar(s),Length(s)) then SLEEP(100) else showmessage('fdf'); 
        if Comm1.WriteCommData(Pchar(s),Length(s)) then SLEEP(100) else showmessage('fdf'); 
       except 
        exit; 
       end; 
      

  2.   

    writecommdata();
    sleep();
    //同一条语句为什么要执行两次?