通过com口连续发送几十条命令,想通过循环让其发送。
但必须是发送一条,接收硬件的应答成功后,再接着发送下一条。
如果其中接收到某条命令不正确,则停止此次的循环通讯,
这种循环发送接收要如何控制呢?请各位达人赐教

解决方案 »

  1.   

    是有应答,但是想通过一个按钮,单击这个事件后,利用一个循环发送命令
    定义了一个全局布尔变量,在应答成功后将这个设置为true,再发送下一条,可是没有起作用
      

  2.   

      for i:=0 to 22 do
      begin
        if not gANSWER then
        begin
          break;
          Memo2.Lines.add('失败!');
        end
        else
        begin
          CheckSendCmd;//具体发送命令过程
        end;
      end;
      

  3.   

    1、发送了命令后,用循环延迟片刻,等待通信结果返回
    2、判断通信结果,如果正确,那么继续执行,如果不正确,那么Break
      

  4.   

    1.发送指令
    2.从硬件接收应答指令
    3.在串口的接收事件里:判断应答指令是否正确
    4.在串口的接收事件里:如果正确则在执行另外一条指令的发送,否则不发送后面的指令,退出
    5.循环3、4的步骤
    注意:发送指令时要加上适当的延时sleep(100),自己定
      

  5.   

    简单点可以放个timer不停的检测全局变量,如果符合条件就执行下一个,不符合就退出。
    也可以将发送给com口的代码放到一个线程了,然后用WaitForSingleObject来判断线程是否执行结束了
    如果执行结束了就执行下一个操作。
      

  6.   

    基本思路:两个线程,一个comm对象,一个全局变量(发送信号),收数据线程监听comm口,取到数据解析。判断是否要继续循环。发线程可以挂起或者做死循环。等发送信号过来,再下一条。