数控机床控制软件界面消息传递的实现方法技术

技术编号:3819558 阅读:189 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供一种数控机床控制软件界面传递消息的实现方法,消息经过基于微软基础类库MFC的消息处理机制:消息进入函数窗口处理函数AfxWndProc;再进入窗口回调函数AfxCallWndProc;再进入发送消息的回调函数CWnd::WindowProc;再进入消息映射函数CWnd::OnWndMsg;再进入CWnd::OnCommand从基类调用起源类,在其中调用消息映射CCmdTarget类中的消息传递OnCmdMsg函数;处理的消息经过消息路由机制。本发明专利技术的方法,基于MFC建立一套消息机制,响应各种不同的消息的类,从而实现数控机床控制软件界面消息启动内核功能,实现将不同型号的数控机床的多变的界面同固定的内核相互联系。

【技术实现步骤摘要】

本专利技术属于数控机床软件应用领域,特别涉及一种数控机床控制软件界 面消息传递的实现方法。
技术介绍
制造业是国民经济的基础产业,制造业的水平高低是衡量一个国家工业 发达程度的重要标志。数控机床质量水平的高低,关系着国家制造业水平的 高低。作为数控机床的核心部分,控制软件的好坏直接影响了数控机床的性 能和销量。然而不同厂家,不同型号的数控机床对软件的功能、界面都有不同要求, 如果分别开发则成本太高。所以我们需要将软件相对固定的模块与多变的模 块相分离,尤其是内核功能调用与界面。然而分离之后界面同内核如何建立联系就成为亟待解决的问题。我们需 要一种机制来使多变的界面同固定的内核相互联系。
技术实现思路
本专利技术所要解决的技术问题是提供一种数控机床控制软件界面消息传递的实现方法,基于MFC建立一套消息机制,响应各种不同的消息的类,从而 实现界面消息启动内核功能。为了解决上述问题,本专利技术的技术方案是这样的-消息经过基于微软基础类库MFC的消息处理机制消息进入函数窗口处 理函数AfkWndProc;再进入窗口回调函数AfkCallWndProc;再进入发送消息 的回调函数CWnd::WindowProc;再进入消息映射函数CWnd::OnWndMsg; 再进入CWnd::OnCommand从基类调用起源类,在其中调用消息映射 CCmdTarget类中的消息传递OnCmdMsg函数。处理的消息经过消息路由机制。所述的消息路由机制是将响应处理函数分别分装在多个单独的类中,当 类生成一个对象,该对象被装入链表,通过该链表得到需要接收的消息的对 象。所述的类派生于CncTarget,维护CncTarget类对象的链表。 所述的类派生于CinputFormCtrl,维护CinputFormCtrl类对象的链表。 CncTarget类以及CinputFormCtrl类拥有函数OnCmdMsg。 界面框架代码中的消息处理函数OnCmdMsg中依次调用等待响应的对象链表中对象的函数OnCmdMsg。本专利技术的有益效果是提供基于MFC建立一套消息机制,响应各种不同的消息的类,从而实现界面消息启动内核功能,实现将不同型号的数控机床的多变的界面同固定的内核相互联系。附图说明图1是本专利技术的消息传递的流程示意图。 具体实施例方式为了使本专利技术的技术手段、创作特征、达成目的与功效易于明白了解, 下面结合具体图示,进一步阐述本专利技术。如图1所示,本专利技术的一种 的实施例,消息经过基于MFC的消息处理机制消息进入函数AfkWndProc; 再进入 AfkCallWndProc ; 再进入 CWnd::WindowProc ; 再进入 CWnd::OnWndMsg;再进入CWnd::OnCommand,在其中调用CCmdTarget类 中的OnCmdMsg函数。査看CCmdTarget类,发现从CCmdTarget派生的类都 可以处理命令消息并且OnCmdMsg是个虚函数,也就是说派生类可以通过重 写该函数来实现命令消息在各个类中串行直到响应。处理的消息经过消息路由机制。消息路由机制是将响应处理函数分别分 装在多个单独的类中,当类生成一个对象,该对象被装入链表,通过该链表 得到需要接收的消息的对象。所述的类派生于CncTarget或者CinputFormCtrl,维护CncTarget类或者CinputFormCtrl类对象的链表。CncTarget类和CinputFormCtrl类有两个共同的特点, 一是它们都直接或 通过继承间接拥有虚函数OnCmdMsg; 二是它们都维护一个该类对象的链表, 每当派生类生成一个对象,所调用的基类构造函数就将该对象装入链表,这 样就可以通过该链表得到需要接收消息的对象。最后在界面框架代码中的消息处理函数OnCmdMsg中就可以依次调用等 待响应的对象链表中对象的消息处理函数OnCmdMsg,从而实现消息路由机 制。通过将响应处理分散在多个Target类中(每个Target分配100个消息号), 我们可以在不更改其它代码的情况下添加Target,来增加新响应新功能,大大 增加了软件扩展的灵活度。下面将具体说明如何设计CNcTarge、 CinputFormCtrl类Target消息响应类及展示消息传递过程。CNcTarget类结构CNcTarget类继承自CCmdTarget,所以它有一个虚函 数OnCmdMsg; CNcTarget类中定义了一个static变量m—listNcTarget,它的类 型是CList<CNcTarget*, CNcTarget*〉,该静态变量用来保存所有CNcTarget派 生类的对象。CI叩utFormCtrl类结构CI叩utFormCtrl类继承自CThemeForm类,而 CThemeForm包含一个虚函数OnCmdMsg; CinputFormCtrl类中定义了一个 static 变量 m—listlnputFormCtrl , 类型是 CList<CInputFormCtrl*, CInputFormCtrl*>,该静态变量用来保存所有CinputFormCtrl派生类的对象。Target类Target类是指继承自CNcTarget的类,用来处理消息。为将消息出来分散在多个类中以便于灵活扩展,以类CNcIoTarget为例来 对Target类加以说明。首先要为处理IO响应的消息分配消息号,范围为snumIDCMD—NCIOTARGET—BASE = 41400, IDC函一TOOL一DETRUSION,IDCMD—SPIND—DISENTANGLE—TOOL,其次在类中要包含相应的消息处理函数afk一msg void OnDetrusionTool();afk—msg void OnUpdateDetrusionTool(CCmdUI* pCmdUI」; afk一msg void OnSpindDisentangleTool();afk—msg void OnUpdateSpindDisentangleTool(CCmdUP pCmdUI_);最后再加上对应数据结构,辅助函数等内容,这样类NcIoTarget的对象 就可以处理自己所管辖的消息。至此,我们已经拥有了处理消息的模块,接下来就需要将截获的消息传 送到相应模块。我们在窗口类CNcFrameWnd的OnCmdMsg函数中来完成这 个功能。如下列代码所示BOOL CNcFrameWnd::OnCmdMsg(UINT nID, int nCode, void* pExtra,...)〃...省略 POSITION _pos; int —count, —CNcTarget::CNcTargetList承_pListTarget = CNcTarget::GetNcTargetList();_pos = _pListTarget->GetHeadPosition();—count = _pListTarget->GetCount();for (_i = 0; —i < —count; —i++){if (_pListTarget->GetNext(_pos)->OnCmdM本文档来自技高网...

【技术保护点】
一种数控机床控制软件界面消息传递的实现方法,其特征在于: 消息经过基于微软基础类库MFC的消息处理机制:消息进入函数窗口处理函数AfxWndProc;再进入窗口回调函数AfxCallWndProc;再进入发送消息的回调函数CWnd::Wi ndowProc;再进入消息映射函数CWnd::OnWndMsg;再进入CWnd::OnCommand从基类调用起源类,在其中调用消息映射CCmdTarget类中的消息传递OnCmdMsg函数。 处理的消息经过消息路由机制。

【技术特征摘要】

【专利技术属性】
技术研发人员:宋秀龙郑之开
申请(专利权)人:上海奈凯电子科技有限公司上海维宏电子科技有限公司
类型:发明
国别省市:31[中国|上海]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利