一种消息驱动人机界面的方法

文档序号:6435707阅读:161来源:国知局
专利名称:一种消息驱动人机界面的方法
技术领域
本发明涉及一种人机界面的相关技术,尤其是涉及一种消息驱动人机界面的方法。
背景技术
工业产品中经常会用到人机交互的操作,比如SMT(贴片机),流水线控制等大型设配的人机交互的控制通常采用工控计算机或者采用内部载入复杂操作系统的单片机来完成的。但是小型工业产品(比如电力仪表等终端设备)受到现场应用环境、成本、可靠性、运行实时性等条件的限制,无法也没有必要使用诸如winCE、Linux、vxworks等复杂的操作系统。如图1所示,现有单片机编写人机交互程序往往采用代码驱动的方式来完成,这种方法的实现包括预先规划所有的界面建立相应表格,再用分支语句或跳转语句来实现程序界面的跳转;当客户要求增加、减少、调整界面时表格要重新设计,工作量大而繁琐,尤其当界面很多的时候,出错概率大,大大增加了维护难度。

发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种提高了响应速度、增强了实时性的消息驱动人机界面的方法。本发明的目的可以通过以下技术方案来实现一种消息驱动人机界面的方法,其特征在于,包括以下步骤I)按键消息输入;2)按键消息捕获;3)将捕获的按键消息压入消息队列;4)将消息队列中最早的按键消息移出队列;5)判断移出的按键消息是否已注册,若为是,执行步骤6),若为否,执行空操作;6)执行被注册的事件;7)运行事件对应程序。所述的步骤I)按键消息输入具体为按键产生信号,通过中断或扫描方式,将按键信号转换成按键消息,其中每个按键有其独立的状态标志位,即每个按键的动作与各自的按键消息产生是一一对应的。所述的步骤2)按键消息捕获具体为21)根据按键的注册类型和当前的按键消息,由按键信息捕获函数判断本次按键消息是否有效,若为是,执行步骤22),若为否,执行空任务;22)并判断是单次有效还是连续有效,若为单次有效,则表示按键按下时,只产生一条与按键消息对应的有效信息,若为连续有效,产生多条与按键消息对应的有效信息。
所述的步骤21)中的注册类型包括去抖、上升沿触发、下降沿触发、单次有效、连续有效。
所述的步骤3)将捕获的按键消息压入消息队列具体为
31)判断消息对应的状态是否已满,若为否,执行步骤32),若为是执行步骤33);
32)将捕获的按键消息压入消息队列中;
33)放弃本次捕获的按键消息。
所述的事件的注册为当前界面程序中先注册该界面下有效的按键事件。
与现有技术相比,本发明具有以下优点
I)运用这个简化的消息机制简化了单片机界面程序的编写,提高了响应速度,增强了实时性,这对嵌入式开发是最重要的。
2)类似的简单消息运行机制可以方便的移植到其他微控制器项目上去,有广泛的应用前景。


图1为现有的人机界面开发流程图2为本发明的流程图3为本发明的按键与按键消息一一对应图4为本发明的按键消息捕获的流程图5为本发明的将捕获的按键消息压入消息队列的流程图6为本发明的消息对应的结构示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。
实施例
如图2所示,一种消息驱动人机界面的方法,包括以下步骤
步骤101、按键消息输入;
步骤102、按键消息捕获;
步骤103、将捕获的按键消息压入消息队列;
步骤104、将消息队列中最早的按键消息移出队列;
步骤105、判断移出的按键消息是否已注册,若为是,执行步骤106,若为否,执行空操作;
步骤106、执行被注册的事件;
步骤107、运行事件对应程序。
所述的按键消息输入具体为
由按键产生信号,用中断或扫描的方式,将按键信号转换成按键消息。
当外部物理按键被按下时,用相应的标志记录按键的状态,每个按键有其独立的
状态标志位,为了提高按键消息的可靠性,不复用状态标记。 按键消息输入,只对按键的当前状态作如实的记录,每个按键的动作与各自的消息产生是一一对应的,具体见图3。
如图4所示,按键消息捕获具体为21)根据按键的注册类型和当前的按键消息,由按键信息捕获函数判断本次按键消息是否有效,若为是,执行步骤22),若为否,执行空任务;22)并判断是单次有效还是连续有效,若为单次有效,则表示按键按下时,只产生一条与按键消息对应的有效信息,若为连续有效,产生多条与按键消息对应的有效信息。
所述的步骤21)中的注册类型包括去抖、上升沿触发、下降沿触发、单次有效、连续有效。
如图5所示,将捕获的按键消息压入消息队列具体为
31)判断消息对应的状态是否已满,若为否,执行步骤32),若为是执行步骤33);
32)将捕获的按 键消息压入消息队列中;
33)放弃本次捕获的按键消息。
其中消息队列结构如图6所示。
按键消息处理
将消息队列中最早的消息移出队列,如果此消息已被注册,则执行被注册的事件,否则执行空操作。
按键注册事件应用
初始化界面
用户初始化自己的界面程序。
用户程序进入界面程序前要做的初始化工作,这与本专利没有直接的关系,但作为一个完整的程序是不可缺少的一部分。
事件注册
在当前界面程序中先注册该界面下有效的按键事件(比如按键I的事件,按键2的事件.……按键N的事件),在此界面上无效的按键操作不要注册,若被误操作消息处理机制会执行空操作),这样可以确保按键在各个不同界面的有效性,减少程序员按键处理操作中的工作量,提高程序的可靠性。
运行内容
运行客户编写的界面程序,这是个死循环程序,防止程序退出。
这与windows窗体程序的机理是类似的。
事件处理
事件处理程序是用户编写的要运行的用户处理程序(比如,退出本界面进入其他界面)。
这和VC++编写事件程序是一样的。
同时这也很类似单片机程序中的中断服务子程序。
权利要求
1.一种消息驱动人机界面的方法,其特征在于,包括以下步骤1)按键消息输入;2)按键消息捕获;3)将捕获的按键消息压入消息队列;4)将消息队列中最早的按键消息移出队列;5)判断移出的按键消息是否已注册,若为是,执行步骤6),若为否,执行空操作;6)执行被注册的事件;7)运行事件对应程序。
2.根据权利要求1所述的一种消息驱动人机界面的方法,其特征在于,所述的步骤I)按键消息输入具体为按键产生信号,通过中断或扫描方式,将按键信号转换成按键消息,其中每个按键有其独立的状态标志位,即每个按键的动作与各自的按键消息产生是一一对应的。
3.根据权利要求1所述的一种消息驱动人机界面的方法,其特征在于,所述的步骤2)按键消息捕获具体为21)根据按键的注册类型和当前的按键消息,由按键信息捕获函数判断本次按键消息是否有效,若为是,执行步骤22),若为否,执行空任务;22)并判断是单次有效还是连续有效,若为单次有效,则表示按键按下时,只产生一条与按键消息对应的有效信息,若为连续有效,产生多条与按键消息对应的有效信息。
4.根据权利要求3所述的一种消息驱动人机界面的方法,其特征在于,所述的步骤21)中的注册类型包括去抖、上升沿触发、下降沿触发、单次有效、连续有效。
5.根据权利要求1所述的一种消息驱动人机界面的方法,其特征在于,所述的步骤3)将捕获的按键消息压入消息队列具体为31)判断消息对应的状态是否已满,若为否,执行步骤32),若为是执行步骤33);32)将捕获的按键消息压入消息队列中;33)放弃本次捕获的按键消息。
6.根据权利要求1所述的一种消息驱动人机界面的方法,其特征在于,所述的事件的注册为当前界面程序中先注册该界面下有效的按键事件。
全文摘要
本发明涉及一种消息驱动人机界面的方法,包括以下步骤1)按键消息输入;2)按键消息捕获;3)将捕获的按键消息压入消息队列;4)将消息队列中最早的按键消息移出队列;5)判断移出的按键消息是否已注册,若为是,执行步骤6),若为否,执行空操作;6)执行被注册的事件;7)运行事件对应程序。与现有技术相比,本发明具有提高了响应速度、增强了实时性等优点。
文档编号G06F9/445GK103049162SQ20111031533
公开日2013年4月17日 申请日期2011年10月17日 优先权日2011年10月17日
发明者季晓春, 左凌俊, 蔡守平, 朱海霞 申请人:上海安科瑞电气股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1