一个关于廷时的问题,请会的朋友帮我解答。 (50分)

  • 主题发起人 主题发起人 笨波
  • 开始时间 开始时间

笨波

Unregistered / Unconfirmed
GUEST, unregistred user!
我编写了一个通讯程序,数据发出以后发现没有返回数据,看看通讯规约原来是接心数据
必须要在发出命令后的300ms后才可以接收的,可我没写关于廷时的程序,那位老兄写过
或有现成的贴一个上来,相信好多人会感谢你的。我先谢谢了。分不多,五十分,如果还要
我加的话,还有五十分相送,谢谢了。
 
sleep(300);
 
agree with zhaohai9.
 
可以讲清楚点吗,SLEEP是个函数吗,就这么简单吗?
 
是个“睡觉”函数~

作用是使系统运行时间延迟(或暂停)~ :)
就象空循环一样
 
谢谢大家,我去试试。
 
sleep(300);
就是程序在哪里自己循环等待(睡眠)300ms的意思呀,这时,程序不能干别的。
 
是个函数,就这么简单,后悔100分了吗?
 
你们这些人太坏了,一句话就想把人家打发了~~
看我的:
Procedure Tfrm.Delay(DTime : LongInt);
Var
L : LongInt;
Begin
L := GetTickCount;
While (Abs(L-GetTickCount) < DTime) do;
End;
 
没有必要把!这个方法如果对方提前和少等一会再发送反馈信息也一样会出错的!
用一个变量来判别是否收到反馈信息REP:BOOLEAN;
在OnDataAvailable 事件处理函数里加入一个接收反馈信息的判别当,另外再写一个
等待反馈的函数循环检验是否REP=TRUE如果是则退出循环,当信息发送晚以后
调用等待函数,只要一收到反馈信息程序就可以继续进行下去了!
 
战鹰:高!!!
 
接受答案了.
 
忘了补充一点,要末需要采用线程技术要么需要用
FWSocket.ProcessMessages或Application.ProcessMessages;
让程序可以执行其他造作,不然如果一直没有反馈程序就是一个死循环!
如果需要还要判别超时!如果还有不清楚的我建议你看看ICS控件组的
SMTPPORT。PAS中的
function TSyncSmtpCli.WaitUntilReady : Boolean;
 
后退
顶部