工控中使用的精确延时函数
在工控领域,对时间的要求都很高,Delphi中自带的几个延时、定时器都是基于Windows消息机制,不是很准,只能用在对时间要求不高的地方。
下面的函数可以实现快速准确延时:
|
1 2 3 4 5 6 7 8 9 10 11 |
// 延时函数,MSecs单位为毫秒(千分之1秒) procedure Delay(MSecs: Longint); var FirstTickCount, Now: Longint; begin FirstTickCount := GetTickCount(); repeat Application.ProcessMessages; Now := GetTickCount(); until (Now - FirstTickCount >= MSecs) or (Now < FirstTickCount); end; |
GetTickCount();如果开机时间大于47天可能引起错误