备注:(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上不会有这种现象:
源码/软件下载
emWin 2天速成实例教程004_软件定时器(Timer)和位图片动画
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
emWin 2天速成实例教程002_多个页面窗口切换
emwin
2019-02-22 23:37:39
emWin 2天速成实例教程005_控件聚焦和用户消息的使用方法
emwin
2019-02-22 23:37:39
emWin 2天速成实例教程003_Framewin和Window窗口控件和2D绘图
emwin
2019-02-22 23:37:38
Timer例子
liaojiande12
2019-02-22 23:37:07
简单实验验证RIP的holddown timer
慕楓
2019-02-22 21:07:28
linux timer
開源之星
2019-02-22 19:33:20
使用System.Threading的Timer&Quartz.net两种方式实现定时执行任务,防止IIS释放timer对象
tongling_zzu
2019-02-22 16:19:51
HTML Images - TechGeekBuzz
cloudytechi147
2021-10-16 15:58:01
docker image 管理
shy潤物無聲
2019-02-22 20:27:57
import com.sun.image.codec.jpeg.JPEGCodec;
leiming32
2019-02-22 19:38:42
Web Uploader文件上传插件
好奇喵
2019-02-22 16:01:56
TODO:一不顺眼就换字体Go之代码篇
OneTODO
2019-02-22 15:17:41
Reason: image not found
591XT_XYZ
2019-02-22 15:17:19
利用freemarker技术,填充word模板(插入图片)
haojie_jdk
2019-02-16 12:53:42
24小時熱門文章