spcomm接收问题如下://showmessage('123');//如果加上此句, cmd的值为true,不加cmd的值为false,我不想加上此句,但是又要收到数据后cmd值为true,没收到数据后cmd值为false,如何解决?!代码:
全局变量
var
cmd;procedure Tfrmtest.btntestClick(Sender: TObject);
begin
if  rbtndc.Checked then   
  viewstr:='';
  cmd:=false;
  form1.findmodel1;    //发送数据过程,收到数据后cmd值为true否则为false //showmessage('123');//如果加上此句, cmd的值为true,不加cmd的值为false,我不想加上此句,但是又要收到数据后cmd值为true,没收到数据后cmd值为false,如何解决?!   if not cmd then
   begin
    Memotest.Lines.Add('     '+'通信故障'+'             '+datetimetostr(now));
   end else
   Memotest.Lines.Add('     '+'通信正常'+'             '+datetimetostr(now));
 
end;

解决方案 »

  1.   

    感觉LZ的思路有点乱
    你可以通过
    接收到数据后来设置cmd啊
      

  2.   

    感觉LZ的思路有点乱
    你可以通过
    接收到数据后来设置cmd啊
      

  3.   

    cmd值是在接收事件里设置的。
    关键是能不能在上面的事件里完成呢?
    有没有解决办法呢?
      

  4.   

    肯定是有事件可以响应的. 等时间执行完毕之后,赋值cmd.
    简单的你可以加一个延时值,不停的轮询CMD是否做改变.如果超过那个值没有反应就是接收失败.
      

  5.   

    关键要等数据接收完成后,再做判断,
    延时函数也用了sleep(10000),延时10秒够了吧!但还是不行。
    但是只要用showmessage()代替sleep()就行!为什么?
      

  6.   

    要用Timer才行的
    我也遇到过你这样的问题的!后来用Timer来解决了!你的Timer调成0.5秒也会比你Sleep(1000000)有用的!