首页> 中国专利> 一种嵌入式系统中具有实时帮助功能的命令行管理方法

一种嵌入式系统中具有实时帮助功能的命令行管理方法

摘要

本发明提供一种嵌入式系统中具有实时帮助功能的命令行管理方法,命令行终端显示包括指令的输入显示和信息提示显示两部分,命令矩阵是一个树形的数据结构,它由根、目录、命令、关键字和参数各种节点组成,每一条命令是由关键字和参数组成,功能相近、相似或相关的命令被组织在同一目录中,而实现不同功能的目录被安装在命令矩阵根节点上,当系统在指令输入区接收到用户的输入的时候,将同时触发命令元素及其参数的查找和匹配,系统根据用户已经输入的内容,在上述命令矩阵中匹配合适的关键字或者参数,一旦匹配成功,系统在提示信息区给出匹配的内容,如果匹配不成功,则在提示信息区给出出错提示。

著录项

  • 公开/公告号CN1534460A

    专利类型发明专利

  • 公开/公告日2004-10-06

    原文格式PDF

  • 申请/专利权人 烽火通信科技股份有限公司;

    申请/专利号CN03118862.1

  • 发明设计人 向中青;李凌;周箴;

    申请日2003-03-28

  • 分类号G06F9/318;G06F9/30;

  • 代理机构武汉开元专利代理有限责任公司;

  • 代理人刘志菊

  • 地址 430074 湖北省武汉市洪山区邮科院路88号烽火通信技术部

  • 入库时间 2023-12-17 15:39:00

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-05-18

    未缴年费专利权终止 IPC(主分类):G06F9/318 授权公告日:20060517 终止日期:20150328 申请日:20030328

    专利权的终止

  • 2006-05-17

    授权

    授权

  • 2004-12-22

    实质审查的生效

    实质审查的生效

  • 2004-10-06

    公开

    公开

说明书

技术领域

本发明涉及一种嵌入式系统中具有实时帮助功能的命令行管理方法,提供一种针对现有网络设备等嵌入式系统的命令行界面管理方式,即一种新的实时在线帮助的方法。

背景技术

在目前的数字网络环境下,对网络设备等嵌入式系统的管理方法以形式来划分主要有两种方式:1、通过串口进行的命令行界面管理方式;2、通过网口进行的Windows图形界面管理方式。

虽然命令行管理方式没有Windows图形界面方式的直观、清晰、富于美感,但其具备管理界面相对比较简单、直接,消耗系统资源较少的优点。对于那些网络规模较小的应用,或者工程人员开通、调试的场合,命令行管理方式也不失一种简便快捷的选择。因此,设备供应商一般会同时提供这两种管理方式在不同的应用中。

命令行管理方式也可以大致上分成两种类型:1、直接输入命令;2、采用菜单式选择。

第一种命令行方式,即直接输入命令比较灵活,存在的主要的问题是,由于网络设备等嵌入式系统的功能越来越复杂,命令以及其所需的参数也越来越复杂,用户需要记忆和掌握成百上千条命令,十分不方便。为此,一些主流的厂商进行了改进,提供了一些帮助指令。

例如,目前比较流行的命令行风格中,提供“help”命令(或类似的命令),提供帮助信息;提供“?”指令,在键入命令的同时,配合使用“?”键,系统会提示已经键入的内容之后可能的内容清单;提供“Tab”指令,在键入命令的同时,配合使用“Tab”键,系统可以把剩余的部分补齐。以上这些改进,在一定程度上提高了命令行接口的友好性。但是,在获取帮助时,需要配合其他一些指令,仍然不算方便。

第二种命令行方式,即采用菜单选择的形式输入指令及参数。这种方法提高了命令行的直观性,用户基本上不用记忆指令语法,通过选择设计好的菜单项,就可以完成管理功能。但是这种方法存在着效率问题,一条带有多个参数的指令往往需要用户层层选择菜单,用户很容易迷失在各级菜单中。同时,由于这种方式具备一些图形界面的特点,也增加了开发的复杂度。

发明内容

本发明的目的针对上述现有网络设备等嵌入式系统命令行管理方式的不足,提供了一种新的实时在线帮助的方法。用户不需要其他指令,在每一次键入的同时,即可以实时获取键入的剩余部分的提示信息。

本发明的技术方案:

本发明的一种嵌入式系统中具有实时帮助功能的命令行管理方法包括命令行超级终端显示方式、命令的定义和储存、命令元素及其参数的查找和匹配,其命令行超级终端显示包括指令的输入显示和信息提示显示两部分内容,对系统命令的定义和存储是采取命令矩阵方式,命令矩阵是一个树形的数据结构,它由根、目录、命令、关键字和参数各种节点组成,它们的层次关系是:每一条命令是由关键字和参数组成的,功能相近、相似或者相关的命令被组织在同一目录中,而实现不同功能的目录被安装在命令矩阵根节点上,命令元素及其参数的查找和匹配过程是:当系统在指令输入区接收到用户的输入的时候,将同时触发命令元素及其参数的查找和匹配,系统根据用户已经输入的内容,在上述命令矩阵中匹配合适的关键字或者参数,一旦匹配成功,系统在提示信息区给出匹配的内容,如果匹配不成功,则在提示信息区给出出错提示。

所述的嵌入式系统中具有实时帮助功能的命令行管理方法,命令行管理方式将命令行超级终端划分成两个区域,两个区域具有的功能不同,前者专门提供给用户输入用,后者则供系统实时显示提示。

所述的嵌入式系统中具有实时帮助功能的命令行管理方法,命令矩阵的载入是由双重循环构成的,一个循环是载入所有定义的命令目录,另一个是载入所有指定目录上的命令。

所述的嵌入式系统中具有实时帮助功能的命令行管理方法,其载入命令循环被套用在载入命令目录循环中,即它是载入命令目录循环的组成部分。

所述的嵌入式系统中具有实时帮助功能的命令行管理方法,完成一个目录的命令载入之后要对该目录上的命令进行排序,排序是按照命令的关键字和参数的字母顺序排列。

所述的嵌入式系统中具有实时帮助功能的命令行管理方法,其命令矩阵载入流程安装一个命令目录时,首先要给待安装的命令目录建立一个索引号,不同的目录的索引是唯一的,第二步给该命令目录分配一块内存空间,用来安装命令,第三步指定命令矩阵下面的流程中安装该目录上的命令的入口函数。

所述的嵌入式系统中具有实时帮助功能的命令行管理方法,其命令元素及其参数的查找和匹配过程用计数变量i计数,当系统接收到一个空格时,变量i加1,i表示当前用户输入的指令是第几个命令元素。如果用户连续输入空格,计数值只累加一次。当用户输入的是ASCII码在31和127之间的字符时,表示输入的是一个命令元素的其中一个字符,需要使用查找算法,与安装在当前目录下的命令的第i个元素进行比较,列出所有匹配成功的命令元素,如果没有一个匹配成功的,则显示出错信息。

有益效果:

本命令行管理方法改善了传统的命令行管理方式使用起来不直观,不方便的不足。采用本命令行管理方法,用户在屏幕的指令输入区键入指令的每一个字符的同时,都可以在屏幕的信息提示区实时得到帮助。用户不用使用其他的指令,就可以很明确的实时知道,剩余的指令部分有那些可能情况,输入是否正确等等。可以说是提供给用户一种实时在线帮助功能,提高了管理效率。  同时也注意到与传统的命令行管理方式兼容。

附图说明

图1是定义命令系统的组织结构示意图。

图2是实现命令矩阵的载入过程流程图。

图3是安装命令目录的流程图。

图4是安装命令的流程图。

图5是在命令矩阵中匹配合适的关键字或者参数主流程图。

具体实施方式

本发明的主要要解决的问题是:

a、命令矩阵与命令元素的定义和存储;

b、命令元素及其参数的查找和匹配;

c、超级终端显示的合理规划和光标定位技术;

本命令行管理方式对传统嵌入式系统管理技术进行了深入研究和分析,在设计中充分考虑了与传统命令行方式的兼容性;很好地解决了实时在线帮助系统存在的效率问题;同时还关注了界面的美观实用。技术方案由三个部分组成,具体说明如下:

一、超级终端显示的合理规划;

本命令行管理方式将命令行超级终端划分成两个区域。例如,可以将屏幕的0行~21行作为指令的输入区;将屏幕的22行~23行作为提示信息区。(当然,也可以不明显的分区,而是直接在每一条命令输入行的下一行显示提示信息。)

两个区域具有的功能不同,前者专门提供给用户输入用;后者则供系统实时显示提示。由于进行了以上屏幕区域划分,就需要光标在这两个区域之间往返,光标定位技术成为关键。在本方案中使用了标准的ANSI输出格式进行光标定位技术。

二、命令矩阵与命令元素的定义:

对系统提供的所有指令进行分类,按照功能相关的原则,将指令关联到不同的目录中。同时也需要规划好各个命令需要携带的参数,将各个参数(包括帮助信息)与指令关联起来。

图1是定义了命令系统的组织结构示意图:

本方案定义的命令矩阵是一个树形的数据结构。它由根、目录、命令、关键字和参数等5.种节点组成。它们的层次关系是:每一条命令是由关键字和参数组成的;功能相近、相似或者相关的命令被组织在同一目录中;而实现不同功能的目录被安装在命令矩阵根节点上。

三、命令矩阵的载入:

整个嵌入式系统进行初始化的时候需要进行命令矩阵的初始化,即实现命令矩阵的载入过程,流程见图2:

算法描述:

命令矩阵的加载流程是由双重循环构成的,其一是循环加载所有定义的命令目录(加载命令目录流程见图3);其二是:循环加载所有指定目录上的命令(加载命令流程见图4)。由图2描述的命令矩阵的加载流程可以看到,命令目录加载循环中套用了命令加载循环。具体说明如下:

1、加载命令目录循环:

系统首先检查是否还有定义的命令目录没有加载。如果发现还有未载入的命令目录的时候,就会调用加载命令目录的流程,载入一个未安装的命令目录。然后进入加载命令循环,在该目录上安装相应的命令。完成此轮循环之后,系统继续检查是否还有定义的命令目录没有加载。如果还有,则开始新一轮的循环,加载一个未安装的目录,并在该目录上安装相应的命令。直到系统认定已经加载完成所有定义的命令矩阵中的命令目录(包括命令目录中的所有命令)。自此,完成了命令矩阵的加载。

2、加载命令循环:

加载命令循环被套用在加载命令目录循环中,即它是加载命令目录循环的组成部分。流程如下:系统首先检查该目录中是否还有定义的命令没有加载。如果发现还有未载入的命令时,就会调用加载命令的流程,载入一条未安装的命令。完成此轮循环之后,系统继续检查是否还有定义的命令没有加载。如果还有,则开始新一轮的循环,加载一个未安装的命令。直到系统认定已经加载完成该命令目录中的所有命令。

之后要对该目录上的指令进行排序。排序是按照命令的关键字和参数的字母顺序,这样做是为了在系统运行时提供帮助信息的时候能够采用高效的查找算法,从而提高系统的效率。对于排序算法和查找算法,设计者可以灵活采取“数据结构”中的一些经典算法,这里不再赘述。

安装命令目录的流程:

该流程与下面介绍的安装命令的流程共同构成了命令矩阵载入流程。流程图如图3:

算法描述:

当系统发现一个未安装的命令目录时,调用本流程安装一个命令目录。首先,要给待安装的命令目录建立一个索引号。值得注意的是,不同的目录的索引是唯一的。即命令目录索引号唯一标识了命令目录。第二步,给该命令目录分配一块内存空间,用来安装命令。分配空间的大小可以根据开发者的需要定义。第三步,指定命令矩阵下面的流程中安装该目录上的命令的入口函数。即告诉系统,用什么函数安装该目录上的命令集。其实就是下面的函数。

安装命令的流程:

该流程与上面介绍的安装命令目录的流程共同构成了命令矩阵载入流程。流程图如图4:

算法描述:

当系统发现指定目录上有没有安装的命令时,调用该流程安装一条命令。首先,系统检查指定的命令目录是否存在,即是否初始化了指定的目录。检查的目的是为了保证有足够的内存空间安装命令。如果指定的命令目录没有进行初始化,则打印出错信息,然后退出。

如果指定的命令目录存在,则将命令的关键字和参数保存在指定的命令空间中,并建立好命令与关键字1~n,参数1~n之间的映射关系。建立命令与关键字1~n,参数1~n之间的映射关系,实际上就是告诉系统,该指令的各个关键字和参数分别是什么,保存在内存空间的什么地方等等相关信息。

当映射好各个关键字和参数之后,需要指定好该命令的执行函数。也就是告诉系统当用户键入该指令的时候,调用什么函数来执行该指令,完成该指令的功能。

当系统发现还没有载入完成所有的命令目录的时候,就会循环执行该流程,先载入一个未安装的命令目录。然后在该目录上安装命令(包括关键字和参数的设定),直到在该目录上安装完所有的命令。之后要对一个目录上的指令进行排序。排序是按照指令的关键字和参数的字母顺序,这样做是为了在系统运行时提供帮助信息的时候能够采用高效的查找算法,从而提高系统的效率。

四、命令的关键字及参数的查找和匹配:

当系统在指令输入区接收到用户的输入的时候,将同时触发命令元素及其参数的查找和匹配,系统根据用户已经输入的内容,在上述命令矩阵中匹配合适的关键字或者参数;一旦匹配成功,系统在提示信息区给出匹配的内容;如果匹配不成功,则在提示信息区给出出错提示。

图5是在命令矩阵中匹配合适的关键字或者参数主要流程图:

算法描述:

该流程是由一个死循环组成的。系统打开一个任务,将一直等待并侦听用户的输入。当系统接收到用户输入的字符后,根据用户的输入进行相应的处理。这里用到了计数变量i(i从1开始计数),它表示当前用户输入的是指令的第几个命令元素。假设当前的命令元素是第5个,此时i=5。当系统接收到一个空格时,意味着其后输入的非空格字符是第6个命令元素,于是i=6。如果用户连续输入空格,计数值只累加一次。

如果用户输入的是ASCII码在31和127之间的字符,表示输入的是一个命令元素的其中一个字符,于是,需要使用查找算法,与安装在当前目录下的命令的第i个元素进行比较,列出所有匹配成功的命令元素,如果没有一个匹配成功的,则显示出错信息。对于查找算法,设计者可以灵活采取“数据结构”中的一些经典算法,这里不再赘述。

如果用户输入的是空格,表示命令的当前命令元素(关键字或者参数)已经输入完成,以后的输入是下一个命令元素。

如果输入的是回车键,表示当前的命令已经输入完成,则调用在安装该命令时指定的执行函数运行该命令。

系统设计者还可以定义一些其他的输入字符,完成特定的处理流程。这里不再赘述。

五、命令矩阵的加载模块主流程源代码:

  Command_matrix_init()  {  int dir_index,command_index;/*初始化变量*/  for(dir_index=1;dir_index<=_MAX_DIR_INDEX;dir_index++)/*安装命令目录循环*/  {  install_dir(dir_index);/*安装命令目录dir_index*/  /*安装命令循环*/  for(eommand_index=l;command_index<=_MAX_COMMAND_INDEX;command_index++)  {  install_command(dir_index,command_index);/*在dir_index命令目录上安装命令  command_index*/ }  sort_command(dir_index); /*对命令目录dir_index上的命令集合进行排序*/  }  }

六、操作过程实例:

系统定义了一个Admin目录,其中有两条命令,分别是“cd”和“clear”命令。“cd”命令包括关键字“cd”和参数“../device/fdb/igmp/port/service/snmp/stp/vlan”,其中的“/”表示可选的参数。“cd”命令执行的结果是进入相应的目录。例如,用户希望进入Service目录,以往的命令行方式是在当前提示符后直接输入“cdservice”,然后回车。用户需要记住该指令。下面是使用本方案提供的命令行方式:

根据上述的设计要求,在系统初始化的时候初始化命令矩阵,安装“Admin”目录,在该目录上安装上述两条指令。同时打开一个任务,监听命令行的输入,并进行相应的处理。

1.用户键入“c”,系统匹配到两个命令元素,相应在提示信息区提示可能的指令是“cd”或者“clear”,系统等待用户的进一步输入。

2.用户接着键入“d”,系统匹配了指令“cd”,并等待输入参数。

3.用户接着键入“”(空格键)时;系统认为第一个命令元素已经输入完成,在提示信息区提示下面的命令元素(参数)可能是“..”、“device”、“fdb”、“igmp”、“port”、“service”、“snmp”、“stp”或者“vlan”。

4.用户接着键入“s”,系统开始在命令的第2个命令元素中匹配,并在提示信息区提示此时可能的参数是“service”、“snmp”或者“stp”。

5.用户接着键入“e”,系统继续在命令的第2个命令元素中匹配,在提示信息区提示此时可能的参数只有“service”。此时,用户可以直接回车,进入“Service”目录。

6用户接着键入<cr>(回车键),“cd service”指令执行成功。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号