定時器85078_第1頁
已閱讀1頁,還剩5頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、VC中基于Windows的精確定時中國科學(xué)院光電技術(shù)研究所游志宇示例工程下載在工業(yè)生產(chǎn)控制系統(tǒng)中,有許多需要定時完成的操作,如定時顯示當(dāng)前時間,定時刷新屏幕上的進(jìn)度條,上位機(jī)定時向下位機(jī)發(fā)送命令和傳送數(shù)據(jù)等。特別是在對控制性能要求較高的實(shí)時控制系統(tǒng)和數(shù)據(jù)采集系統(tǒng)中,就更需要精確定時操作。眾所周知,Windows是基于消息機(jī)制的系統(tǒng),任何事件的執(zhí)行都是通過發(fā)送和接收消息來完成的。這樣就帶來了一些問題,如一旦計(jì)算機(jī)的CPU被某個進(jìn)程占用,或

2、系統(tǒng)資源緊張時,發(fā)送到消息隊(duì)列中的消息就暫時被掛起,得不到實(shí)時處理。因此,不能簡單地通過Windows消息引發(fā)一個對定時要求嚴(yán)格的事件。另外,由于在Windows中已經(jīng)封裝了計(jì)算機(jī)底層硬件的訪問,所以,要想通過直接利用訪問硬件來完成精確定時,也比較困難。所以在實(shí)際應(yīng)用時,應(yīng)針對具體定時精度的要求,采取相適應(yīng)的定時方法。VC中提供了很多關(guān)于時間操作的函數(shù),利用它們控制程序能夠精確地完成定時和計(jì)時操作。本文詳細(xì)介紹了VC中基于Windows

3、的精確定時的七種方式,如下圖所示:方式四:在精度要求較高的情況下,VC中可以利用GetTickCount()函數(shù),該函數(shù)的返回值是DWD型,表示以ms為單位的計(jì)算機(jī)啟動后經(jīng)歷的時間間隔。精度比WM_TIMER消息映射高,在較短的定時中其計(jì)時誤差為15ms,在較長的定時中其計(jì)時誤差較低,如果定時時間太長,就好象死機(jī)一樣,CPU占用率非常高,只能用于要求不高的延時程序中。如示例工程中的Timer4和Timer4_1。下列代碼可以實(shí)現(xiàn)50ms

4、的精確定時:DWDdwStart=GetTickCount()DWDdwEnd=dwStartdodwEnd=GetTickCount()dwStartwhile(dwEnd50)為使GetTickCount()函數(shù)在延時或定時期間能處理其他的消息,可以把代碼改為:DWDdwStart=GetTickCount()DWDdwEnd=dwStartdoMSGmsgGetMessage(TranslateMessage(DispatchMe

5、ssage(dwEnd=GetTickCount()dwStartwhile(dwEnd50)雖然這樣可以降低CPU的占有率,并在延時或定時期間也能處理其他的消息,但降低了延時或定時精度。方式五:與GetTickCount()函數(shù)類似的多媒體定時器函數(shù)DWDtimeGetTime(void),該函數(shù)定時精度為ms級,返回從Windows啟動開始經(jīng)過的毫秒數(shù)。微軟公司在其多媒體Windows中提供了精確定時器的底層API持,利用多媒體定時

6、器可以很精確地讀出系統(tǒng)的當(dāng)前時間,并且能在非常精確的時間間隔內(nèi)完成一個事件、函數(shù)或過程的調(diào)用。不同之處在于調(diào)用DWDtimeGetTime(void)函數(shù)之前必須將Winmm.lib和Mmsystem.h添加到工程中,否則在編譯時提示DWDtimeGetTime(void)函數(shù)未定義。由于使用該函數(shù)是通過查詢的方式進(jìn)行定時控制的,所以,應(yīng)該建立定時循環(huán)來進(jìn)行定時事件的控制。如示例工程中的Timer5和Timer5_1。方式六:使用多媒體

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論