emWin 2天速成實例教程004_軟件定時器(Timer)和位圖片動畫

備註:(1)打開工程目錄下的"Exe\GUISimulationDebug.exe"即可看到效果。(2)看完教程000~005就基本會用emWin做項目,其他章節可以需要時再參考。
  emWin的TIMER是一個軟件定時器,它以OS_TimeMS變量的值作爲定時基準,而OS_TimeMS則通過一個硬件定時器每1ms中斷加1,在emWin內部程序不斷查詢OS_TimeMS的變化實現軟件定時。
  在很多應用場合,我們需要用到定時器,比如每隔一定時間查詢某一事件有沒有被觸發,每隔一定時間改變數字顯示以實現動態計數,每隔一定時間顯示一幅圖片實現圖片動畫等等….
  TIMER的使用是比較簡單的(請閱讀例程源碼),不過有幾個地方需要注意:(1)使用TIMER實現定時的精度是比較差的(但OS_TimeMS的值是精確的),如果需要精確定時請使用硬件定時器產生中斷實現。(2)用TIMER定時刷新數字或圖片顯示時,時間間隔不宜過短,比如需要實現一個毫秒級的計數器顯示,你當然不能每1ms刷新一次數字,比較合適的是每30ms刷新一次數字顯示即可(即計數器每30ms變化一次)。(3)TIMER不會因爲隱藏其父窗體而停止計數(當然有處理的方法,請閱讀例程源碼)。
  利用BmpCvt.exe工具(在Tool目錄下)將動畫BMP圖片轉成C文件,然後將此C文件加入emWin工程,並每隔100ms(WM_TIMER消息有效時)用IMAGE_SetBitmap()函數將不同圖片設置給IMAGE控件即可(emWin內部會自己處理更新,無需我們操心):



在例程中,其實是提供了一個emWin實現圖片動畫的模板,用戶需要做動畫時只需要在此例程的基礎上實現即可。還有就是由於emWin的模擬器是單顯存顯示,因此畫面難免會有"撕裂"現象,在雙顯存的GLCD上不會有這種現象:



源碼/軟件下載
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章