我编了一个循环发送和接收判断的程序,用于串口通信,
并设置了一个定时20秒的程序,如果20s内不满足条件1 则自动退出这个循环。开定时器;
repeat
  //这个地方为什么一定要加上showmessage('');
  发送程序
  sleep(500);
  接收程序;
  判断程序;//判断内符合收敛则置条件1标志until 条件1;问题出在一定要在repeat后面加一个showmessage,否则程序必然死机。请问这是什么原因啊?

解决方案 »

  1.   

    再问一个很傻的问题:
    showmessage只要出现,程序是不是会暂停,直到按下确定键?
      

  2.   

    是的,这样可能死机,因为主线程没有得到控制权,所以你的接收函数收不到东西。建议增加Application.ProcessMessages;
      

  3.   

    Application.ProcessMessages;请教这个怎么使用呢?O(∩_∩)O~
      

  4.   

    Application.ProcessMessages; 
    使用意义:
    在大量的循环运算,又不想使用多线程时,为了计算机在运算时能响应用户的操作,又不破坏指令的执行.repeat 
      Application.ProcessMessages;  
      发送程序 
      sleep(500); 
      接收程序; 
      判断程序;//判断内符合收敛则置条件1标志 
      

  5.   

    通宵這樣
    vCount := GetTickCount;
    while (vCount + 5000 > getTickCount) do begin
      ...
      Application.processMessage;
    end;