一种用于多用户接入控制的接收机程控解析算法的制作方法

文档序号:15992761发布日期:2018-11-20 18:13阅读:308来源:国知局
一种用于多用户接入控制的接收机程控解析算法的制作方法

本发明涉及接收机领域,具体涉及一种用于多用户接入控制的接收机程控解析算法。



背景技术:

接收机与频谱仪类似,是一种用于接收处理有线或无线电讯号的设备,而且接收机常常需要在存在多个强信号环境下正确测量弱信号,为了适应这种复杂多变的使用场景,提供良好的用户使用体验,保护测试人员不受辐射伤害,接收机系统常采用上位机与驻机分离的软件系统架构。上位机主要功能是对各个部件的参数设置、控制与操作以及测试数据和状态的存取,并对回传的各种测量数据完成显示等,驻机的主要功能是通过以太网口接收上位机的参数设置、操作等命令信息,对接收机采集到的数据进行FFT、解调、ITU应用、电平测量等处理,并通过以太网口将数据回传。上位机与驻机之间通过网口通信,使用SCPI(可编程仪器标准命令)进行指令与数据的传输。因此,需要设计一种SCPI命令的打包、解析与处理的软件架构。

接收机中的命令解析,绝大部分采用的是使用哈希表来进行命令的匹配,这种方法使用一个命令名作为Key值,并将命令处理函数作为一个数组的函数变量来处理,使得每个命令的Key值都与一个函数值(即数组下标,hash值)相对应。这样,可以使用命令名来进行hash,由此得到数组的某个成员(该命令对应的解析函数)。哈希表的基本原理是:首先进行内存分配,形成映射存储区,利用hash函数,将程控命令设为Key值,对Key值进行映射到不同区域(程控处理函数)进行保存,这样就建立了程控命令与程控处理函数之间的对应关系。当通过程控套接字接收到程控命令后,即对程控命令进行hash,得到指向该程控命令的处理函数映射,并进行实际的命令处理。

虽然使用哈希表减少一部分遍历查找命令带来的时间开销,但是由于哈希表使用的Key值与映射函数值均不存在顺序排列,这会增加后期的软件维护难度,当需要进行程控命令的添加、修改、删除等操作时,易导致发生错误,且出错位置不易查找。同时还会大量增加系统内存的消耗,这对内存并不充裕的驻机内存的影响是致命的。有的命令解析会采用树状结构来进行命令的匹配解析,也仅仅局限于单用户接入的工作模式,本身的结构并不支持多用户的扩展。



技术实现要素:

针对现有接收机算法使用哈希表导致内存过大,及仅支持单用户操作的问题,本发明提供了一种用于多用户接入控制的接收机程控解析算法。

本发明采用以下的技术方案:

一种用于多用户接入控制的接收机程控解析算法,包括:

步骤1:开始监听线程,判断接收机的状态,若接收机关闭,则关闭监听线程;若接收机没有关闭,则等待新用户接入接收机,新用户接入接收机后,接收机根据接入的用户数量创建多个接收子线程;

步骤2:判断监听线程是否开启,若开启则执行步骤3,否则关闭接收线程;

步骤3:等待接收用户发送的SCPI命令,接收到命令后,执行步骤4,否则关闭接收线程;

步骤4:调用GetNextWord()函数,获取多节点命令的第n级子节点,其中n大于等于1,以“:”为分界,根据函数返回值的不同来判断该节点是否为命令的最后一级节点,若不是则执行步骤5,若是则执行步骤7;

步骤5:将获取到的该节点与树结构中所有同级节点进行匹配,若匹配成功,则执行步骤4;若匹配未成功,则执行步骤6;

步骤6:查找并匹配可省略的同级节点的下一级子节点,判断是否匹配成功,若匹配成功,则执行步骤4;若匹配未成功,则该节点为非法节点,跳出函数,不进行处理;

可省略的同级节点是指通过系统判断,此处同级节点可省略掉;

步骤7:将获取的最后一级节点与树结构中的同级节点进行匹配,若匹配成功,则判断节点后是否为“?”,若为“?”,则该命令为查询命令,否则为设置命令,之后执行步骤9;若匹配未成功,则执行步骤8;

步骤8:查找并匹配可省略的同级节点下一级子节点,判断是否匹配成功,若匹配成功,则判断节点后是否为“?”,若为“?”,则该命令为查询命令,否则为设置命令,之后执行步骤9;若匹配未成功,则该节点为非法节点,跳出函数,不进行处理;

步骤9:获取全部的节点后,调用GetPara()函数获取命令参数,将其置于全局变量中,根据上述步骤中判断出的为查询命令或者设置命令,调用对应的命令处理函数,完成单次的程控命令处理过程;

步骤10:单次命令处理完成后,判断后续是否同时收取到多条命令,若仍有命令未处理,则将执行步骤4,重新从第一级节点开始匹配;若为单命令,则命令处理结束,返回步骤2。

本发明具有的有益效果是:

本发明提供的用于多用户接入控制的接收机程控解析算法,通过设计一种新的程控构架,添加多条子线程,支持多用户同时接入,极大方便了用户的测试体验。提供了一种新的程控命令,支持SCPI命令的长命令与短命令两种形式,支持多节点命令的节点命令省略,支持多命令同时接收后依次解析,支持后续程控命令添加、修改与删除等操作。提高了驻机内存的使用效率,降低了驻机软件的维护难度,提高了程控命令解析的速率,能够快速进行节点命令的匹配和执行,为快速上行、下行命令与数据的传递提供保障。

附图说明

图1为本发明接收机的程控架构的原理框图。

图2为本发明接收机的程控命令的原理框图。

具体实施方式

下面结合附图对本发明进行具体的说明:

结合图1和图2,一种用于多用户接入控制的接收机程控解析算法,包括:

步骤1:开始监听线程,判断接收机是否关闭,若接收机关闭,则关闭监听线程;若接收机没有关闭,则等待新用户接入接收机,新用户接入接收机后,接收机根据接入的用户数量创建多个接收子线程;

步骤2:判断监听线程是否开启,若开启则执行步骤3,否则关闭接收线程;

步骤3:等待接收用户发送的SCPI命令,SCPI命令为可编程仪器标准命令,接收到命令后,执行步骤4,否则关闭接收线程;

步骤4:调用GetNextWord()函数,GetNextWord()函数是预先设置的函数,GetNextWord()函数是用来获取下一个SCPI命令的节点,调用GetNextWord()函数,获取多节点命令的第n级子节点,其中n大于等于1,以“:”为分界,根据函数返回值的不同来判断该节点是否为命令的最后一级节点,若不是则执行步骤5,若是则执行步骤7;

步骤5:将获取到的该节点与树结构中所有同级节点进行匹配,若匹配成功,则执行步骤4;若匹配未成功,则执行步骤6;

步骤6:查找并匹配可省略的同级节点的下一级子节点,判断是否匹配成功,若匹配成功,则执行步骤4;若匹配未成功,则该节点为非法节点,跳出函数,不进行处理;

可省略的同级节点是指通过系统判断,此处同级节点可省略掉;

步骤7:将获取的最后一级节点与树结构中的同级节点进行匹配,若匹配成功,则判断节点后是否为“?”,若为“?”,则该命令为查询命令,否则为设置命令,之后执行步骤9;若匹配未成功,则执行步骤8;

步骤8:查找并匹配可省略的同级节点的下一级子节点,判断是否匹配成功,若匹配成功,则判断节点后是否为“?”,若为“?”,则该命令为查询命令,否则为设置命令,之后执行步骤9;若匹配未成功,则该节点为非法节点,跳出函数,不进行处理;

步骤9:获取全部的节点后,调用GetPara()函数,GetPara()函数是预先设置的函数,GetPara()函数是用来获取命令参数,GetPara()函数获取命令参数,将命令参数置于全局变量中,根据上述步骤中判断出的为查询命令或者设置命令,调用对应的命令处理函数,完成单次的程控命令处理过程;

步骤10:单次命令处理完成后,判断后续是否同时收取到多条命令,若仍有命令未处理,则将执行步骤4,重新从第一级节点开始匹配;若为单命令,则命令处理结束,返回步骤2。

本发明提供的用于多用户接入控制的接收机程控解析算法,通过设计一种新的程控构架,添加多条子线程,支持多用户同时接入,支持上位机同时显示、进行查询设置等操作,极大方便了用户的测试体验,扩展了接收机的使用环境和测试条件。

本发明提供了一种新的程控命令,程控命令为树状结构,支持SCPI命令的长命令与短命令两种形式,支持多节点命令的节点命令省略,支持多命令同时接收后依次解析,将所有需要的程控命令存入驻机软件中,使用树形结构进行节点的存储,支持后续程控命令添加、修改与删除等操作。提高了驻机内存的使用效率,降低了驻机软件的维护难度,提高了程控命令解析的速率,能够快速进行节点命令的匹配和执行,为快速上行、下行命令与数据的传递提供保障。

当然,上述说明并非是对本发明的限制,本发明也并不仅限于上述举例,本技术领域的技术人员在本发明的实质范围内所做出的变化、改型、添加或替换,也应属于本发明的保护范围。

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