【技术实现步骤摘要】
本专利技术属于自动售票机系统领域,具体是一种Windows平台下毫秒级异步定时器的实现方法。
技术介绍
自动售票机是地铁自动售检票系统中最复杂的专用设备,技术涉及机械、电子、软件、控制、金融、射频等多个方面。Windows设计之初并不是以实时系统为目标的,所以Windows系统的时间精度一直不高,实际最小单位是15ms左右,导致的结果就是所有Windows的时间、线程相关的操作都无法以1ms来实现精确控制。自动售票机系统对实时性要求比较高,因此需要一种高精度的定时器来实现定时服务。自动售票机系统与相关设备(如硬币机)之间的通信都有一定的超时值来保证相应的通信质量,这些值通常都是毫秒级。高精度的异步定时器提高了系统的效率和准确性。
技术实现思路
本专利技术的目的在于提供一种有效的windows平台下毫秒级异步定时器的实现方法,它主要基于CPU时钟周期,用于实现毫秒级且对秒级进行精确控制,并将之用于自动售票机系统中,从而弥补Windows平台下定时不正确、同步方式定时所带来的实时性差等缺陷。实现本专利技术目的的技术解决方案为:一种Windows平台下毫秒级异步定时器的实现方法,具体方法如下:创建定时器管理类和退出事件;同时开启定时器巡检线程和秒变化巡检线程;定时器巡检线程检查退出信号,如果没有退出信号就调用定时器管理类的invokeIfTimeout方法,该方法首先得到当前时间的时钟周期数,然后遍 ...
【技术保护点】
一种Windows平台下毫秒级异步定时器的实现方法,其特征在于具体方法如下:创建定时器管理类和退出事件;同时开启定时器巡检线程和秒变化巡检线程;定时器巡检线程检查退出信号,如果没有退出信号就调用定时器管理类的invokeIfTimeout方法,该方法首先得到当前时间的时钟周期数,然后遍历在其中注册的定时器,如果定时器设置的超时值小于当前值,则说明已经超时,如果需要重置,则重新以定时间隔(M_INTERVAL)设置超时值,接着调用其中的invoke方法开启另一个线程执行定时器中的任务m_ElapsedCallback;最后清理完成任务的定时器;如此循环往复,直至收到退出信号;秒变化巡检线程检查退出信号,如果没有退出信号就重复不断地检查系统时间,若秒变化,则发送通知以更新时钟;首先,获得系统的时间,检查系统当前时间的毫秒数,如果该毫秒数小于n,则说明发生了秒变化;如果这一秒中没有调用过回调函数,就设置标志说明该秒的回调已经完成,然后调用其完成任务;否则设置一个标志说明该秒的回调没有完成;如果该值不小于n则让线程睡眠t ms再进行检查;如此不断重复直至收到退出信号。
【技术特征摘要】
1.一种Windows平台下毫秒级异步定时器的实现方法,其特征在于具体方法如下:
创建定时器管理类和退出事件;
同时开启定时器巡检线程和秒变化巡检线程;
定时器巡检线程检查退出信号,如果没有退出信号就调用定时器管理类的
invokeIfTimeout方法,该方法首先得到当前时间的时钟周期数,然后遍历在其中注册的定
时器,如果定时器设置的超时值小于当前值,则说明已经超时,如果需要重置,则重新以定
时间隔(M_INTERVAL)设置超时值,接着调用其中的invoke方法开启另一个线程执行定时器
中的任务m_ElapsedCallback;最后清理完成任务的定时器;如此循环往复,直至收到退出
信号;
秒变化巡检线程检查退出信号,如果没有退出信号就重复不断地检查系统时间,若秒
变化,则发送通知以更新时钟;首先,获得系统的时间,检查系统当前时间的毫秒数,如果该
毫秒数小于n,则说明发生了秒变化;如果这一秒中没有调用过回调函数,就设置标志说明
该秒的回调已经完成,然后调用其完成任务;否则设置一个标志说明该秒的回调没有完成;
如果该值不小于n则让线程睡眠
tms再进行检查;如此不断重复直至收到退出信号。
2.根据权利要求1所述的Windows平台下毫秒级异步定时器的实现方法,其特征在于:
定时器类对象包含:定时器ID(M_ID)、定时间隔(M_INTERVAL)、生命作用时间(M_
CBMAX...
【专利技术属性】
技术研发人员:徐骏善,汪惠芬,柳林燕,宋豪杰,宋柯,
申请(专利权)人:南京理工大学,
类型:发明
国别省市:江苏;32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。