- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于最优解空间树SCPI解析器设计
基于最优解空间树SCPI解析器设计
【摘要】提出一种基于解空间树的通用SCP I命令解析器实现方案。先将SCPI命令集标识成一棵解空间树,给树中每个节点赋予不同的属性。进行命令解析时,采用贪心算法,搜索解空间树的路径,寻找最优的匹配解。试验证明针对SCPI规范的各种等效变种命令,该算法具有非常好的普适性。
【关键词】SCPI命令;解空间树;贪心算法;SCPI解析器
1.引言
SCPI( Standard Commands for Programmable Instruments)是一种标准化的程控仪器编程语言,采用标准语法格式描述仪器功能,为所有仪器仪表提供了一个广泛兼容的编程和数据使用环境。SCPI命令具有纵向兼容性,横向兼容性和功能兼容性,最大限度的保证了SCPI命令在控制仪器中的灵活性。根据SCPI99[1]规范,SCPI指令同时具有长命令名和短命令名,命令中某些节点可以作为缺省节点忽略,导致SCPI命令使用灵活,会产生大量的变形等效命令。如何将这些等效命令编译成同一条执行指令是SCPI解析器设计的一个难点。
目前常见的SCPI解析器,如文献[2]将SCPI指令提前写入应用程序,如果修改SCPI指令或者将SCPI解析器移植到其他程序,就需要重新修改程序,使用不灵活。文献[3]虽然提出用XML文件描述SCPI指令,但是在描述SCPI指令的时候,没有充分发挥XML的自描述性和树形结构,因而无法识别全部的等效命令。本文将解空间树这一技术引入到SCPI解析器设计,通过设计相应的贪心算法,解决了SCPI的等效命令问题。
本文结构如下,第2节介绍SCPI语法和解空间树的基本概念与模型;第3节提出基于解空间树的SCPI解析器生成算法;第4节最后介绍研究意义和进一步的研究方向。
2.SCPI语法与解空间树
2.1 SCPI语法简介
SCPI是一个基于标准IEEE488.2建立的,适合所有仪器的命令集。其主要目的是为了使相同功能具有相同的程控命令,以实现程控命令的通用性。整个SCPI命令可以分为两个部分:一部分IEEE488.2公用命令,以“* ”开头,要求仪器必须执行;另一部分SCPI仪器特定控制命令。特定命令是以树型结构组织的字符串集,以“:”开头, 节点之间也是以“:”间隔。每个节点的字符串都有长格式和短格式两种写法, 而且根据仪器需要, 部分命令还会有独立的后缀。对于缺省节点,还可以省略。SCPI命令使用一个相似于文件系统的结构,这种命令结构被称为命令树。最靠近顶端的命令称为根命令,其次为第一级命令,第二级命令等。因而,对于一条特定的SCPI命令必须根据一个特定的路径才能到达下一层命令。
2.2 解空间树
解空间树又称为状态树。 它是一棵树,在这棵树中,包含着问题的所有解。对于给定的问题,如何在解空间树上寻找问题的最优或者次优解,一般需要用到贪心算法作为空间树回朔的依据。解空间树的解是一条从根节点到问题解叶节点的路径。SCPI命令本身以命令树的形式存在,因而,给定一条SCPI命令字符串,能否完全在命令树上找到其对应的解路径,成为解析SCPI命令的关键。在本文中,将XML文件引入到SCPI解析中,采用XML描述系统的SCPI命令集。解析该XML文件,在计算机内存中形成一棵解空间树。对于从程控端收到的SCPI指令,通过搜索该解空间树,判断接收到的SCPI命令是否合法。对于合法的SCPI指令编译其执行码,执行SCPI命令。不合法的SCPI命令则返回相应的编译错误。
3.SCPI解空间树算法实现
3.1 SCPI命令配置文件
通过编写不同的SCPI命令脚本可以生成不同的SCPI指令集。SCPI命令脚本采用XML描述SCPI指令,不同命令节点分配不同的属性。这样一棵命令树就形成了一个解空间,通过搜索解空间树,来解释不同的命令。SCPI命令配置文件部分如图1所示。
图1 SCPI命令配置脚本
3.2 脚本节点属性
SCPI命令配置脚本采用XML语言描述。由于XML具有非常突出的自描述性,为动态配置SCPI指令集提供了方便。
配置脚本根节点为“scpi”,子命令节点全部为“cmd”。根节点仅有一个“version”属性,表示此SCPI配置脚本当前的版本号,用于向上兼容SCPI解析器引擎。“cmd”节点有5种节点属性,具体如下:
1)name:SCPI命令符。配合cmd节点层次,用于区分不同的SCPI命令。
2)type:SCPI命令类型。命令符在SCPI命令串中是否为缺省节点。取值为“mandatory”,该命令符不可省略节点;取值“optional”,可以省略节点。按照SCPI规范,处于同一层的SCPI命令符有且仅
文档评论(0)