NMR(核磁共振)仪器控制软件开发 ——基于Java脚本引擎的Shell命令解析-毕业论文_第1页
NMR(核磁共振)仪器控制软件开发 ——基于Java脚本引擎的Shell命令解析-毕业论文_第2页
NMR(核磁共振)仪器控制软件开发 ——基于Java脚本引擎的Shell命令解析-毕业论文_第3页
NMR(核磁共振)仪器控制软件开发 ——基于Java脚本引擎的Shell命令解析-毕业论文_第4页
NMR(核磁共振)仪器控制软件开发 ——基于Java脚本引擎的Shell命令解析-毕业论文_第5页
免费预览已结束,剩余58页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本科毕业论文本科毕业论文 (科研训练、毕业设计) 题题 目:目:NMR(核磁共振)仪器控制软件开发(核磁共振)仪器控制软件开发 基于基于 Java 脚本引擎的脚本引擎的 Shell 命令解析命令解析 姓 名: 学 院:软件学院 系:软件工程 专 业:软件工程 年 级: 学 号: 指导教师(校内): 职称: 年 月 摘 要 NMR(核磁共振)仪器控制软件,作为 500MHz 超导核磁共振谱仪系统的随机软件, 将实现对谱仪控制,完成 NMR 实验设计及采样、数据的处理及仪器、用户管理等。本毕设 课题的研究重点在集各模块功能于一体的命令行模块的设计原理和实现上。 命令行模块基于 Java 语言的脚本引擎,实现了对 Shell 命令的解析。作为整个 RCP 系 统的一部分视图,该模块没有明显的独立功能,而是所有系统功能操作的命令集结以及实现 脚本的解析。它通过引入 Java 6 中对脚本引擎的支持,来实现引擎运作的底层机制。 本文首先对项目的相关背景及需求作了简要介绍,旨在说明课题的研究目的及意义。接 下来,本文对 NMR 谱仪控制软件系统的模块结构,系统运作流程,界面风格以及项目的特 色进行总体介绍,并让读者对系统的开发环境有个初步了解。 在接下来两章,是本课题的研究重点,即命令行模块的设计原理,实现方法。由于该模 块涉及到的是所有其他模块的功能命令化,因此该模块需要很好的处理好与各模块之间的参 数使用及代码维护。因此在开发命令行模块之前,对整个系统的数据构成,参数使用,进行 了相关说明,以便知晓如何深入使用和操作。 关键词关键词: 控制软件;Java;脚本引擎;Shell 命令 Abstract Controller software for The NMR (nuclear magnetic resonance) instrument, as the affiliated software of 500MHz superconductivity nuclear magnetic resonance spectrometer system, will achieve the purpose of spectrometer controlling, NMR experiment designing and sampling, data processing and the management of the user and the instrument. The research key of this topic is the module of command-line which will realize all of the functions of each module. Command-line module, which is based on the script engine of Java language, has realized the analysis of Shell commands. As parts of the views of entire RCP system, this module does not have its own functions obviously, but mass all of the functions of the system by commands. It realizes the operation mechanism by the support of script engine supplied by Java Version 6. First of all, the article makes a brief introduction to the background and requirements of this project, for the purpose of explaining the goal and the significance of this research. Secondly, this article gives an overall introduction to the module structure, the operation flow, the interface style as well as the feature of the project. And whats more, it will give a preliminary understanding to the readers about the development environment. In the coming two chapters, it gives the keystone of this topic, which is about the principle of the design of the command-line module and the methods of realization. As the command-line module involves the functions of all other modules, this module should have a good processing to other modules in parameter using and the code maintenance. So in the beginning, I give out a description of the system data constitution and the parameter using in order to let readers understand how to use them thoroughly. Keywords: Controller software; Java; Script engine; Shell command I 目录目录 第一章第一章 绪论绪论 1 1.1 课题背景简介1 1.2 NMR 谱仪及控制软件研究现状及其应用.1 1.3 课题的需求说明2 1.4 论文的主要工作和结构3 第二章第二章 NMR 控制软件系统设计控制软件系统设计 4 2.1 系统模块结构4 2.1.1 实验设计模块.4 2.1.2 数据处理模块.5 2.1.3 用户管理模块.5 2.2 系统流程图5 2.3 系统运行界面6 2.4 系统数据处理特色介绍.7 第三章第三章 系统的开发环境简介系统的开发环境简介.8 3.1 基本开发环境8 3.2 ECLIPSE RCP 介绍.8 3.3 ECLIPSE RCP 开发环境.9 3.4 主要相关插件介绍 11 第四章第四章 命令行模块的数命令行模块的数据据基础基础 .13 4.1 数据格式介绍13 4.2 系统的参数文件 13 4.2.1 参数类型和约束 13 4.2.2 参数树.14 4.2.3 参数的存储格式 14 4.2.4 参数的相关操作 16 II 第五章第五章 命令行模块的设计和实现命令行模块的设计和实现18 5.1 命令行模块的设计目标.18 5.1.1 功能命令提示符 18 5.1.2 脚本语言引擎19 5.1.3 信息提示.20 5.1.4 命令缓冲.20 5.2 命令行模块界面设计 .21 5.3 命令行模块脚本引擎的实现 24 5.3.1 脚本 API 功能介绍.24 5.3.2 构建脚本引擎.26 5.3.3 脚本引擎的运行上下文 28 5.3.4 使用脚本引擎解析脚本 31 5.3.5 脚本访问 Java 对象方法的高级实现32 5.4 命令接口定制33 5.4.1 定制接口33 5.4.2 功能代码整合.34 5.5 主要辅助功能的实现 .35 5.5.1 命令辅助提示的设计实现35 5.5.2 命令缓冲区的功能实现 .36 5.6 批量脚本执行的性能优化策略.37 5.6.1 编译脚本策略37 5.6.2 使用代理运行脚本.38 第六章第六章 总总结结39 致谢致谢.40 参考文献参考文献 .41 附录附录.42 III Contents Chapter 1 Introduction1 1.1 Project Background1 1.2 Present situation and application of the hardware and software of NMR 1 1.3 Requirement of the project.2 1.4 Main work and structure of the thesis3 Chapter 2 Design of the software system.4 2.1 System module structure4 2.1.1 Experiment designing module4 2.1.2 Data processing module 5 2.1.3 User management module.5 2.2 System flow chart.5 2.3 Introduction to the software interface.6 2.4 Features in the data processing of the system 7 Chapter 3 Development environment8 3.1 Basic environment8 3.2 Introduction to Eclipse RCP .8 3.3 Eclipse RCP Development environment9 3.4 Introduction to some plug-ins in use.11 Chapter 4 Basic data of the command-line module.13 4.1 Introduction to the format of the data .13 4.2 Parameters document of the system13 4.2.1 Type of parameters and their restriction 13 4.2.2 Parameters tree .14 4.2.3 Memory format of parameters14 4.2.4 Operation to parameters16 IV Chapter 5 Design and realization of command-line module.18 5.1 Design purpose of the command-line module18 5.1.1 Command interface of function18 5.1.2 Engine of the script 19 5.1.3 Information prompt.20 5.1.4 Commands buffering.20 5.2 Interface design of command-line module 21 5.3 Realization of the script engine.24 5.3.1 Introduction to script API24 5.3.2 Discovery and creation of script engine.26 5.3.3 Context of the script engine .28 5.3.4 Running the script by engine31 5.3.5 Advanced realization of accessing Java methods by script.32 5.4 Complements of command-line interface.33 5.4.1 Making interfaces.33 5.4.2 Transplanting the code.34 5.5 Realization to some main affiliate functions .35 5.5.1 Realization of the prompt of commands.35 5.5.2 Realization of the commands-buffer 36 5.6 Optimization strategy of the execution of batch scripts37 5.6.1 Compiling the script37 5.6.2 Analyzing script by agent38 Chapter 6 Conclusions .39 Acknowledgments.40 References.41 Appendix42 厦门大学本科毕业论文 - 1 - 第一章第一章 绪论绪论 1.1 课题背景简介课题背景简介 “300MHZ-500MHZ 核磁共振波谱仪的研制”是“十一五”前三年精选的 13 个重点攻关课 题之一,属于国家重点科技支撑项目。这些课题是新时期,为了贯彻落实国家中长期科学 和技术发展规划纲要( 2006-2020 年) ,提升国产科学仪器设备的市场竞争力,增强科研 自主装备能力,有效支撑我国科技自主创新和经济社会发展,科学技术部于 2006 年初向全 国各界征集“十一五”科学仪器研究开发项目建议,并召开 20 多次会议征求 300 多位专家意 见,历时十个月,最后确定的重点攻关内容。 该攻关课题的目标是:“从自主创新研究核磁共振波谱仪核心技术入手,发展核磁共振 应用软件,系统集成核磁共振波谱仪,建立国家核磁共振波谱仪研制平台,提高和增强核磁 共振及相关领域的持续创新能力和国际竞争力。 ”经专家评审和综合考察,2006 年末科学技 术部公告确定武汉物理与数学所为课题承担单位,叶朝辉院士为课题负责人。课题组聘请国 内外磁共振波谱学专家和管理专家组成专家顾问组,负责课题总体方案、技术路线等重大决 策性问题的咨询、顾问、监督。 目前,课题研究已经历时一年多,各项开发工作正在有条不紊的进行当中。 1.2 NMR 谱仪及控制软件研究现状及其应用谱仪及控制软件研究现状及其应用 核磁共振(NMR)广泛应用于化学、生物、医学等领域。核磁共振的方法与技术作为 分析物质的手段,由于其可深入物质内部而不破坏样品,并具有迅速、准确、分辨率高等优点 而得以迅速发展和广泛应用,已经从物理学渗透到化学、生物、地质、医疗以及材料等学科, 在科研和生产中发挥了巨大作用1。 NMR 谱仪是 NMR 系统的核心部件。纵观全球,有实力的 NMR 系统厂家外购射频功放 和梯度放大器,但很少有外购谱仪的。近年来,磁共振厂家的竞争越来越体现为谱仪技术的 竞争。 由于谱仪技术涉及到计算机软硬件以及磁共振成像应用等多方面的知识,目前仅有少数 外国公司掌握谱仪技术,而且出于商业利益的考虑,很少有与谱仪设计相关的文献发表,因 此谱仪开发难度相对较大。目前,国内已有多家磁共振成像企业正在生产全身 MRI 设备, 厦门大学本科毕业论文 - 2 - 比如宁波鑫高益公司和深圳安科公司等,但是这些公司所采用的谱仪大都依赖于进口谱仪, 比较常用的进口谱仪是英国共振公司的 DRX 谱仪l0j。进口谱仪虽然功能比较强大,但是 其价格一般非常昂贵。以英国共振(RI)公司的谱仪为例,单台谱仪的售价一般为¥360, 000。除了进口谱仪价格昂贵以外,由于国内很多磁共振成像公司都没有掌握谱仪技术,因 此就很难与国外大公司抗衡。鉴于此,开展谱仪的国产化研究是非常有必要的2。 谱仪控制软件作为核磁共振谱仪的随机软件,其软件技术目前也不是很成熟,与其相关 的课题研究也不是很多,因此作为应用性很强的 NMR 谱仪,对于其随机软件的研究开发是 很有必要的,意义重大。 1.3 课题的需求说明课题的需求说明 在开发谱仪控制软件系统以前,首先要对软件系统进行需求分析,明确软件系统的设计 目标及其要实现的功能。NMR 谱仪控制软件主要应用于小型磁共振成像系统和低场人体磁 共振成像系统。根据数字化谱仪的应用场合,并在参考了一些商业谱仪软件说明书,如 (VARIAN、Bruker)的基础上,NMR 谱仪控制软件系统的总体设计目标如下: (1) 实时准确灵活控制谱仪硬件; (2) 丰富易用的实验设计(图形化脉冲序列设计) ; (3) 强大易用的数据处理(达到现有的商业化 NMR 数据处理软件水平) ; (4) 跨平台设计,采用 Java 与 C+的结合,具有良好的兼容性,系统可在 Linux, Unix 或 Windows 平台下运行; (5) 界面操作性好,容易掌握,同时又具有很大的灵活性。 而系统最终提供给用户的功能需求根据实现先后以及重要性大体上可以分为两部分:基 本功能和可选功能。 1、基本功能: (1) 硬件控制的所有功能:包括均场(自动或手动)、锁场(自动或手动)、样品控制、激发 脉冲、打开梯度场、采样,脉冲序列编写。 (2) 基本的数据处理功能,包括一维/二维变换(包括各种加窗函数)、谱积分、基线调整、 相位校正、差谱、旋转数据、计算信噪比 。 (3) 基本的显示输出功能:包括一维/二维谱(或 FID)输出、化学位移定标、峰注释、谱 图打印、谱图放大或缩小、谱图剪切。 (4) 基本的数据存储功能:包括输出各种谱(或 FID)、输出各种实验参数和硬件信息、输 厦门大学本科毕业论文 - 3 - 出各种注解。 (5) 基本的模拟软件包:包括我们自主编写的 SPROM 软件包。 (6) Hardman 变换谱 2、可选功能: (1) 数据处理方面:消除杂峰 、对放大区域进行调平 、二维中相位的调整 、线性拟合、 线性预测、驰豫分析、参考去卷积 、多项式基线矫正。 (2) 数据存储和显示方面:支持多种仪器文件格式: (Bruker,Varian,JEOL,NMRPipe,NUTS,Felix,JCAMP,Galactic,Triad,NM R-Compass),能够同时显示和分析多个文件。 (3) 扩展数据处理方面:建立图谱、化合物结构、峰列表对图谱中的单重峰和多重峰进 行筛选,还可以手工添加、删除及合并峰。 4) 可进行各种复杂体系的模拟。 1.4 论文的主要工作和结构论文的主要工作和结构 本文在对整个软件系统的课题背景和总体设计作简要介绍后,对命令行模块的功能实现 进行详细阐述,在介绍设计原理之前,先对模块的数据基础进行说明。命令行模块的设计主 要包括脚本引擎的搭建和 Shell 功能命令的定制上。在脚本引擎搭建方面,本文对 Java 6 对脚本语言支持的新特性进行了详细阐述,旨在说明发现和创建脚本引擎的机制和实现。此 外,本文还对模块的一些辅助实现及优化策略进行了相关说明。 本论文共分为六章。 第一章 绪论。本章介绍课题背景,研究意义,系统的需求说明以及论文的组织结构。 第二章 NMR 控制软件系统设计。本章主要介绍了系统软件的模块结构,系统流程图, 系统界面,以及系统的数据处理特色。 第三章 系统的开发环境简介。本章对 Eclipse 开发环境以及 RCP 程序设计进行了简要 介绍。 第四章 命令行模块的数据基础。本章对模块的数据,参数文件进行了详细分析。 第五章 命令行模块的设计和实现。本章从模块的界面设计,脚本引擎底层实现,在引 擎的基础上进行 Shell 命令定制,辅助功能的设计实现以及脚本执行性能优化几方面进行详 细阐述。 第六章 总结。本章对论文进行了总结,并简要说明了后期的开发需求。 厦门大学本科毕业论文 - 4 - 第二章 NMR 控制软件系统设计 2.1 系统模块结构系统模块结构 NMR 系统软件主要有四大功能模块:仪器控制模块、实验设计模块、数据处理分析模 块和系统管理模块。目前着重开发的是数据处理分析模块和实验设计模块。而命令行模块并 不独立地属于以上几大模块之一,它与这几大模块都紧密相连,因为它实现了以上各模块功 能的指令化,序列化。 软件的一级结构图如图 2.1 所示。 NMR系系统统软软件件 仪仪器器控控制制用用户户管管理理实实验验设设计计数数据据处处理理 进进出出样样 锁锁场场、匀匀场场、 采采样样、状状态态 一一、二二维维数数据据 脉脉冲冲序序列列设设计计 脉脉冲冲序序列列模模拟拟 权权限限管管理理 文文件件管管理理 机机时时管管理理 图图 2.1 NMR 系统模块划分系统模块划分 以下对各模块的功能及特点作简要说明: 2.1.1 实验设计模块 1.图形化的脉冲序列设计界面; 2.支持硬脉冲、软脉冲、梯度脉冲、组合脉冲、自定义脉冲波形等; 3.支持顺序、随机、条件、循环等脉冲执行次序; 4.脉冲源文件以文本方式保存,支持手工编辑; 5.脉冲序列执行结果模拟。 目前,脉冲序列编程环境实现了两种形式:基于文本格式的脉冲序列编程环境和图形方 式的脉冲序列编程环境。基于文本格式的脉冲编程环境直接采用一种专门的编程语言 (JavaScript 脚本),因此具有功能强大、控制灵活的特点,使用基于文本格式的脉冲序列编 厦门大学本科毕业论文 - 5 - 程环境需要用户具备一定的 JavaScript 编程基础,对用户的要求较高。而图形脉冲序列编 程环境采用图形化的方式开发脉冲序列,用户不需具有任何编程基础就可以快速地创建脉冲 序列,因此非常容易使用。但是单纯采用图形方式开发脉冲序列,在功能和灵活性上会有一 定的欠缺。根据谱仪控制软件的设计目标,脉冲序列编程环境设计目标是既要满足功能强大 的要求,又要满足易于使用的要求。为了实现这一设计目标,谱仪控制软件在主体上采用了 图形化的脉冲序列编程环境,同时为了兼顾功能强大的设计要求,结合命令行模块对 JavaScript 脚本的解析功能。采用图形和文本表达式相结合的方式一方面保持了图形脉冲序 列编程环境易于使用的特点,同时也大大提高了图形脉冲序列编程环境的灵活性。 2.1.2 数据处理模块 1.对 1D 和 2D 谱的完全处理能力,包括傅氏变换、差谱、相位矫正、半自动和手工基 线校正、峰积分、相加减; 2.可以在时域和频域对 2D 谱进行剪辑变换,均衡变换、旋转、投影; 3.1D 谱(组)的峰拟合; 4.计算信噪比; 5.化学位移定标; 6.驰豫分析; 7.参考去卷积; 2.1.3 用户管理模块 1.权限管理丰富的权限管理(不同的使用者等级:谱仪管理员、实验测试员、开 放实验的学生等,体现在可否改动谱仪设置、可否进行脉冲序列设计、可否进行梯 度实验、变温实验等) ; 2.文件管理(各人的实验数据、脉冲序列) ; 3.机时管理(使用机时、采样机时等的统计、安排) 。 2.2 系统流程图系统流程图 系统运作流程如图 2.2 所示。 厦门大学本科毕业论文 - 6 - 用用户户 登登录录 仪仪器器和和用用户户管管理理设设计计实实验验进进场场 做做实实验验调调谐谐 锁锁场场、匀匀场场 采采样样处处理理数数据据 退退样样 管管理理员员? 采采样样参参数数 是是 否否 图图 2.2 系统流程图系统流程图 2.3 系统运行界面系统运行界面 软件界面参考 PhotoShop、Eclipse 等多文档窗口程序。具有如下界面风格: 1.国际化,支持多语言(中、繁、英等)显示、输入(标注) 、打印(输出) 2.支持语言、皮肤(风格样式)切换。 系统工作平台界面如图 2.3 所示。 图图 2.3 系统运作界面系统运作界面 厦门大学本科毕业论文 - 7 - 2.4 系统数据处理特色介绍系统数据处理特色介绍 在参照相关软件 VARIAN,Bruker 基础上,在数据处理方面,NMR 谱仪控制软件实现 了自己的独有特色功能。以下分点简要说明。 1.简单的文件输入,丰富的文件格式支持。一个文件打开对话框,自动识别 JCAMP- DX,VARIAN、Bruker、Jeol Delta 等多种谱格式,自动识别脉冲序列文件、图片 文件; 2.多样的文件输出:专有格式(甚至可压缩存储) ,PS、PDF 格式,文本数据格式, 图片格式等; 3.支持预览式打印输出; 4.预览式切趾加窗; 5.多浮动局部放大预览窗口(inset); 6.随意鼠标拖拉移动谱线、坐标轴等; 7.谱图自适应自由放大缩小的窗口; 8.自由、丰富的可设置的谱图属性:颜色、线型、线宽、填充等; 9.灵活的多谱图排列、对齐、分布方式; 10. 灵活的谱图剪切、拼接; 11. 自由的谱图标注(文本标注、结构式图形标注等) ; 12. 支持宏命令、脚本。 厦门大学本科毕业论文 - 8 - 第三章 系统的开发环境简介 3.1 基本开发环境基本开发环境 1.开发工具:eclipse 3.3 2.开发语言:Java jdk1.6.0 3.操作系统:Windows XP;Linux 4.插件:RCP Developer_v2.5.0_win32,GEF-ALL-3.3, Subclipse-1.2.4 5.软件建模: Rational Rose 6.性能测试: Rational Quantify 开发环境采用当前主流环境,使用 version 3.3 的 eclipse IDE,结合 Java jdk1.6.0 开 发语言,支持命令行模块脚本引擎的实现。因为 Java 6 版本中引入了对脚本语言的支持。 另外,开发基于当前主流操作系统,实现在跨平台上运行。 此外,采用 Rational Rose 进行软件建模以及 Quantify 进行性能测试,大大提高了软件 开发效率和软件的稳定性。 3.2 Eclipse RCP 介绍介绍 Eclipse RCP 目前在系统开发领域中得到了广泛应用。RCP 是 Rich Client Platform 的 缩写,即富客户端平台。他提供了一个 Eclipse 工作平台,允许开发人员通过编写扩展来构 造自己的应用程序。 使用 RCP 来开发 Java 桌面应用可以把开发的焦点转移到系统的逻辑功能上,而不是 界面上。我们自己的程序可以继承 Eclipse 的风格与功能,而不用自己去编写诸如菜单,工 具条,子窗口等等的界面元素。甚至我们可以把 Eclipse 本身的功能插件,比如 Console 拿 来放在自己的程序里,这样就避免了很多重复开发。 Eclipse RCP 是 Eclipse Platform 的一个子集(如图) ,从 Eclipse3.0 版本开始, Eclipse 项目组对代码进行了重构,将 IDE 与 Workbench(工作台)彻底分离,实现了一个 Generic Workbench,使得特殊的 RCP 应用中不再有 IDE 的影子。而其它的可选部件及丰 富的工具集更是让 RCP 应用在各个领域都可以大展拳脚3。如图 3.1 所示。 厦门大学本科毕业论文 - 9 - 图图 3.1 Eclipse RCP 的组成的组成 3.3 Eclipse RCP 开发开发环境环境 1. Eclipse 的目录框架 Eclipse RCP 整个系统最顶层的文件夹是 RCP安装目录,它的子目录中包含了一个 plugins 目录,这里有所有 RCP 所需要的 plugin,以及开发者所部署的 plugin。此外还有 一些 RCP 的启动代码和可执行文件 eclipse.exe。 如图 3.2 所示5。 图图 3.2 Eclipse 的目录框架的目录框架 厦门大学本科毕业论文 - 10 - 2. Eclipse 插件组织方式 Eclipse 的插件安装有两种方式,一种是直接解压到 plugins 和 features 目录下;还有 一种是用 links 方法安装。以插件 GEF-ALL-3.3 为例,两种安装方式如下: (1) 直接解压到 D:eclipseGEF-ALL-3.3eclipse(D: eclipse 为 Elipse 的安装目录) 该目录下就有如下子目录 D:GEF-ALL-3.3eclipsefeatures D:GEF-ALL-3.3eclipseplugins (2) 在 eclipse 目录下新建一个名为 links 的文件夹 在该文件夹内新建文件 gef.link,用文本编辑器打开,输入: Path=GEF-ALL-3.3 保存文件。对于这两种方法,都需重启 eclipse,插件才可以正常使用了。 3. Eclipse 插件结构 Eclipse 插件其实和一般的 Java 工程类似,但是不同于普通的 Java 工程的是, Eclipse 插件工程的组织安排都有一些特殊的配置文件进行维护。一个插件工程是有一系列 的 Java 文件和一个进行描述和连接其他依赖插件的 manifest 文件组成,其中还包括一个名 为 plugin.xml 的配置文件,该文件是描述该插件项目具体扩展了哪些 Eclipse 的扩展点。 一个 Eclipse 工程的截图如图 3.3 所示。 图图 3.3 Eclipse 工程的截图工程的截图 插件工程包括有代码或者一系列的资源文件,例如图片、Html 文件等、Web 页面、文 档等,如图 3.3 所示,该插件工程的代码包含在 org/eclipse/ui文件夹下,另外还包括了 厦门大学本科毕业论文 - 11 - about.html 文件以及 perties 资源文件。 从 Eclipse3.1 开始,大部分信息比如 classpath、依赖插件项等信息,都存储在了 manifest.mf 文件中。plugin.xml 的功能延续了 Eclipse 以前的扩展点描述以及扩展点的定 义6。 3.4 主要相关插件介绍主要相关插件介绍 1. 插件 GEF-ALL-3.3RC4 功能概述4 插件 GEF-ALL-3.3RC4 提供了一个图形化编辑框架 GEF(Graphical Editor Framework) ,它允许开发人员以图形化的方式展示和编辑模型,从而提升用户体验。它在 图形化编辑方面具有以下基本功能,提供一个编辑区域和一个工具条,用户在工具条里选择 需要的工具,以拖动或单击的方式将节点或连接放置在编辑区域: (1) 节点可以包含子节点; (2) 用户能够查看和修改某个节点或连接的大部分属性; (3) 连接端点锚定在节点上; (4) 提供上下文菜单和键盘命令; (5) 提供图形的缩放功能; (6) 提供一个大纲视图,显示编辑区域的缩略图,或是树状模型结构; (7) 支持撤销/重做功能,等等。 此外,选择 GEF 图形编辑的优势体现在,它提供了标准的 MVC 结构,开发人员可以 利用 GEF 来完成以上功能,而不需要自己重新设计;与其他一些 MVC 编辑框架相比, GEF 的一个主要设计目标是尽量减少模型和视图之间的依赖,好处是可以根据需要选择任 意模型和视图的组合,而不必受开发框架的局限。 2. 插件 Subclipse-1.2.4 简介 该插件使得用户可以在 Eclipse 里面很方便的使用 Subversion 客户端的各项基本功 能。Subversion 是一个自由/开源版本控制系统,它管理文件和目录可以超越时间。一组文 件存放在中心版本库,这个版本库很像一个普通的文件服务器,只是它可以记录每一次文件 和目录的修改,这便使你可以取得数据以前的版本,从而可以检查所作的更改。 Subversion 可以通过网络访问它的版本库,从而使用户可以在不同的电脑上使用。一 定程度上可以说,允许用户在各自的地方修改同一份数据是促进协作。进展可能非常的迅速, 并没有一个所有的改变都会取得效果的通道,由于所有的工作都有历史版本,你不必担心由 厦门大学本科毕业论文 - 12 - 于失去某个通道而影响质量,如果存在不正确的改变,只要取消改变。图 3.4 是 Subversion 的架构图。 图图 3.4 Subversion 的架构的架构 图中的一端是保存所有版本数据的 Subversion 版本库,另一端是 Subvesion 的客户程 序,管理着所有版本数据的本地影射(称为“工作拷贝”) ,在这两极之间是各种各样的版本 库访问(RA)层,某些使用电脑网络通过网络服务器访问版本库,某些则绕过网络服务器 直接访问版本库7。 Subclipse 插件的使用,很好的实现了开发过程中的版本控制。 厦门大学本科毕业论文 - 13 - 第四章 命令行模块的数据基础 4.1 数据格式介绍数据格式介绍 在进行命令行模块设计之前,需要了解项目运作的有关数据,因为这是整个系统以及模 块运行的数据基础。 系统的数据主要有以下两种文件格式。 1.二进制文件:用于存放 FIDs 和变换后的谱图数据。一般由文件头和数据两部分组成, 数据的存储细节在文件头中给出说明。 2.xml 格式文件:存放其他形式的数据,比如参数文件及其他通过 NMR 谱图分析得到 的数据。采用 xml 的好处是它可以使用任何文本编辑器进行查阅和编辑,xml 文件同时还具 有健壮性、扩展性、易用性及很好的平台移植性。 4.2 系统的参数文件系统的参数文件 参数和它的属性可以通过有关的命令进行修改,具体的参数文件采用 xml 格式进行保存 和处理。 4.2.1 参数类型和约束 1. 参数的类型根据实验特点,数据需要,主要有以下几种数据类型。 (1) real:缺省类型。正负实数。 (2) string:字符串型。 (3) delay:延时,08190 的实数,单位是秒。 (4) frequency:频率,正实数。 (5) flag:字符串,如“nny”表示三个标志位,一、二位为“n”,第三位“y”。 (6) pulse:脉冲,08190 的实数,单位是微秒。 (7) integer:0 和正整数 2. 参数的约束 restriction (1) 基本类型:实数 real,字符串 string 或整数 integer; (2) 是否必须,是否允许为空; 厦门大学本科毕业论文 - 14 - (3) 范围,最大值,最小值;(应用于 real 和 integer) (4) 默认值; (5) 是否枚举(涉及到枚举的默认选择) ; (6) 是否数组(涉及到是否可以数组) ; (7) 参数是否可变(值是否可变?名是否可变?) ; (8) 参数是否有效; (9) 参数是否可转移(从一个参数树到另一个参数树) 。 4.2.2 参数树 系统在运行后总共存在四种状态的参数树。 (1) current,缺省,应用于当前实验设置的参数树,对应文件 curpar.xml; (2) global,从 VNMR 系统继承来的用户全局树,对应文件 global.xml; (3) processed,采集到数据后用于处理数据的树,对应文件 procpar.xml; (4) systemgloblal,系统参数树,应用于所有用户,对应文件 conpar.xml。 这些参数树中使用到的参数对应于系统在运行中以及实验中所应用到的所有参数。 4.2.3 参数的存储格式 采用 xml 存储方式的参数存储格式如下所示。 dmg1 2 2 8.0 0.0 0.0 4 1 0 false 厦门大学本科毕业论文 - 15 - 对以上各参数的具体属性分析如下。 (1) name 表示参数的名称,它可以是任意有效的字符串。 (2) subType byte 整型,表示参数的类型:0(undefined) ,1(real),2(string) 3(delay) ,4(flag) ,5(frnqeuncy) ,6(pulse) ,7(integer) (3) basicType byte 整型,表示参数值的类型,0(undefined) ,1(real),2(string) (4) maxValue real 型,表示参数所能包含的最大值或参数最大值的索引,适合于 String 型和 real 型参数。 (5) minValue real 型,表示参数所能包含的最小值或参数最小值的索引,适合于 String 型和 real 型参数。 (6) stepSize real 型,表示步长,仅适合于 real 型参数 (7) Ggroup 整型数据,具体意义(ALL),1(SAMPLE),2(ACQUISITION), 3(PROCESSING),4(DISPALY),5(SPIN) (8) Dgroup 整型数据,用于具体的一些应用。 (9) protection 由 32 位的字构成。 (10)active 整型数据,具体:0(not active),1(active) (11)intPtr 暂时未用,一般设为 64 (12)paraValues 字符串数组,用于存放参数的具体值,可能有多个,具体个数由 valueCount 指定。主要存放 real 型和 string 型,后者有引号。 (13)enuValues 字符串数组,指定参数的枚举值,个数由 enuNumber 指定。 64 “ “ “av1“ “ph1“ 厦门大学本科毕业论文 - 16 - 4.2.4 参数的相关操作 1. 不同格式参数文件之间的转换 convertToXML(textParaFile,xmlParaFile) 为了兼容以前的某些系统,我们提供了这个参数格式转换的接口,其中 textParaFile 代 表原来的参数格式文件,xmlParaFile 代表我们自己的 XML 格式的参数文件。以下对参数的 操作都是在 XML 格式文件下进行的。 2. 参数文件的模式验证 3. 创建新参数 createPara(parameterName,type,tree) 在指定的参数树 tree 上,创建一个名字为 parameterName,类型位 type 的参数。 例如:createPara(”tc”, ”String”, ”processed”),是指在 procpar 树中创建一个名为 tc, 类型为 String 的参数。如果缺省 type 默认为 real,缺省 tree,默认为在 current 树中。 4. 获取参数的值 getParaValue(parameterName,index,tree) 在指定的树 tree 上,获取参数名为 parameterName 的参数值组中索引为 index 的参数 值。Index 默认值为 1,tree 默认为 processed。 5. 编辑或设置参数的属性 (1) setLimit(parameterName,maxValue,minValue,stepSize,tree) 设置参数的最大值、最小值和 stepSize 的值。默认在 current 树中。 (2) setLimit(parameterName,index,tree) 从系统参数树中,获得值来进行相关的限制设定。 (3) setProtect(parameterName, ”set”|”on”|”off”,bit_vals,tree) 设置一个参数的 protection 属性,根据具体情况处理 (4) setType(parameterName,type,tree) 改变一个参数的类型,一个 string 型的参数可以被转成一个 string 或 flag 型的参数,或 者一个 real 型参数可以被转成 real,delay,frequency,pulse 或 integer 型参数。 (5) setValue(parameterName,value) 设置一个参数树中的任一参数的值,当然设置要满足范围或 protection 相关设定的约束。 (6) setEnumeral(parameterName,n,enum1,enum2,enumn) 厦门大学本科毕业论文 - 17 - 设置一个参数树中的任一参数的枚举值,当然设置要满足范围或 protection 相关条件约 束。 (7) setGgroup(parameterName,group) 设置某一参数树中参数 Ggroup 值,它可以取:“all”, “sample”, “acquisition”, “processing”, “display”或“spin”其中之一。 (8) setDgroup(parameterName,dgroup) 设置某一参数树中参数 Dgroup 值 6. 参数的显示 displayPara(parameterName|”*”|*|) 显示参数树中的一个或多个参数及其属性值。第一个变量如果为 parameterName 则显 示这个参数的所有属性值;第一个变量如果为“*”则显示一个参数树中的所有参数的名字和值; 第一个变量如果是“*”则显示一个参数的所有属性值。 7. 参数的移动 groupCopy(from_tree,to_tree,group) 将一个组中的一组参数从 from_tree 到 to_tree 中,不能在同一个 tree 中进行。 8. 参数的删除 (1) destroyPara(parameterName) 删除一个树中的某一参数 (2) destroyGroup(group) 删除一个树中的属于某一个组的所有参数。 厦门大学本科毕业论文 - 18 - 第五章 命令行模块的设计和实现 5.1 命令行模块的设计目标命令行模块的设计目标 在熟悉系统模块结构,开发环境,数据基础以后,才能把握住命令行模块的设计目标, 更好地着手模块的功能实现。命令行模块,由控制台视图提供 shell 命令输入,由脚本引擎 解析执行。 命令行模块,旨在实现整个谱仪控制软件功能的指令化。通过序列化的指令执行操作, 方便用户定制自己的实验操作,提高操作速度,优化实验效率。这一模块的功能实现,并不 会使系统维护同种功能的两份不同的代码,即不会出现菜单功能代码及命令行代码的冗余, 它将实现的是菜单动作对命令行代码的调用,这需要协调好各模块及命令行模块之间参数使 用关系。 图 5.1 是命令行模块的界面视图。 图图 5.1 命令行模块界面视图命令行模块界面视图 命令行模块具有以下几大功能目标,此外,它还实现了用户自定义脚本的导入,导出, 以及脚本文件的初始化加载执行等基本功能。 5.1.1 功能命令提示符 实现命令输入,参考 VNMRJ 软件的命令输入方式,定制命令输入形式,以及命令编写 接口,整合操作代码,实现命令功能。命令功能在支持基本的脚本(JavaScript 脚本)操作基 础上,通过引入大量用户定制的命令(Java 静态方法),实现对工作区及其图像的操作,实现 菜单功能的命令化操作。 命令调用方式举例如下: 厦门大学本科毕业论文 - 19 - 这里 filepath 的输入格式可以使用如下 windows 目录: “C:Documents and Settingswanghb桌面fid1d.fid”。 该命令将打开 fid 的目录到新的工作区中,如果该方法有返回值,命令行中会自动打印 出其值,如果输入路径信息有

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论