专利名称:一种智能测量仪器通用语法分析的实现方法
技术领域:
本发明涉及一种测量仪器语法分析方法,尤其涉及一种智能测量仪器通用语法分析的实现方法,属于程控测量仪器技术领域。
背景技术:
目前智能型测量仪器门类繁多,例如功率计、频谱仪、网络仪、信号源、噪声仪、频率计、示波器等。这些智能测量仪器具有一个共同特点可以通过任何可与之通讯的控制器进行系统集成。这些控制器可能是个人电脑、小型计算机或者卡槽上的插卡,乃至一些人工智能的设备。由控制器通过相应的测试总线,GP-IB、网络等向测量仪器发送程控命令,实现对测量仪器的程控操作(如附图1所示)。但是如何正确输入有效命令、测量仪器如何获取正确指令、如何正确解析在发送过程中可能会出现的发送错误例如关键字错误、参数个数、参数数据类型不匹配、参数超界等,却是本领域所面临的常见问题。如果测量仪器不能很好地识别这些错误,将无法实现指定功能,甚至可能会造成测量仪器的崩溃。因此,必须对通过通讯接口所接收到的数据和程控命令信息进行解析,判断其合法性,提取有效指令和相应的参数。语法分析是一项繁琐、复杂的工作,但针对测量仪器又不可或缺。由于用户的输入可能错综复杂,所以稍有考虑不周,就可能出现误判、漏判,从而出现意想不到的情况。由于不同的测量仪器具有不同的测试功能,所以每种测量仪器的生产厂商都要针对自身仪器进行包括语法分析在内的程控的重复开发。这无疑会造成大量、重复的劳动,造成极大的人力、物力浪费。而经多方查阅,到目前为止还没有一套完整的、完善的、针对不同测量仪器通用的语法分析方法。因此,能否针对不同门类的智能测量仪器,搭建出一套完善的通用语法分析平台以同时满足其各自程控的要求,成为本领域技术人员亟待解决的技术难题。
发明内容
为了解决上述技术问题,提出本发明。本发明旨在提供一种智能测量仪器通用语
法分析的实现方法,其基于 SCPI (Standard Commands for Programmable Instruments-
可程控设备的标准命令,一个基于标准IEEE488. 2建立的、适合所有仪器的命令集),针对多种智能测量仪器开发的。用于使不同测量仪器相同功能具有相同的程控命令,以实现程控命令的通用性。其采用的技术方案如下该种智能测量仪器通用语法分析的实现方法包括以下步骤1)生成命令树利用二叉树的方式来构建数据结构,将整个语法分析的过程分成生成树过程和遍历树过程;2)语法分析与接口相应的线程接收来自接口的命令和数据,并送语法分析先进先出队列,激活语法分析;逐个分离出用户输入命令的关键字,依据生成树中的数据结构, 判断输入的整条命令在每个具体部位是否存在问题,然后对正确的分析进行解析解码,把
3相应的命令和参数分别送入命令队列,激活命令处理线程进行相应的命令处理;对错误的命令予以抛弃,并进行示警和错误定位。优选地,所述命令树包括如下五个数据结构命令和关键字结构、节点结构、叶子节点结构、参数链表结构以及C参数链表。优选地,在所述语法分析步骤中,还使用命令结构和参数结构,在语法分析完成某条命令之后,这两个结构分别写入命令处理线程。优选地,在遍历树的过程中,如果在同级的目录中没有找到,在下级中查找乃至一直找到叶子节点;如果在叶子节点还没有找到,回溯到之前正确的解析部位,在其兄弟节点乃至兄弟节点的子节点中继续查找。优选地,所述用户输入命令包括大数据块命令。优选地,所述用户输入命令中还包括关联命令,在语法分析步骤中关联命令出现问题时,把前面判断正确的命令包括命令码和参数送给命令处理,而出错之后的命令包括本条进行清除。优选地,其特征在于,所述接口为GPIB或网络。优选地,对于大数据块关联命令还包括如下处理步骤分析到大数据块参数时,把所有滞留命令全部一并写入命令先进先出队列中,然后等待;命令处理到这条命令时,发消息给语法分析,并给语法分析一个缓冲区的指针,然后命令处理处于等待状态;语法分析直接从语法先进先出队列中按当前的数据格式进行读取,然后写入到对应的内存中;如果在处理大数据的过程中出现错误,则发送消息给命令处理线程,结束该命令的处理,同时设置该条命令的关联码为最后一个;如果没有出错,就要看是否是关联命令的中间一条,要等到下一条命令处理完毕,得到正确的关联码之后才给命令处理发消息;如果不是中间一条,则在处理完之后给命令处理发消息。优选地,对于大数据块关联命令还包括如下处理步骤大数据块命令处理时,如果发现通道或者测量不存在,给语法传送一个指针,长度为-1 ;语法分析把数据写入缓冲区内,同时设置接收的长度为有效长度。与现有技术相比,本发明具有如下优点1、通用性强,适用于多种智能测量仪器,大大降低了科研工作量和科研成本;2、方便用户采用,操作简单,定位和查错功能强;3、经多个内嵌仪器验证,可靠性强、稳定性好。
图1现有技术中的程控流程图2本发明中命令及结构的简要说明图3本发明中生成命令树的流程图4本发明中数据结构简图1;
图5本发明中语法分析流程图6本发明中3条关联命令的处理图7本发明中3条大数据块关联命令的处理图
图8本发明中数据结构简图2。
具体实施例方式下面结合附图和实施例对本发明作进一步说明该实现方法主要包括以下步骤生成命令树(如图3所示)在具体设计上,为了满足速度、通用性和易集成性等要求,利用二叉树的方式来构建数据结构,将整个语法分析的过程分成生成树过程和遍历树过程。命令树优选为主要由如下五个数据结构来进行管理(如图2、4、8所示):命令和关键字结构、节点结构、叶子节点结构、参数链表结构以及C参数链表。命令和关键字结构包括关键字编码、首节点指向的节点结构。节点结构,用来放置每个命令节点的相关信息,包括节点缺省标识、节点可否带参数、节点参数缺省标识、缺省值、最小值、最大值、父指针、兄弟指针、孩子指针(当是最后一个命令时,指向叶子结构)、是否叶子节点。叶子结构,存放整条命令信息和参数特性,包括命令编码、是否可查询、是否交迭、查询时,所有参数是否全部返回、总参数个数、缺省参数个数、参数链表入口。参数链表结构,保存每个参数的信息,包括参数是否可缺省、是否支持最值、参数类型、参数单位、是否有C缺省、C参数链表的起始下标。C参数链表仅用于C参数,存放内容为该C在关键字结构中的索引,最后用-1结
束ο在下面的语法分析步骤中,优选还使用了另外两个结构命令结构和参数结构,在语法分析完成某条命令之后,这两个结构分别写入命令处理线程。命令结构包括命令来源、命令码、参数个数、命令查询标识、是否存在语法错、命令关联码、节点参数个数和节点参数。参数结构包括参数类型、整型参数、浮点型参数、字符串型参数、C型参数、参数单位、指向下一个参数的指针。这些数据结构是本发明实现方法的重点,生成树是生成这些数据结构,而语法分析,则完全依靠这些结构来判断用户输入的命令是否合法。所以,这些结构的合理性和完善性是极其重要的。语法分析(如图5所示)与接口(例如GPIB、网络等)相应的线程接收来自接口的命令和数据,并送语法分析先进先出队列,激活语法分析;逐个分离出用户输入命令的关键字,依据生成树中的五个数据结构,判断输入的整条命令在每个具体部位是否存在问题, 然后对正确的分析进行解析编码,把相应的命令和参数分别送入命令队列,激活命令处理线程进行相应的命令处理;对错误的命令予以抛弃,并进行示警和错误定位。由于用户输入的情况复杂,所以在整个语法分析的过程中,树的搜索是前提。由于存在关键字的缺省情况,所以在搜索的过程中,如果在同级的目录中没有找到,就要考虑是否是进行了缺省,要在下级中查找,由于存在多级的缺省,所以可能要一直找到叶子节点。 如果在叶子节点都没有找到,那么就要一直回溯到之前正确的解析部位,在兄弟节点中,甚至是兄弟节点的子节点中继续查找,这是该技术的一个难点所在。SCPI规范要求输入命令,也可以输入大数据块命令。大数据块命令分多种格式,不
5论是哪种格式,只要分析出存在问题,那么后面的数据就要停止接收,并把前面已经接收的数据予以清除。因为大数据块的数据很大,所以我们和命令一起同步处理,这是语法分析的另一个难点所在。SCPI规范中,还提到一点,多条命令可以同时输入。这就是关联命令。关联命令在分析中出现错误,要把前面判断正确的命令送给命令处理,包括命令码和参数,而出错之后的命令,包括本条,都要清除。如果是分系统命令的关联输入,那么还存在同根命令的简化输入,而对于分系统命令和公用命令在关联输入时还存在差异。如果是与大数据块命令关联,那么语法分析将变得更加复杂。这些问题在处理关联命令时都进行了全面的考虑。关联命令的处理也是语法分析中难点中的难点。下面简述其相关处理方法。关联命令的处理对于命令所跟的参数,只要处理到了,就写入命令处理队列中, 但命令要滞留1条,只有处理完下一条并且正确时,修改了前一条的关联码之后才会写入命令处理队列,以此类推。大数据块关联命令,具体处理如下因为大数据块参数占有很大内存,所以分析到大数据块参数时直接把所有的滞留命令全部一并写入命令先进先出队列中,然后等待;命令处理到这条命令时,发消息给语法分析,并给语法分析一个缓冲区的指针,然后命令处理处于等待状态。语法分析直接从语法先进先出队列中按当前的数据格式进行读取,然后写入到对应的内存中。如果在处理大数据的过程中出现错误,则发送消息给命令处理线程,结束该命令的处理,同时设置该条命令的关联码为最后个;如果没有出错,就要看是否是关联命令的中间一条,要等到下一条命令处理完毕,得到正确的关联码之后才给命令处理发消息;如果不是中间一条,则在处理完之后给命令处理发消息。大数据块命令处理时,如果发现通道或者测量不存在,仍然会给语法传送一个指针,只是长度为-ι。语法分析仍然会把数据写入这个缓冲区内,同时设置接收的长度为有效长度。图6和图7以3条命令为例,简要说明了大数据块和关联命令的处理流程。上面以举例方式对本发明进行了说明,但本发明不限于上述具体实施例,凡基于本发明所做的任何改动或变型均属于本发明要求保护的范围。
权利要求
1.一种智能测量仪器通用语法分析的实现方法,其特征在于,包括以下步骤1)生成命令树利用二叉树的方式来构建数据结构,将整个语法分析的过程分成生成树过程和遍历树过程;2)语法分析与接口相应的线程接收来自接口的命令和数据,并送语法分析先进先出队列,激活语法分析;逐个分离出用户输入命令的关键字,依据生成树中的数据结构,判断输入的整条命令在每个具体部位是否存在问题,然后对正确的分析进行解析解码,把相应的命令和参数分别送入命令队列,激活命令处理线程进行相应的命令处理;对错误的命令予以抛弃,并进行示警和错误定位。
2.如权利要求1所述的一种智能测量仪器通用语法分析的实现方法,其特征在于,所述命令树包括如下五个数据结构命令和关键字结构、节点结构、叶子节点结构、参数链表结构以及C参数链表。
3.如权利要求1所述的一种智能测量仪器通用语法分析的实现方法,其特征在于,在所述语法分析步骤中,还使用命令结构和参数结构,在语法分析完成某条命令之后,这两个结构分别写入命令处理线程。
4.如权利要求1所述的一种智能测量仪器通用语法分析的实现方法,其特征在于,在遍历树的过程中,如果在同级的目录中没有找到,在下级中查找乃至一直找到叶子节点;如果在叶子节点还没有找到,回溯到之前正确的解析部位,在其兄弟节点乃至兄弟节点的子节点中继续查找。
5.如权利要求1所述的一种智能测量仪器通用语法分析的实现方法,其特征在于,所述用户输入命令包括大数据块命令。
6.如权利要求1所述的一种智能测量仪器通用语法分析的实现方法,其特征在于,所述用户输入命令中还包括关联命令,在语法分析步骤中关联命令出现问题时,把前面判断正确的命令包括命令码和参数送给命令处理,而出错之后的命令包括本条进行清除。
7.如权利要求1所述的一种智能测量仪器通用语法分析的实现方法,其特征在于,所述接口为GPIB、网络和com的语法接口。
8.如权利要求1所述的一种智能测量仪器通用语法分析的实现方法,其特征在于,对于大数据块关联命令还包括如下处理步骤分析到大数据块参数时,把所有滞留命令全部一并写入命令先进先出队列中,然后等待;命令处理到这条命令时,发消息给语法分析,并给语法分析一个缓冲区的指针,然后命令处理处于等待状态;语法分析直接从语法先进先出队列中按当前的数据格式进行读取,然后写入到对应的内存中;如果在处理大数据的过程中出现错误,则发送消息给命令处理线程,结束该命令的处理,同时设置该条命令的关联码为最后一个;如果没有出错,就要看是否是关联命令的中间一条,要等到下一条命令处理完毕,得到正确的关联码之后才给命令处理发消息;如果不是中间一条,则在处理完之后给命令处理发消息。
9.如权利要求1所述的一种智能测量仪器通用语法分析的实现方法,其特征在于,对于大数据块关联命令还包括如下处理步骤大数据块命令处理时,如果发现通道或者测量不存在,给语法传送一个指针,长度为-1 ;语法分析把数据写入缓冲区内,同时设置接收的长度为有效长度。
全文摘要
本发明涉及一种测量仪器语法分析方法,尤其涉及一种智能测量仪器通用语法分析的实现方法,属于程控测量仪器技术领域,该方法针对不同门类的智能测量仪器,搭建出通用语法分析平台满足其程控要求,开发人员依据SCPI命令规范编写出该仪器所有程控命令的文本文件,自动生成高效的命令树,同时可对此文本文件进行审阅;完成编译之后,把此方法内嵌于测量仪器中实现对该仪器的程控,对于不同的测量仪器,只需要重新创建、编译一下程控命令的文本文件即可,通用性强,可靠性、稳定性好。
文档编号G06F17/30GK102521250SQ20111036264
公开日2012年6月27日 申请日期2011年11月16日 优先权日2011年11月16日
发明者井涛, 刘丹, 孙朋德, 李明太, 李树彪, 赵学强, 赵立军, 郭永瑞 申请人:中国电子科技集团公司第四十一研究所