gdsdyl
驱动牛犊
驱动牛犊
  • 注册日期2004-08-26
  • 最后登录2006-07-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2023回复:3

定时器不能定时触发,求助各位老大!!

楼主#
更多 发布于:2004-10-08 19:55
用evc开发的一应用程序中,主程序中用到一定时器用来定时刷新采集到的数据。工作线程采集数据,在开启多个线程的情况下,定时器不能定时触发,不知是什么原因?(如设定1000ms触发一次,结果会2000ms or 3000ms触发一次)。因原来用VC安下心来程序,第一次使用EVC开发,请各位老大帮帮忙啊!!如有相关资料也可发送到我的邮箱中:sdyl@21cn.com。并欢迎与各位朋友共同学习、探讨、进步!
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-10-09 13:43
这个问题应该可以解决,原来在ndis和kernel driver版块有段时间一堆人用win2k和nt做实时应用的,不知道怎么突然大家都有这种需求:),桌面系统做不了实时应用,这是先天性问题,但是ce的feature是明确提到其实时性特性的!虽然我还没有具体看它如何确保实时,但这应该是有保障的!

至于使用方式你可以查看msdn上相关部分,肯定有说明,我估计在创建你的线程时指定其优先级为实时优先级就可以了,


你说的这里的问题可能是由于没有启用实时机制,导致你的数据采集任务按常规线程处理,而得不到精度,在没有实时保障情况下使用os的timer这样的误差是正常的。

根据地的兄弟们,团结就是力量
gdsdyl
驱动牛犊
驱动牛犊
  • 注册日期2004-08-26
  • 最后登录2006-07-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-10-09 19:17
谢谢wxl_50685330的回复:
    定时器用在主线程中,不能设置主线程优先级。是不是在WINCE系统下,定时器的优先级低于其它的消息处理,只有在没有其它消息处理的情况下才会触发定时器事件啊?如果是这样,另建立一个线程,设定其优先级为实时,在该线程中完成原来主线程中定时器事件中的工作,这样应该能保证实时性吧?请wxl_50685330多指点!
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-10-10 13:21
产生延迟的原因很多,比如长时间关中断,高优先级任务工作繁重等等,由于操作系统的timer是根据system tick来定时的,每个tick将线程的timer减少一次,直到为0后变为就绪,所以这种定时抖动很大。


就按你说的方式办,问题不大。
根据地的兄弟们,团结就是力量
游客

返回顶部