小弟今初次使用SPCOMM编写串口通讯,我在调用WriteCommData()方法后,而其ReceiveData()事件却不触发,那小弟怎么可以取到我刚才写的数据呢?

解决方案 »

  1.   

    是否串口没有打开或者参数设置有问题?
    建议加入一下代码:
      try
        comm1.StartComm ;
      except
        messagedlg('串口已经打开',mtwarning,[mbok],-1);
      end;
      

  2.   

    procedure TfHandset.FormShow(Sender: TObject);
    begin
      comm1.StartComm;
    end;
    应在窗体显示时打开端口
      

  3.   

    我给你源码看看吧!!
     var 
      rbuf,sbuf: array[0..10000000] of byte;
    procedure TfHandset.FormShow(Sender: TObject);
    begin
      comm1.StartComm;
    end;procedure TfHandset.ActionLjcsExecute(Sender: TObject);
    begin
      sbuf[0]:=byte($C2); //帧头
      sbuf[1]:=byte($1);
      sbuf[2]:=byte($1);
      sbuf[3]:=byte($2);
      sbuf[4]:=byte($3);
      sbuf[5]:=byte($4); 
      sbuf[6]:=byte($5); 
      sbuf[7]:=byte($6); //帧尾
     senddata;//调用发送函数
    end;
      

  4.   

    好的[email protected]谢谢的啊!
      

  5.   

    我的写法和你差不多的了。
    begin
      sbuf[1]:=byte($f0); //帧头
      sbuf[2]:=byte($01); //命令号
      sbuf[3]:=byte($ff);
      sbuf[4]:=byte($ff);
      sbuf[5]:=byte($01);
      sbuf[6]:=byte($f0); //帧尾
      senddata;//调用发送函数    
    end
      

  6.   

    "在调用WriteCommData()方法后,而其ReceiveData()事件却不触发",因为你是向外发送数据而没接收数据嘛,给你几个方法试试:
    1。如果你的pc机上只有一个com接口,可以用一个金属线把他的2,3口短路,你发送数据后,就会触发ReceiveData()事件,接受发送的数据。
    2。如你有两个com端口,可用一条串口线把两个端口的2,3线对调,都接上母头,插在两个com口上,你打开两个端口,一个发送数据,一个接收数据,可以测试发送的数据。