通讯设备中命令行接口命令的自动拼写检查方法及系统的制作方法

xiaoxiao2020-9-10  14

专利名称:通讯设备中命令行接口命令的自动拼写检查方法及系统的制作方法
技术领域
本发明涉及一种数据通讯产品中网管人机命令的自动拼写检查方法及系统,尤其涉及一种路由器、交换机以及接入服务器等数据通讯产品测试领域中网管CLI(Command Line Interface,命令行接口)命令相关文本的自动拼写检查器的实现及其自动拼写检查方法。
背景技术
现代数据通讯设备,如路由器、交换机和宽带接入服务器等都支持基于命令行接口CLI的网管方式。操作人员通过运行测试主机上的Telnet(远程登录协议)客户端程序或超级终端程序与被测设备建立连接,并通过在程序内键入并执行CLI命令来对设备进行配置管理、测试及维护等操作。CLI命令相关文本的拼写正确性测试作为网管命令正确性测试的一项基本内容,目前尚未有自动化的检查方法以及有力的测试工具支持,测试人员一般只在测试网管命令功能和性能的同时,人工对拼写正确性进行检查,所覆盖的命令文本的路径较单一和固定,并且很容易造成检查错误和遗漏,因此,现有方法在检查的效率和正确性方面均无法满足设备测试的高效率和准确性的要求。
因此,现有技术存有缺陷,尚有待于继续改进和发展。

发明内容
本发明的目的在于提出一种通讯设备中命令行接口命令的自动拼写检查方法,针对现有技术的上述问题提出了一种解决方案,所构造的软件系统可实现网管人机命令相关文本的拼写正确性的自动检查,实现拼写检查的自动高效率和高准确性。
本发明的目的还在于提供一种通讯设备中命令行接口命令的自动拼写检查系统,要解决的技术问题包括CLI命令树的自动遍历、命令文本的拼写检查、用户字典的构建与定制以及命令文本在线检查和离线检查的实现方式,本发明提出的自动拼写检查系统能有效克服现有人工检查方法在正确性和检查效率方面的局限性,并可覆盖被测设备CLI命令树的全部命令分支,能有效地提高检查的正确性以及检查效率和质量。
本发明的技术方案如下一种通讯设备中命令行接口命令的自动拼写检查系统,其中,其包括如下功能模块通讯协议模块、命令状态机模块、命令树遍历模块、字典引擎模块、控制模块、人机界面模块;所述通讯协议模块设置在测试主机操作系统的TCP/IP协议栈或串口驱动模块之上,完成Telnet客户端的协议处理或串口通讯协议处理,为所述命令状态机模块提供文本方式的人机命令字符流;所述命令状态机模块实现命令字符流的解析与处理,并调用所述命令树遍历模块构造命令节点树;所述字典引擎模块根据用户选择的字典文件完成初始字典的构建,并提供命令文本的自动拼写检查;上述各模块在所述控制模块的协调下完成所述命令节点树的遍历和命令的预处理。
所述的自动拼写检查系统,其中,所述字典引擎模块对命令文本的自动拼写检查可实时或批处理进行。
所述的自动拼写检查系统,其中,所述控制模块还控制在所述人机界面上拼写错误的实时显示与告警。
所述系统的自动拼写检查方法,其包括如下步骤a)在人机界面内设置底层通讯参数;
b)选择字典文件,构造初始字典;c)启动所述命令状态机,按照命令树遍历算法,生成命令节点树,根据用户设定的拼写检查方式,对人机命令文本进行拼写检查。
所述的方法,其中,所述方法还包括所述用户设定的拼写检查方式包括d)如果选择实时检查方式,则被测设备发送的字符串经过命令预处理器处理,分解为单词序列,并调用字典引擎的搜索算法模块进行匹配,匹配的结果实时显示在人机界面中;如果选择批处理方式,则命令文本首先存储至内存文件,在命令树遍历结束后进行批量预处理和拼写检查,检查结果显示在人机界面中或在日志文件中。
所述的方法,其中,所述字典引擎采用键树数据结构。
所述的方法,其中,所述步骤b)中的字典的初始创建由用户通过人机界面选择字典文件的方式完成,字典引擎使用插入算法对字典文件中的单词进行批处理插入,后续新词的插入使用同样的算法完成,所述字典引擎的插入步骤如下b1)初始化单词数组下标为0,当前节点为根节点;b2)判断单词该下标的字符,如果为NULL,设置当前节点#指针为TRUE;否则转步骤b3);b3)判断当前节点中该单词下标字符对应的指针,如果为NULL,以该单词为键创建一叶节点,将该叶节点指针存储在当前节点中该单词下标字符所对应的指针处,完成插入操作;否则转步骤b4);b4)判断当前节点中该单词下标字符对应的指针所指的节点类型,如果为叶节点,转步骤b6),否则转步骤b5);b5)设置当前节点为当前节点中该单词下标字符对应的指针所指向的节点,将单词数组下标递增,转步骤b2);b6)取该叶节点中的键值,从当前字符起,累计该键值与插入单词的公有前缀字符串,对该字符串中的每一字符,循环创建一非叶节点,并将其指针存至当前节点中该单词下标字符对应的指针处,设置当前节点为该新创建的节点;b7)创建一叶节点,将其键值设置为插入的单词,并将该节点指针置于步骤b6)中创建的最下一级内部节点中;b8)判断当前字符位置,如果已到达插入单词的末尾,设置步骤b7)中叶节点的单词结束标志;将步骤b6)中取出的节点指针置入步骤b6)中创建的最下一级内部节点中的对应字符的位置。
所述的方法,其中,所述字典引擎模块的搜索步骤如下b11)初始化单词数组下标为0,当前节点为根节点;b12)判断当前节点中该数组下标字符对应的节点指针,如果指针为NULL,则单词不匹配,向上层报错或记录日志,取下一个单词并转本流程的步骤b11),否则转步骤b13);b13)判断该节点的类型,如果为叶节点,比较单词所剩余字符串后缀与叶节点中存储的字符串是否一致,如果不一致,则向上层报错或记录日志,取下一单词,转步骤b11);否则,匹配成功,取下一个单词并转步骤b11);b14)如果节点类型为内部节点,则递增单词字符下标,将当前指针设置为该节点中当前字符索引的节点指针,并转步骤b12)。
本发明所提供的一种通讯设备中命令行接口命令的自动拼写检查的方法及系统,通过在测试主机通讯协议软件层上构建人机命令树遍历模块,并使用可定制的用户字典,在遍历网管命令树的同时,调用字典引擎模块的命令预处理器以及相关接口函数,完成命令文本的拼写正确性检查,对命令行接口命令可自动进行拼写检查,提高了命令检查的高效率性,并保证了命令的准确性,对网管命令来说尤其具有方便高效准确的效果。


图1是本发明通讯设备中命令行接口命令的自动拼写检查方法及系统与被测设备的交互方式图;图2是本发明的通讯设备中命令行接口命令的自动拼写检查方法及系统的内部结构及功能模块示意图。
具体实施例方式
下面结合附图对本发明的具体实施方式
进行详细说明。
本发明的所述通讯设备中命令行接口命令的自动拼写检查方法及系统中,该自动拼写检查方法通过在测试主机通讯协议软件层上构建人机命令树遍历模块,并使用可定制的用户字典,在遍历网管命令树的同时,调用字典引擎模块的命令预处理器以及相关接口函数,完成命令文本的拼写正确性检查,同时通过人机界面模块实现错误文本的自动显示和告警,实现拼写检查的自动高效率和高准确性。
所述自动拼写检查系统首先在测试主机的拼写检查器软件内构造字典引擎模块,然后通过在通讯协议模块上构建人机命令字符串分析处理软件模块,在测试主机内遍历并生成网管命令节点树数据结构,在构造该数据结构的过程中,实时调用字典引擎进行CLI命令文本的搜索与匹配,或在命令树构造完成后对命令文本进行批处理检查。
本发明所提出的数据通讯产品网管人机命令的自动拼写检查系统以下简称为ACSC(Automatic CLI SpellChecker,CLI命令自动拼写检查器),如图2所示,其包括如下功能模块通讯协议模块、命令状态机模块、命令树遍历模块、字典引擎模块、控制模块、人机界面模块等。
其中,通讯协议模块构建于测试主机操作系统的TCP/IP协议栈或串口驱动模块之上,完成Telnet客户端的协议处理或串口通讯协议处理,为命令状态机模块提供文本方式的人机命令字符流;命令状态机模块实现命令字符流的解析与处理,并调用命令树遍历模块构造命令节点树;字典引擎模块根据用户选择的字典文件完成初始字典的构建,并提供命令文本的实时或批处理检查。上述各模块在控制模块的协调下完成节点树的遍历、命令的预处理以及拼写错误的实时显示与告警等功能。
本发明的所述通讯设备中命令行接口命令的自动拼写检查系统可在Telnet和串口两种通讯方式下实现,运行ACSC软件的测试主机与被测设备的连接和交互模型如图1所示。在Telnet方式下,ACSC软件模块构建在操作系统TCP/IP协议栈软件之上,协议栈底层与NIC驱动接口,在物理层经网络连接与被测设备管理口相连;相应地,在被测设备侧分别有对应软件层,包括网络接口驱动、TCP/IP协议栈、Telnet服务器、人机命令处理模块。在串口方式下,ACSC软件模块构建于操作系统串口驱动程序之上,被测设备侧也使用串口驱动和协议软件,测试主机与被测设备通过串口线进行数据交互。
如图2所示的本发明的ACSC系统内部结构及功能模块包括通讯协议模块、命令状态机模块、命令树遍历模块、字典引擎模块、控制模块、人机界面模块。各模块的功能与实现方式如下1.通讯协议模块通讯协议模块支持Telnet和串口两种通讯方式,可根据人机界面模块的用户设置项分别启动。在Telnet方式下,通讯协议模块实现Telnet客户端协议功能,提供RFC 854网络虚终端(NVT)的实现方式。ACSC的算法可全部基于NVT方式实现,通讯协议模块无需支持其他Telnet选项,因此通讯协议模块在选项协商时对被测设备的选项请求均可做否定应答。通讯协议模块为命令树遍历模块的生成的命令查询串提供发送接口,将这些查询信息发送至被测设备。根据人机界面模块的设置,通讯协议模块在TCP端口23与被测设备建立连接。连接成功后,链路接收的数据流通过调用通讯协议模块协议状态机接口发送至Telnet状态机处理,该状态机处理数据流中的Telnet命令,进行协议交互,并调用命令状态机模块接口将其他数据上传给命令状态机模块处理。在串口方式下,通讯协议模块根据人机界面模块提供的COM端口号、波特率、数据校验与停止位(与被测设备设置一致)信息设置本地串口参数,并调用操作系统提供的读写文件API与被测设备进行交互数据。通讯协议模块将串口接收的字符流发送至命令状态机模块处理,并为命令树遍历模块提供发送数据的接口函数。
2.命令状态机模块命令状态机模块在底层与通讯协议模块接口,接收通讯协议模块上传的命令数据流。命令状态机模块内部实现字符处理状态机功能,根据输入字符和当前状态决定后续操作。
CLI命令的一般格式如下,其中提示符为被测设备返回的命令提示字符串,命令串为ACSC系统在命令串后键入的命令查询字符串,包括一系列命令、子命令、参数以及查询字符串。被测设备接收上述命令字符串后返回该命令字符串的所有下一级子命令、参数、结束符,以及各子命令、参数的描述信息。
[命令串][子命令][命令描述][参数][命令描述][结束符]为解析上述命令格式,命令状态机设置的状态包括等待提示、接收命令名、接收命令提示、列表结束、消耗字符串、空闲提示、换页提示、空闲、错误处理等。各状态下状态机的主要操作如下等待提示状态用于接收并匹配被测设备命令提示符。命令提示符串由用户通过人机界面模块输入。在获取命令提示符后,初始化命令状态机内部的数据结构,切换至空闲状态,等待用户控制其后续执行。
接收命令名状态与接收命令提示状态分别用于接收子命令、参数、命令描述字符串。命令状态机在这两个状态间循环切换,直至命令列表结束。如果命令列表末尾为结束符字符串,该字符串可通过人机界面模块设置,则切换至列表结束状态,如果为提示符字符串,则切换至等待提示状态。列表结束状态接收并匹配结束符字符串。如果匹配成功,对所接收的命令节点和参数节点的属性进行标记,如是否为叶节点以及参数节点的类型等。状态切换至空闲状态,等待命令树遍历模块控制其后续执行。
消耗字符串状态用于当命令树遍历模块判断已遍历至最深层节点时,调用通讯协议模块向被测设备发送垃圾字符串清空被测设备命令缓冲区,并控制命令状态机模块切换至消耗字符串状态。在此状态下,命令状态机模块消耗返回的错误提示字符串,等待提示符字符串,然后切换至空闲状态。
空闲提示状态用于被测设备发送空闲提示字符串时命令状态机模块切换至此状态。空闲提示字符串可由用户通过人机界面模块设置。
换页提示用于当被测设备发送的字符串行数大于终端长度时,将按页发送,并在每页后发送换页提示字符串。在此状态下,命令状态机模块接收并匹配该字符串,如果匹配成功,调用通讯协议模块向被测设备发送特殊字符(通过人机界面模块输入)控制被测设备发送下一页。该换页提示符由用户通过人机界面模块设置。如果通过人机界面模块设置配置被测设备终端长度的命令字符串,将被测设备的终端长度设置为足够长,命令状态机模块可以不包括本状态。
空闲状态用于人机界面模块和命令树遍历模块控制状态机的执行方式。切换至此状态的三种方式为状态机内部逻辑控制切换;由命令树遍历模块直接设置;利用控制模块调用命令状态机模块的接口函数,通过人机界面模块设置。
错误处理状态用于当上述各状态下的操作出现错误时,状态机切换至此状态。根据错误的类型,处理方式包括状态机复位、向人机界面模块报错或终止命令状态机的执行。
在ACSC系统的具体实现中,可以将测试主机与被侧设备之间的登录步骤全部由命令状态机完成,为此该模块中应增加等待登录与等待口令两个状态。其中等待登录状态用于接收并匹配被侧设备的登录提示字符串,等待口令状态用于接收并匹配被侧设备的口令提示字符串。当获取上述信息后,状态机切换至等待提示状态。
3.命令树遍历模块所述命令树遍历模块在底层与所述命令状态机模块接口,直接控制命令状态机的操作;在上层,命令树遍历模块通过控制模块间接接收并执行用户通过人机界面模块发送的控制命令;同时所述命令树遍历模块将命令遍历获取的信息记录在命令树数据结构中。
命令树遍历模块的算法根据通讯设备CLI命令的查询方式确定,该查询方式的一般格式如下[提示符][命令串][查询字符串]提示符为命令提示符,命令串为任意命令字符串,该命令字符串可以为空,此时查询的起点为本命令模式下的所有根命令,查询字符串因设备而异,可通过人机界面模块设置,一般为“?”。当命令串有下层子命令或参数时,在命令串后输入查询字符串,被测设备将返回命令串下层的所有子命令和参数列表。按照上述格式,命令树遍历模块算法的查询步骤从根命令开始,然后采用递进的深度遍历方式依次查询并构造命令节点树。命令树遍历模块的遍历算法采用递归函数实现,函数的参数为要查询节点的父节点指针,实现方式如下1.判断传入的父节点指针是否为NULL,如果为空则报错;2.判断父节点是否处理过,如果处理过,返回NULL;3.从父节点的第一个子节点开始遍历,对每个子节点,如果已处理过,继续查询下一子节点,否则以该子节点指针为参数递归调用本函数;4.判断步骤3中本函数调用的返回值,如果非NULL,则逐级返回此返回值;如果为NULL同时本节点已处理,则返回本节点指针,否则继续处理下一个子节点。
5.如果传入的参数节点没有子节点,直接返回NULL。
当命令状态机模块接收到结束符字符串后,调用命令树遍历模块的接口,函数构造下一次查询的命令字符串,该接口函数首先调用递归函数获得下一个命令节点,然后构造完整的命令查询字符串。当命令列表中只包含结束符字符串时,命令状态机模块通知命令树遍历模块生成垃圾字符串,并调用通讯协议模块将垃圾字符串发送至被测设备,清空被测设备的命令缓冲区。
所述命令节点树保存命令树遍历模块获得的CLI命令节点信息,并组织为多颗相关的二叉树,每颗二叉树用于记录一个命令模式下的全部命令节点信息。初始情况下命令节点树包含一颗二叉树,用于记录登录后的命令模式下命令节点的信息。命令模式由用户通过人机界面模块设置,设置方式为将某一命令节点设置为关键节点,同时设置该关键节点的完整命令字符串以及执行后的命令提示字符串,不同命令模式下的二叉树之间通过关键节点相关联。例如,将进入特权模式的命令节点,如enable设置为关键节点,输入特权模式命令的命令提示符,将在命令节点树中构造一颗新的二叉树,用于记录特权模式下的命令节点信息。
所述命令节点树中记录的节点信息包括节点类型,如子命令和各种参数;节点数据,如命令名和命令描述等;父节点指针;第一个子节点指针;后一节点指针;前一节点指针;遍历标记;当前命令模式及其命令提示符;新的命令模式及其命令提示符;节点属性,如是否为叶节点关键节点;与该节点关联的人机界面模块节点指针等。其中,命令节点与人机界面模块显示相关的信息记录在人机界面模块节点指针中,其中包括本节点及其父、子节点和前后节点的句柄,以及该节点的使能标记等,用户可通过人机界面模块设置节点的使能状态,命令生成与执行模块根据该标记确定命令生成的方式。
4.字典引擎模块所述字典引擎模块的底层为一个CLI命令的预处理器,该预处理器为命令树遍历模块提供接口函数,用于完成CLI命令文本中单词的分割,并输出独立单词的序列。根据用户选择的拼写检查方式,预处理器直接调用字典引擎的接口函数进行单词匹配,或者将单词序列存储至文件或内存缓冲区,进行后续的批处理检查。字典引擎模块采用键树(Trie)数据结构实现字典的构造、插入、搜索、删除等操作。键树是一种高度大于等于2的树,树中每个结点中不是包含一个或几个关键字,而是只含有组成关键字的字符。键树构建在这些关键字的构成字符集上,并使用字符集中的字符完成树的搜索和插入操作。与采用平衡的二叉搜索树的字典结构相比,键树的搜索路径长度对单词数量的增加不敏感,同时,与二叉搜索树不同,单词的匹配不用在每个节点进行,多数情况下只需比较单个字符,在叶节点比较未处理的后缀,因此采用键树的搜索效率比二叉树方式有很大提高。为解决一个词为另一个词的前缀时的查找问题,键树的每个节点中引入一个单词结束符,当查找到某级节点是单词的最后一个字符指针指向的节点非空时,检查该节点结束符位置的指针,如果该指针非空,则表示该词已在键树中。
为提高单词匹配的效率并节省存储空间,键树的叶节点中不必存放要查找的整个单词,只需存储单词的未处理后缀。当从根节点顺次查找时,查找每增加一级,单词的指针递增,这样当查找至叶节点,只需比较单词的后缀长度,因此能有效地提高查找效率;同时,键树的每个节点不必由全部英文字母和结束符组成,而是在每个节点中保存实际存在的字符对应的信息。
字典的初始创建由用户通过人机界面选择字典文件的方式完成,字典引擎使用插入算法对字典文件中的单词进行批处理插入,后续新词的插入使用同样的算法完成。字典引擎的插入算法如下1)初始化单词数组下标为0,当前节点为根节点;2)判断单词该下标的字符,如果为NULL,设置当前节点#指针为TRUE;否则转步骤3);
3)判断当前节点中该单词下标字符对应的指针,如果为NULL,以该单词为键创建一叶节点,将该叶节点指针存储在当前节点中该单词下标字符所对应的指针处,完成插入操作。否则转步骤4);4)判断当前节点中该单词下标字符对应的指针所指的节点类型,如果为叶节点,转步骤6),否则转步骤5);5)设置当前节点为当前节点中该单词下标字符对应的指针所指向的节点,将单词数组下标递增,转步骤2);6)取该叶节点中的键值,从当前字符起,累计该键值与插入单词的公有前缀字符串。对该字符串中的每一字符,循环创建一非叶节点,并将其指针存至当前节点中该单词下标字符对应的指针处,设置当前节点为该新创建的节点。
7)创建一叶节点,将其键值设置为插入的单词,并将该节点指针置于步骤6)中创建的最下一级内部节点中。
8)判断当前字符位置,如果已到达插入单词的末尾,设置步骤7)中叶节点的单词结束标志;将步骤6)中取出的节点指针置入步骤6)中创建的最下一级内部节点中的对应字符的位置。
字典引擎模块的搜索算法如下1)初始化单词数组下标为0,当前节点为根节点;2)判断当前节点中该数组下标字符对应的节点指针,如果指针为NULL,则单词不匹配,向上层报错或记录日志,取下一个单词并转本流程的步骤1),否则转步骤3);3)判断该节点的类型,如果为叶节点,比较单词所剩余字符串后缀与叶节点中存储的字符串是否一致,如果不一致,则向上层报错或记录日志,取下一单词,转步骤1);否则,匹配成功,取下一个单词并转步骤1);4)如果节点类型为内部节点,则递增单词字符下标,将当前指针设置为该节点中当前字符索引的节点指针,并转步骤2)。
5.控制模块所述控制模块提供一组控制ACSC运行方式的公用接口函数来避免各模块间的紧密耦合,其接口函数的具体实现由人机界面模块和其他底层模块提供。ACSC系统中的控制模块做为一个中间层,其封装的接口函数分为上下两层。在上层,控制模块为用户通过人机界面模块控制ACSC提供的调用接口包括启动、停止和复位命令状态机模块状态、读取和设置命令状态机模块状态;启动和停止命令树遍历模块;构建用户字典和测试字典引擎接口;查询拼写检查错误提示信息。在下层,控制模块为其他模块提供的接口包括一组向人机界面模块反馈信息的接口函数,包括各底层模块的出错信息和调试信息的反馈。
6.人机界面模块所述人机界面模块实现ACSC系统的图形用户界面,用户通过该模块可实现的操作包括构造字典并测试字典引擎,如选择字典文件,提供增加、删除新词的界面;拼写检查方式的设置,如在线检查或批处理检查;实现人机命令拼写检查错误的提示与告警界面,包括实时或批处理方式的视觉及声音提示界面;提供输入命令模式下提示符字符串,查询字符串字符串、登录提示字符串、口令提示字符串,空闲提示字符串,换页提示字符串,用户名、口令等的界面;为通讯协议模块提供输入和修改被测设备地址、端口号以及串口方式下的各种通讯参数等的界面等。
用户使用ASCS系统进行自动拼写检查的过程如下1)在人机界面内设置底层通讯参数,如DUT(Device Under Test,待测器件)地址、端口号,DUT的特征字符串,如等待登录提示符、口令提示符、空闲提示符、换页提示符等,设置日志的记录方式等;设置拼写检查的方式。
2)选择字典文件,构造初始字典。
3)启动命令状态机,按照命令树遍历算法,生成命令节点树。根据用户设定的拼写检查方式,对人机命令文本进行拼写检查。
4)如果选择实时检查方式,则被测设备发送的字符串经过命令预处理器处理,分解为单词序列,并调用字典引擎的搜索算法模块进行匹配,匹配的结果实时显示在人机界面中;如果选择批处理方式,则命令文本首先存储至内存文件,在命令树遍历结束后进行批量预处理和拼写检查,检查结果可显示在人机界面中,也可记录在日志文件中。
本发明提出的ACSC系统和相关算法为数据通讯设备CLI命令的拼写检查提供了一种新的解决方案,所构造的ACSC系统可实现网管人机命令文本的实时或批处理方式的自动拼写检查,该方法和系统可直接应用于现有的大多数据数通讯设备,能有效地提高拼写检查的正确性、覆盖率以及检查效率。
应当理解的是,本发明的上述针对具体实施例的描述是比较具体的,不能因此而理解为对本发明的请求保护范围的限制,专利保护范围应以所附权利要求为准。
权利要求
1.一种通讯设备中命令行接口命令的自动拼写检查系统,其特征在于,其包括如下功能模块通讯协议模块、命令状态机模块、命令树遍历模块、字典引擎模块、控制模块、人机界面模块;所述通讯协议模块设置在测试主机操作系统的TCP/IP协议栈或串口驱动模块之上,完成Telnet客户端的协议处理或串口通讯协议处理,为所述命令状态机模块提供文本方式的人机命令字符流;所述命令状态机模块实现命令字符流的解析与处理,并调用所述命令树遍历模块构造命令节点树;所述字典引擎模块根据用户选择的字典文件完成初始字典的构建,并提供命令文本的自动拼写检查;上述各模块在所述控制模块的协调下完成所述命令节点树的遍历和命令的预处理。
2.根据权利要求1所述的自动拼写检查系统,其特征在于,所述字典引擎模块对命令文本的自动拼写检查可实时或批处理进行。
3.根据权利要求2所述的自动拼写检查系统,其特征在于,所述控制模块还控制在所述人机界面上拼写错误的实时显示与告警。
4.一种如权利要求1所述系统的自动拼写检查方法,其包括如下步骤a)在人机界面内设置底层通讯参数;b)选择字典文件,构造初始字典;c)启动所述命令状态机,按照命令树遍历算法,生成命令节点树,根据用户设定的拼写检查方式,对人机命令文本进行拼写检查。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括所述用户设定的拼写检查方式包括d)如果选择实时检查方式,则被测设备发送的字符串经过命令预处理器处理,分解为单词序列,并调用字典引擎的搜索算法模块进行匹配,匹配的结果实时显示在人机界面中;如果选择批处理方式,则命令文本首先存储至内存文件,在命令树遍历结束后进行批量预处理和拼写检查,检查结果显示在人机界面中或在日志文件中。
6.根据权利要求5所述的方法,其特征在于,所述字典引擎采用键树数据结构。
7.根据权利要求6所述的方法,其特征在于,所述步骤b)中的字典的初始创建由用户通过人机界面选择字典文件的方式完成,字典引擎使用插入算法对字典文件中的单词进行批处理插入,后续新词的插入使用同样的算法完成,所述字典引擎的插入步骤如下b1)初始化单词数组下标为0,当前节点为根节点;b2)判断单词该下标的字符,如果为NULL,设置当前节点#指针为TRUE;否则转步骤b3);b3)判断当前节点中该单词下标字符对应的指针,如果为NULL,以该单词为键创建一叶节点,将该叶节点指针存储在当前节点中该单词下标字符所对应的指针处,完成插入操作;否则转步骤b4);b4)判断当前节点中该单词下标字符对应的指针所指的节点类型,如果为叶节点,转步骤b6),否则转步骤b5);b5)设置当前节点为当前节点中该单词下标字符对应的指针所指向的节点,将单词数组下标递增,转步骤b2);b6)取该叶节点中的键值,从当前字符起,累计该键值与插入单词的公有前缀字符串,对该字符串中的每一字符,循环创建一非叶节点,并将其指针存至当前节点中该单词下标字符对应的指针处,设置当前节点为该新创建的节点;b7)创建一叶节点,将其键值设置为插入的单词,并将该节点指针置于步骤b6)中创建的最下一级内部节点中;b8)判断当前字符位置,如果已到达插入单词的末尾,设置步骤b7)中叶节点的单词结束标志;将步骤b6)中取出的节点指针置入步骤b6)中创建的最下一级内部节点中的对应字符的位置。
8.根据权利要求7所述的方法,其特征在于,所述字典引擎模块的搜索步骤如下b11)初始化单词数组下标为0,当前节点为根节点;b12)判断当前节点中该数组下标字符对应的节点指针,如果指针为NULL,则单词不匹配,向上层报错或记录日志,取下一个单词并转本流程的步骤b11),否则转步骤b13);b13)判断该节点的类型,如果为叶节点,比较单词所剩余字符串后缀与叶节点中存储的字符串是否一致,如果不一致,则向上层报错或记录日志,取下一单词,转步骤b11);否则,匹配成功,取下一个单词并转步骤b11);b14)如果节点类型为内部节点,则递增单词字符下标,将当前指针设置为该节点中当前字符索引的节点指针,并转步骤b12)。
全文摘要
一种通讯设备中命令行接口命令的自动拼写检查方法及系统,其系统包括通讯协议模块、命令状态机模块、命令树遍历模块、字典引擎模块、控制模块、人机界面模块;所述通讯协议模块完成Telnet客户端的协议处理或串口通讯协议处理,为所述命令状态机模块提供文本方式的人机命令字符流;所述命令状态机模块实现命令字符流的解析与处理,并调用所述命令树遍历模块构造命令节点树;所述字典引擎模块根据用户选择的字典文件完成初始字典的构建,并提供命令文本的自动拼写检查;上述各模块在所述控制模块的协调下完成所述命令节点树的遍历和命令的预处理。该方法和系统有效地提高了拼写检查的正确性、覆盖率以及检查效率。
文档编号H04L29/06GK1780235SQ200410052350
公开日2006年5月31日 申请日期2004年11月19日 优先权日2004年11月19日
发明者徐冬生 申请人:中兴通讯股份有限公司

最新回复(0)