白轶荣
摘要阐述了一种实现仪器菜单动态配置的方法王应用程序调用相应的仪器菜单解析程序,解析程序解析菜单数据配置叉件,并向王应用程序返回显示代码,显示代码经编译、链接,形成可执行的二进制文件,二进制叉件连行后显示相应的仪器菜单。运用该方法可以方便灵活地修改仪器菜单显示界面。
关键词菜单,仪器,XML;MVC
中图分类号TP315文献标志码A文章编号:1006-8228(2012)01-66-02
O引言
在编写仪器菜单的应用程序时,一般的做法是将菜单的名称、功能函数的地址(用c语言编写仪器程序是用函数的地址,用c++或JAvA则是某个类的某个方法)等直接写入应用程序里。但是,如果用户的需求不断变化,例如菜单名称的改动、菜单之间相对位置的变化、菜单在LCD上所显示的图形图像的变换等,这些都会导致程序员花费大量的时间去修改代码。而目.从MVC(Model-Vlew-Control数据模型一视图一控制,其中数据模型是内容,视图是显示效果,控制是如何管理数据、显示数据的方法)m的角度来分析,上述做法把Model(处理数据和完成某种特定功能)的代码和View(显示给用户看)的代码混淆在一起,维护起来很容易出错,往往是修改了一处,其他地方又出现bug,或者是修改过之后应用程序隐藏了某个当下难以发现的bug,或者未来就很难修改。这些都是因为control(控制)没有做好。以下我们将介绍一种实现仪器菜单动态配置的方法。
1实现仪器菜单动态配置的原理
实现仪器菜单动态配置的原理,如图1所示。
(1)主应用程序按照用户对仪器菜单的显示要求在解析程序库中调用相应的仪器菜单解析程序,
(2)解析程序解析菜单数据配置文件,解析完成后向主应用程序返回显示代码,
(3)对返回的显示代码进行编译、链接,形成可执行的二进制文件,
(4)仪器读取可执行的二进制文件并运行后显示相应的仪器菜单。
菜单数据配置文件为.XML(可扩展标识语言)格式的文件,解析程序对文件解析完成后向主应用程序返回c语言代码,c语言代码经编译、链接形成二进制文件,然后被导入仪器并运行。
本方法将仪器菜单的显示参数全部放在菜单数据配置文件中,应用程序中Model View的代码分离,程序结构简明清晰。在编写或修改Model(处理数据和完成某种特定功能)时与View(显示给用户看)无关。当用尸的需求发生改变时,程序员只需要灵活地修改菜单数据配置文件,不必改动主应用程序,大大地方便了程序维护工作。
2实现仪器菜单动态配置的流程
仪器菜单动态配置的具体实现过程如下。
(1)将仪器菜单的数据按照树形结构写入XML格式的菜单数据配置文件,并存储于PC机中。
以如下菜单为例
开机后用户界面一模式、窗口、轨迹、频标、光标、横轴设置、纵轴设置、系统。
模式一相噪模式、频谱模式、频率功率模式、瞬态模式,
窗口一相噪窗口、频谱窗口、频率功率窗口、瞬态窗口;
轨迹—轨迹开关、轨迹偏置、保持方式、持续模式,
频枥—顺标开关、频标类型、频标功能;
光标一光标开关、起始、终止、中心、跨度,
横轴设置—起始、终止、中心、跨度;
纵轴设置—起始、终止、中心、跨度.
系统—复位、文件、安全保密、网络设置、帮助。
经分析,上述仪器菜单的数据结构明显的成“树”形,而XML文件内部,数据之间的结构恰恰是树形的(XML是SGML的子集,符合标记语言的规范),所以采用XML文件来记录仪器的所有菜单就能从全局上把握整个“菜单树”,并且只要看到了这个XML格式的菜单数据配置文件的内容,就知道仪器上所有的菜单及菜单之间的层次结构。
(2)编写与各种菜单显示风格一一对应的仪器菜单解析程序,形成解析程序库,存储于计算机中。解析程序具备通用性,即当XML格式的菜单数据配置文件中的菜单内容、菜单位置等发生变化时解析程序仍然能够解析。菜单解析程序可以通过各种计算机语言编程实现。
用户可能会有多种菜单显示要求,如全屏显示菜单、滚动式显示菜单、折叠+滚动式显示菜单等,为了满足用户的不同需求,需要编写多个解析程序,一个解析程序对应一种显示风格,并形成解析程序库,听候调用。
(3)计算机的主应用程序按照用户对仪器菜单的显示要求在解析程序库中调用相应的仪器菜单解析程序。
(4)解析程序解析XML格式的菜单数据配置文件,解析完成后向主应用程序返回一个临时的c文件或者一段c代码。这些代码在主应用程序中起着显示代码的作用。
(5)在主应用程序中将返回的显示代码和其他程序一起编译、链接,形成可执行的二进制文件。
(6)将可执行的二进制文件导入仪器,执行该二进制文件。仪器菜单的名称、图形图像按照菜单数据配置文件中菜单的相对位置将显示到仪器屏幕上,然后再为每个菜单附加上其相对应的点击功能。
综上所述,由于解析程序具备通用性,因此当XML格式的菜单数据配置文件的菜单内容发生变化时,解析程序仍然能够解析变化后的格式的菜单数据配置文件。这样一来,当用户的需求发生改变时程序员只需要修改菜单数据配置文件就可以了,不必改动主应用程序。同时当用户对菜单的显示风格有了不同的要求的时候,程序员仅需要在主应用程序中把原来所调用的解析程序换成新的解析程序就可以。例如如果要将全屏显示菜单改为滚动式菜单,则程序员只需要把应用程序里原来调用“全屏显示菜单解析程序”改成调用“滚动式菜单的解析程序”,然后将重新编译链接得到的新的可执行文件再次导入到仪器上即可。
3结束语
仪器菜单动态配置方法的优点是将仪器菜单的显示参数写入菜单数据配置文件中,使得程序员仅通过修改菜单数据配置文件,不需要修改其他任何程序就可以方便地对菜单的内容进行调整,以向用尸显示不同的菜单名称及菜单结构,同时应用程序能够根据用户的菜单显示要求调用不同的解析程序解析同—个菜单数据配置文件,以显示出不同的风格的仪器菜单。