一种高效的仪器程控实现方法与流程

文档序号:11132893阅读:608来源:国知局
一种高效的仪器程控实现方法与制造工艺

本发明涉及程控领域,特别涉及一种高效的仪器程控实现方法。



背景技术:

程控是仪器的一项重要功能,无论搭建测试系统还是仪器联网,都需要仪器具备高速高效的程控能力。程控效率是考核仪器的重要指标,提高整个系统的测试效率需要仪器具备很高的程控效率。当程控接口的硬件传输速率由网络、GPIB等硬件接口确定后,程控效率就取决于软件的设计了。

目前仪器软件主要按照标准命令规范编制程控命令集,外部计算机或其它设备通过发送程控命令来实现对仪器的远程控制,但程控方式下,一直无法进一步提高测试效率,远低于非程控方式下,这是软件程控急需解决的问题

目前的解决方案都是通过字符串定义命令集,系统软件发送命令字符串,然后在仪器内部实现命令字符串的解析,然后再执行该命令对应的功能函数。命令字符串一般由多节构成,仪器软件每次收到命令串对字符串进行逐个比较,然后遍历命令树,进行搜索,效率低下。尤其是在仪器的命令数比较多的情况下,很多仪器程控指令多达几千条,解析搜索效率对程控效率的影响就很大了。



技术实现要素:

为解决上述现有技术的不足,本发明提出一种高效的仪器程控实现方法,能够兼容于仪器的标准程控规范,不改变用户的软件编程习惯,提高系统软件与仪器软件的交互控制和数据传输效率,从而提高仪器的程控效率。

本发明的技术方案是这样实现的:

一种高效的仪器程控实现方法,分为两部分实现,一部分是在仪器软件内部实现,另一部分是在主控计算机系统软件内部实现;

仪器软件内部实现步骤包括:命令号与命令集格式定义;命令号与命令树的构建;命令号与命令集的接收解析;

主控计算机系统软件内部实现步骤包括:

首先开辟一个命令串数组,把用到的命令串都放于这个数组中,再开辟一个同等大小的命令号数组,然后与仪器软件建立连接,发送命令集的命令号查询指令到仪器软件,然后再将整个命令串数组发送给仪器软件,仪器软件将命令集中所有命令串对应的命令号以数组的形式反馈给系统软件,系统软件将所有命令号接收后存储在命令号数组中;

建立仪器控制函数,其接口参数为命令串和命令参数,其内部实现如下:函数将参数命令串的地址减去命令串数组的首地址,然后除以4,获得的数作为命令号数组的索引,索引对应的数组内容为命令号,这样函数内部完成了长命令字符串到数字命令号的转换,然后将命令号和参数发送到仪器软件,完成了对仪器的控制。

可选地,所述命令号与命令集格式定义包括:

首先在ASCII格式的文件中定义整个仪器的软件功能的程控命令集,格式为:“通用命令编号命令串”,其中通用命令编号是数字,在仪器软件内部对应该条命令的功能函数索引;命令串为无空格间隔的命令字符串,格式采用标准仪器命令语法规范。

可选地,所述命令号与命令树的构建包括:

仪器软件启动后,逐行读取整个命令集文件中的字符串,建立命令树,并在端点命令处存储命令号,仪器软件内部程控命令对应的所有程控功能函数,都与命令号逐一对应。

可选地,所述命令号与命令集的接收解析包括:

首先,在仪器软件中增加命令集的命令号查询功能,主控计算机系统软件与仪器软件建立连接后,发送主控计算机系统软件的本地程控命令串数组到仪器,仪器反馈所有命令串数组所对应的命令号到系统软件端,系统软件与仪器软件交互控制,直接通过命令号实现所有功能,使仪器软件内部无需对命令串进行解析,直接接收命令号及对应的命令参数,由命令号直接索引到功能函数执行;

快捷命令号模式,仪器软件中对收到的命令串进行判断,只要以双引号开头的命令串,就直接把双引号内的字符串转为数字的命令号,后续的串直接转为该命令对应的参数串,其它形式的命令串仍然进入作为仪器标准规范的命令,进入仪器软件的命令解析器,解析为字符形式的命令串和命令参数。

本发明的有益效果是:

(1)程控命令定义方法不仅包括了命令串,还包括命令号,在文件中无需按序排列,由文件中的命令号唯一识别,非常便于仪器软件程控系统的实现,非常便于后续程控命令的添加和删除等。

(2)系统软件程控以命令串方式进行调用,对用户编程非常方便,内部机制实现了命令串到命令号的转换,相当于系统软件直接通过网络等接口调用仪器软件的内部功能函数,无需仪器软件进行复杂的命令串解析和搜索,极大的提高了程控执行效率。

(3)同时本发明兼容于标准程控命令规范的解析实现方式,使仪器软件实现了灵活高效率的交互程控。

(4)实现方便,不增加开发成本。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一种高效的仪器程控实现方法的流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明提出了一种高效的仪器程控实现方法,通过提供一种兼容于标准程控命令规范的实现方式,以及命令映射命令号解析技术的程控方法,使仪器软件实现了高效率的交互程控,并且实现方便,不增加开发成本。

本发明高效的仪器程控实现方法分为两部分实现,一部分是在仪器软件内部实现,另一部分是在主控计算机系统软件内部实现,如图1所示:

仪器软件内部实现步骤包括:命令号与命令集格式定义;命令号与命令树的构建;命令号与命令集的接收解析。

命令号与命令集格式定义包括:

首先在文本等ASCII格式的文件中定义整个仪器的软件功能的程控命令集,格式为:“通用命令编号命令串”,其中通用命令编号是数字,在仪器软件内部对应该条命令的功能函数索引。命令串为无空格间隔的命令字符串,格式采用标准仪器命令语法规范,支持长短格式,以及参数的类型说明、参数单位等。

命令号与命令树的构建包括:

仪器软件启动后,逐行读取整个命令集文件中的字符串,建立命令树,并在端点命令处存储命令号,仪器软件内部程控命令对应的所有程控功能函数,都要与命令号逐一对应。

命令号与命令集的接收解析包括:

当仪器软件从网络等接口处接收到程控命令后,开始解析命令串,在命令树中找到最终的命令节点,读取命令号,根据命令号,调用该命令号为索引的程控命令功能函数,这是传统的命令解析模式。

本发明首先在仪器软件中增加命令集的命令号查询功能。系统软件与内置仪器软件通过网络等方式建立连接后,发送系统软件的本地程控命令串数组到仪器,仪器反馈所有命令串数组所对应的命令号到系统软件端。系统软件与仪器软件交互控制,可以直接通过命令号实现所有功能,使仪器软件内部无需对命令串进行解析,直接接收命令号及对应的命令参数,由命令号直接索引到功能函数执行,极大的节省收发命令串的数据量耗费的时间,以及频繁的命令解析耗费的时间。同时主机端软件编程依旧是通过命令串实现的控制,用户也无需记忆难懂的命令号,符合用户的编程习惯。

快捷命令号模式,仪器软件中对收到的命令串进行判断,只要以双引号开头的命令串,就直接把双引号内的字符串转为数字的命令号,后续的串直接转为该命令对应的参数串,其它形式的命令串仍然进入作为仪器标准规范的命令,进入仪器内部软件的命令解析器,解析为字符形式的命令串和命令参数,这样本发明能够支持两种形式的程控。

主控计算机系统软件内部实现步骤包括:

首先开辟一个命令串数组,把用到的命令串都放于这个数组中,再开辟一个同等大小的命令号数组,然后与仪器软件通过网络等建立连接,发送命令集的命令号查询指令到仪器软件,然后将整个命令串数组发送给仪器软件,仪器软件将命令集中所有命令串对应的命令号以数组的形式反馈给系统软件,系统软件将所有命令号接收后存储在命令号数组中;

建立仪器控制函数SendCommand,其接口参数为命令串和命令参数,其内部实现如下:函数将参数命令串的地址减去命令串数组的首地址,然后除以4,获得的数作为命令号数组的索引,索引对应的数组内容为命令号,这样函数内部完成了长命令字符串到数字命令号的转换,然后将命令号和参数,通过网络等接口发送到仪器软件,完成了对仪器的控制。用户对仪器的控制都通过该函数进行,仍以命令字符串的方式调用该函数实现对仪器的控制,该函数内部完成命令集到命令号的映射,然后通过网络等接口以命令号实现对仪器的高效控制,相当于通过网络等接口直接调用仪器软件内部命令号对应的功能函数。

为了更详细地说明本发明的技术方案,下面给出一具体实例:

在某型号监测接收机中,仪器软件中构建ASCII命令集文件,其部分内容如下:

186:[SENSe<1|2>:]FREQuency:CENter<numeric_value>Hz//频率->当前频率

186:[SENSe<1|2>:]FREQuency:CENter?

187:[SENSe<1|2>:]FREQuency:STARt<numeric_value>Hz//频率->起始频率

187:[SENSe<1|2>:]FREQuency:STARt?

188:[SENSe<1|2>:]FREQuency:STOP<numeric_value>Hz//频率->终止频率

188:[SENSe<1|2>:]FREQuency:STOP?

189:[SENSe<1|2>:]FREQuency:REFerence INT|EXT//频率->频率参考内外

189:[SENSe<1|2>:]FREQuency:REFerence?

其中每一行为一条完整的命令定义,行首的最前面的数字为该命令的命令号,每一行的冒号为每一条命令的开始,每一个命令节用冒号隔开,后续中括号内的内容为可选,大写的字母表示短命令,小写的字母表示长命令,尖括号内容为必需内容,命令跟参数间是空格,参数为数值时候后面可以带单位说明,参数为选择型时候,中间用竖杠|分割。同样命令号的后面带问号表示该条命令可以被系统软件查询。

仪器软件启动后打开上面文件,逐行读取内容,在软件内部构建命令树,以及命令号的存储集合。命令号为其内部的功能函数的命令索引,仪器软件与系统软件通过网络等建立连接后,接收到命令,根据冒号与引号开头分为ASCII形式的命令字符串和命令数字串,

完整命令字符串以冒号开头,数字串以引号开头,如果接收到命令字符串通过命令解析后在命令树中遍历查找对应的命令执行函数;如果接收到命令数字串,则直接转为数字,作为命令函数的索引,直接执行对应的功能函数。

系统软件端,在程序的开始处,开辟如下两个数组,CmdStr[4]和nCmd[4],其中CmdStr[4]用于存储程序中用到的所有命令串,nCmd[4]用于存储从仪器软件反馈回来的所有命令号,由于要用到4条命令,所以数组大小为4。系统软件中CmdStr[4]具体内容如下:

系统软件与仪器软件建立连接后,发送命令集的命令号查询指令到仪器软件,然后将整个命令串数组CmdStr[4]发送给仪器软件,仪器软件将命令集中所有命令串对应的命令号以数组的形式反馈给系统软件,系统软件将所有命令号接收后存储在命令号数组中。执行完该指令后,nCmd[4]具体内容如下:

nCmd[4]={186,187,188,189};

系统软件建立仪器控制函数SendCommand(char*pStrCmd,char*pstrPara);,其接口参数为命令串地址和命令的参数串地址,其内部实现如下:函数将命令串pStrCmd地址减去命令串数组的首地址CmdStr,然后除以4,获得的数字作为访问命令号数组nCmd[4]的索引,系统软件对仪器软件的控制都必须通过该函数实现。如果系统软件要设置仪器起始频率2GHz时,调用函数SendCommand(CmdStr[1],”2GHz”);该函数会将命令串对应的命令号187加引号变为”187”,然后和参数2GHz通过网络直接发送到仪器软件,实现了对仪器起始频率的设置,如果要查询仪器的起始频率,调用函数SendCommand(CmdStr[1],”?”);,就实现了对仪器起始频率的查询。这样系统软件的实现方式对用户来讲依旧是通过命令串的方式进行编程,SendCommand在内部完成命令串到命令号的快速映射,仪器软件内部避免了复杂的解析遍历过程,因为仪器的命令集往往达几千条,解析效率还是比较低的,这样能够极大的提高系统软件与仪器软件的交互控制效率。

本发明提出了一种高效的仪器程控方法,程控命令定义方法不仅包括了命令串,还包括命令号,在文件中无需按序排列,由于文件中的命令号唯一识别,非常便于仪器软件程控系统的实现,也非常便于后续程控命令的添加和删除等。

本发明的系统软件程控以命令串方式进行调用,对用户编程非常方便,内部机制实现了命令串到命令号的转换,相当于系统软件直接通过网络等接口调用仪器软件的内部功能函数,无需仪器软件进行复杂的命令串解析和搜索,极大的提高了程控执行效率。同时本发明兼容于标准程控命令规范的解析实现方式,使仪器软件实现了灵活高效率的交互程控。本发明实现方便,不增加开发成本。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1