论文部分内容阅读
在电化学仪器中,上位机与下位机之间的通信对于数据在上下位机之间的传输起着重要作用。通信协议的研发对上下位机间数据传输的准确性和有效性起着非常重要的作用。本文以开发一整套电化学仪器中上位机与下位机通信协议的编码器和解码器为实验目标,针对领域特定语言(DSL,Domain-Specific Language)这一研究方向,将原本由自然语言描述的电化学仪器通信协议,形式化为上下文无关的协议规则,从而消除了使用自然语言来描述协议所存在的冗余性和二义性等缺陷。同时应用DSL的一种实现方法 ANTLR(Another Tool for Language Recognition)和String Template实现了扫描电化学显微仪器中32种实验方法的128个编码器和解码器的自动生成,提高了代码生成的效率和质量,以及项目最终的可拓展性以及可维护性。本文以通信协议为基础,将不同的电化学实验表示为不同的输入文件。通过ANTLR进行词法分析、语法分析,将实验名称、实验指令、实验参数、参数类型从输入文件里解析出来,保存成层级嵌套的数据结构,通过String Template进行渲染,最终得到上下位机间通信的编码器、解码器和相关测试代码。本文中项目的实现由启动模块、输入模块、解析模块、控制模块、渲染模块构成。启动模块采用不同的脚本技术实现,解决了项目的跨平台需求,其主要作用包括设置环境变量,编译数据定义和控制逻辑的类,并启动入口函数;输入模块以不同实验方法为维度,划分为不同的文件,解决了项目的多实验支持,输入文件依据通信协议设计来组织,提供实验相关数据;解析模块包括词法分析器和语法分析器,是将输入文件的实验数据提取出来并传递给控制模块中的数据定义相关类;控制模块是项目的主要业务逻辑,包括数据定义类、渲染逻辑类等,其作用主要是将解析模块传递过来的实验数据,加载到渲染模块;渲染模块根据控制模块组织好的渲染数据,进行模板的渲染,生成相关源代码。