发明名称 |
基于消息队列的外界数据接收方法 |
摘要 |
一种基于消息队列的外界数据接收方法,其特征是为每个与外界有交互的应用任务定义一个消息队列msgQEvent,作为该任务接收跟外界传入数据相关的事件的唯一方式;若有事件需要通知该任务,则往msgQEvent中放入一条消息,这样应用任务那边收到消息后,就可以被唤醒并执行相应的处理。本发明通过将应用任务接收外界数据的操作与定时器机制实现了分离,使应用任务可以按自己的需求定制每个操作的定时器。本发明的方法具有风险低,可实现多方数据通讯,方便灵活,可提高系统的运行效率。 |
申请公布号 |
CN101847107B |
申请公布日期 |
2012.07.04 |
申请号 |
CN201010135670.6 |
申请日期 |
2010.03.30 |
申请人 |
南京恩瑞特实业有限公司 |
发明人 |
蔡李峰;束元;朱骞 |
分类号 |
G06F9/46(2006.01)I;G06F9/50(2006.01)I;G05B19/418(2006.01)I |
主分类号 |
G06F9/46(2006.01)I |
代理机构 |
南京天华专利代理有限责任公司 32218 |
代理人 |
徐冬涛;瞿网兰 |
主权项 |
一种基于消息队列的外界数据接收方法,首先,为每个与外界有交互的应用任务定义一个消息队列msgQEvent,作为该任务接收跟外界传入数据相关的事件的唯一方式;其次,若有事件需要通知该任务,则往msgQEvent中放入一条消息,这样应用任务那边收到消息后,就可以被唤醒并执行相应的处理,其特征是所述的消息类型有数据接收完毕消息和数据接收超时消息;所述的数据接收完毕消息是:假设应用任务中接收外界数据的函数为recv函数,采用消息队列msgQEvent后,将recv函数从应用任务中挪出,换成从msgQEvent中等待消息,另外用一个独立的任务Task A单独进行recv操作,该任务的优先级要高于应用任务,当recv操作完成后,Task A往msgQEvent中放入数据接收完毕消息,应用任务从msgQEvent收到该消息后,就去获取具体的数据,然后进行下一步的处理;所述的数据接收超时消息是指:在应用任务从msgQEvent中等待消息之前,启动一个定时器,该定时器可以采用系统时钟实现,也可以用其他的时钟源实现,当定时器超时后,则往msgQEvent中发送数据接收超时消息,这样,应用任务就可以被唤醒,然后进行相应的异常处理。 |
地址 |
211110 江苏省南京市江宁开发区将军大道39号 |