CN108228161B - 一种扩展结构化命令行的系统和方法 - Google Patents

一种扩展结构化命令行的系统和方法 Download PDF

Info

Publication number
CN108228161B
CN108228161B CN201611154048.3A CN201611154048A CN108228161B CN 108228161 B CN108228161 B CN 108228161B CN 201611154048 A CN201611154048 A CN 201611154048A CN 108228161 B CN108228161 B CN 108228161B
Authority
CN
China
Prior art keywords
command
user
node
parameter
processing function
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201611154048.3A
Other languages
English (en)
Other versions
CN108228161A (zh
Inventor
卫进
李运喜
张旻
麦先根
魏国
李晓龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xian Aeronautics Computing Technique Research Institute of AVIC
Original Assignee
Xian Aeronautics Computing Technique Research Institute of AVIC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xian Aeronautics Computing Technique Research Institute of AVIC filed Critical Xian Aeronautics Computing Technique Research Institute of AVIC
Priority to CN201611154048.3A priority Critical patent/CN108228161B/zh
Publication of CN108228161A publication Critical patent/CN108228161A/zh
Application granted granted Critical
Publication of CN108228161B publication Critical patent/CN108228161B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

在嵌入式软件开发过程中,用户可以通过命令行接口(即Shell)对系统进行信息查询、操作控制,它是嵌入式开发环境中使用较为广泛的功能之一。本发明介绍了一种利用命令的结构表示,可以对Shell命令进行动态开发的系统和方法,用户能够通过本发明的图形用户接口对命令进行增加、编辑和删除操作。本发明易于实现将命令的描述翻译成自然语言,用于生成相关说明文档。该发明解决了Shell的命令由开发者开发完成后,用户无法对其中的命令进行扩展的问题。同时,能够自动生成帮助文档、说明文档,提高了开发的效率。

Description

一种扩展结构化命令行的系统和方法
技术领域
本发明主要应用在嵌入式软件开发过程中,属于计算机系统软件专业技术领域;具体涉及一种扩展结构化命令行的系统和方法。
背景技术
命令行接口是计算机操作系统(如DOS,UNIX等)的通用接口。用户通过一行行输入命令,操作系统顺序执行这些命令,操作系统对命令和程序不进行区分。用户输入命令或程序的名称,按“Enter”键,然后系统执行命令或运行程序。例如,用户输入“Command0”命令,然后按“Enter”键,“Enter”键作为用户完成命令输入的信号,系统获取到用户输入的命令后,执行“Command0”命令。
虽然命令行接口是嵌入式系统开发环境中重要的功能之一,但它的开发方式有一定的缺陷。比如,上述操作系统(如DOS和UNIX),系统包含有一组标准命令集,软件开发人员(即Shell的用户)可能会有添加新的命令的需求,但同时可能其他软件开发人员开发全新的操作系统,没有提供任何命令,所以对于Shell的开发,不能够灵活地满足用户不同的需求。命令行接口提供的命令通常是为了测试一个新开发的功能而设计和实现的,命令行接口的各命令实现都是“硬编码”到程序中,这种方式是不易于进行扩展的,并且开发效率低。
本发明利用命令的结构表示,以图形用户界面的形式提供对命令的管理,具有较强的可扩展性;以结构化的方式存储命令信息,可以自动生成自然语言文本的命令说明文档。
发明内容
本发明提出的利用命令结构表示的系统和方法,其中“命令结构表示”体现在两个方面:1.命令信息的存储方式是结构化的存储方式,具体是以树形结构进行存储的,命令的增加、编辑、删除也是对命令的树形结构中的命令节点进行对应的操作;2.图形用户接口中,用户看到的命令是以树形结构组织的,用户能够清楚地看到命令、参数、处理函数之间的关系,通过对命令树形结构上的节点进行操作,实现对命令的操作。
该系统的结构图如图1所示,主要由以下6个部分组成:
命令结构列表——图形化的方式显示命令的组织结构,用户在其上对各节点进行操作。
命令节点编辑器——为用户提供命令节点编辑功能,用户可以对命令名、命令帮助、访问级别等属性进行编辑。
命令处理函数编辑器——为用户提供命令的执行函数的编辑功能,用户可以对函数名、函数参数等信息进行编辑。
处理函数代码生成器——提供根据用户输入的处理函数的相关信息,自动生成处理函数代码的功能。
命令参数编辑器——为用户提供命令参数的编辑功能,用户可以对参数名称、参数类型、取值范围等信息进行编辑。
命令结构生成模块——根据用户对命令节点、命令参数、命令处理函数的编辑,生成或更新命令组织结构,并以结构化的方式进行保存。
该系统的数据流图如图2所示,进行命令扩展的方法步骤如下:
Step1:命令结构列表解析命令间关系,并以树形列表的方式显示给用户;
Step2:用户选定一个操作节点,打开命令节点编辑图形化接口进行插入、删除、编辑,命令节点编辑器为用户显示当前命令节点的相关信息,并提供命令参数、命令处理函数的编辑入口;
Step3:用户分别通过命令参数编辑器、命令处理函数编辑器对命令参数、处理函数进行编辑,其中命令处理函数编辑后由处理函数代码生成器自动生成处理函数代码;
Step4:编辑完成后,命令结构生成模块根据编辑后的命令参数、命令处理函数等信息生成新的命令结构信息;
Step5:将新的命令数据更新到命令结构化数据中。
技术效果:本发明为用户提供了一个可扩展、自动化的命令行接口编辑系统和方法。比较目前的命令行接口设计,命令行接口开发完成后,用户能够根据自身需求对命令行进行扩展。采用结构化的命令组织方式,便于对命令进行管理。
附图说明
图1系统结构图
图2系统数据流图
图3命令结构树形表示示例
图4命令结构列表用户界面
图5图4示例的树形结构表示
图6添加命令节点流程图
图7生成的自然语言文件示例
具体实施方式
命令以树形结构进行组织,如图3所示,图例中的命令树具有命令节点10-60:根节点10有三个子命令节点,show节点20,set节点30,get节点40,其中,show节点20有两个子命令节点,ipx节点50和ip节点60。当用户在命令行接口输入命令,操作系统解析命令,运行相应的程序执行命令。例如,用户输入命令“show ip”,按下“Enter”键,操作系统会先将该命令解析为两个部分,“show”和“ip”。然后,操作系统将从root遍历命令树,首先到达show节点20,然后到达ip节点60,最后执行与show节点20和ip节点60相关联的相应的函数,并将结果反馈给用户。示例中的命令树具有三个层次,第一层为根节点10,第二层次为节点20、30、40,第三层为节点50、60,可以通过在各层添加子节点,孙子节点等,使命令树具有更多的层次、更庞大的树形结构,以支持更多的命令和更复杂的命令。
命令结构列表的用户界面如图4所示,命令节点是分层的结构。命令结构的根节点205有7个孩子节点:command0节点210,command1节点220,command2节点230,command3节点240,command4节点250,set节点260,和show节点270。这7个命令节点210-270是根节点205的孩子节点,它们在根节点的下面一级。其中set节点260,有3个孩子节点:ip节点261,struct节点262和sysName节点263,节点261-263在260节点的下面一级。图中还显示了每个命令节点相关的参数和处理函数,例如,command3节点240具有两个相关联的参数,unnamed1参数241和unnamed2参数242,和一个处理函数VD_Command3Handler 243。参数241-242和处理函数243在命令3节点的下面一级。如图所示,命令节点、参数节点和处理函数节点,通过图标显示的不同进行区分,例如,command3节点240、unnamed1参数节点241和VD_Command3Handler处理函数节点243前面的图标是不同的,而command0节点和command3节点240的图标是一样的,说明它们都是命令的节点。图4用户界面中的例子,用树形结构表示为图5所示。可以看出,图4中显示的参数节点和处理函数节点都是以独立的节点形式存在,而实际上,如图5所示,只有命令节点在树形结构中为节点,参数节点和处理函数节点都是对应的命令节点中的相应信息。所以,用户只有增加或删除命令节点时,才会改变命令的树形结构,对参数节点和处理函数节点的操作,只改变对应命令节点的信息内容。
添加一个命令节点的流程如图6所示。首先,用户在图4所示的命令结构列表视图中选定要插入新的命令节点的位置,例如,如果用户插入command0节点210,先选中根节点205,并点击界面上的“+”按钮201,或双击根节点205。然后就进入了命令节点编辑界面,用户可以根据界面上的文字提示对新命令节点信息进行输入,并通过点击添加参数按钮和添加处理函数按钮,可以分别对命令参数和命令处理函数进行编辑。编辑完成后,系统会生成命令树结构文件、处理函数和参数定义文件、处理函数代码。下面详细介绍步骤320-370。
第320步骤,用户需在命令节点编辑器中输入命令节点的名称,需输入一个新加命令的帮助信息,用户可以在使用命令行接口时查看,例如,对于command0节点210,输入一个帮助字符串:“帮助字符串为command0”,当用户在命令行接口中键入“help command0”时,会显示“帮助字符串command0”给用户。用户还需设置命令形式,来确认命令是否使能,设置命令的访问级别(例如,“0”表示所有的用户可以访问该命令)。在命令节点编辑器中会显示新增命令节点所属的命令结构的分支。该信息不是由用户填充,是基于用户在步骤310的操作位置由系统自动填充。
继续到步骤330,为新的命令输入参数信息。用户通过点击命令节点编辑器中“添加参数”按钮打开命令参数编辑器。命令参数编辑器中的勾选项“No keyword”指示参数是否有一个关键字或名称,一个没有关键字的参数是一个隐含的类型参数,也就没有命名。例如,一个具有名为“timeout”的参数的命令“reboot”,当用户在命令行接口中键入“reboottimeout 5”时,表示“reboot”,参数“timeout”的值为“5”,这将导致设备在超时5个时间周期后重新启动。但是,它也可以作为隐含参数。在这种情况下,用户输入“tiemeout 5”,也将导致设备在超时5个时间周期后重新启动,因为5是一个隐含的超时参数。如果参数不是一个隐含的类型(即不勾选“No keyword”选项),用户则需填写参数的名称。用户还需选择参数的类型(例如,无符号长整型,字符串,布尔等)。当用户参数配置完成,点击OK按钮则返回命令节点编辑界面,并在界面中显示新增加的参数。当然,一个命令节点不一定必须有参数,因此,步骤330可以被认为是可选步骤,如果不添加参数,命令节点编辑界面的参数信息处将为空。对于指令节点的参数,还可以通点击“编辑参数”按钮进行编辑,也可以通过点击“删除按钮”进行删除。
继续到步骤340,为新的命令添加处理函数。用户在处理函数编辑界面中,填入处理函数名(例如VD_Command3Handler)。在该界面中会显示可用的参数列表。在步骤330,用户添加的当前命令节点的参数,将会显示在可用的参数列表中,同时,当前命令节点的父节点及其祖先节点的参数均为当前节点的可用参数,也在可用的参数列表中。用户可以通过选中可用参数字列表中的任何一个参数,点击“Required”按钮,或者“Optional”按钮,来确定所选参数是必需参数还是可选参数。在函数参数一栏,显示用户所选的所有参数,及参数的类型。必需参数是在使用命令行接口时必须要输入的,可选参数可以选择输入的,即使没有该参数输入,操作系统仍可以正确执行命令。在处理函数编辑界面的自定义处理代码处,用户可以填入自定义的处理函数代码。当处理函数配置好后,点击OK按钮,返回命令节点编辑界面,并在界面中显示新增加的处理函数信息。对于命令节点的处理函数,还可以通点击“编辑函数”按钮进行编辑,也可以通过点击“删除按钮”进行删除。在的多个处理函数的情况下,操作系统可以在执行命令时调用对应的代码执行命令。
继续到步骤350,用户完成步骤320-340后,在命令节点编辑界面点击“Apply”按钮,系统首先保存用户输入的全部信息,然后根据这些信息生成命令结构文件。命令结构文件是如下所示形式:
Figure BDA0001180310560000051
此代码描述了根节点(mRootCmdNode)和四个子节点(command0,command1,command2和command3)。每个节点都具有用户定义的节点相关联的信息。命令结构文件的生成是基于用户输入的信息,生成和存储为命令结构的形式的文件。上面的示例代码可包括下列信息:关键字或名称,帮助字符串,模式定义,访问级别,是否使能,孩子节点的数目,孩子节点指针,参数节点个数,参数节点指针,处理函数个数,处理函数指针。例如,示例中定义的根节点mRootCmdNode。根节点关键字或名称(空),帮助信息(空),模式定义(空),访问级别(0),非使能(FALSE),孩子节点个数(4),孩子节点指针(mRootChildren),参数个数(0),参数节点指针(空),处理函数个数(0),处理函数指针(空)。示例中的“mRootChildren[]”描述了根节点的孩子节点。以其中的“command3”为例,节点名字(command3),帮助信息(kCommand3Help),模式定义(空),访问级别(0),非使能(FALSE),孩子节点个数(0),孩子节点指针(空),参数个数(2),参数节点指针(mCommand3Params),处理函数个数(1),处理函数指针“mCommand3Handlers”。对于其余孩子节点的代码类似于command3。
继续到步骤360,与生成命令结构文件类似,系统通过用户在命令节点上输入的参数信息,生成参数定义文件,参数的定义是如下所示的形式:
Figure BDA0001180310560000061
此代码描述了command3的参数。command3的描述中有2个参数,参数指针为mCommand3Params。上述代码包括下列信息:关键字或名称,数据类型(例如,整数,布尔值,等),参数掩码,参数序号,标志设置和参数详细信息结构体指针。例如,参数param1,参数名称是param1,数据类型kstring,参数掩码0x00000001,参数序号(即param1是第1个参数,相对param2就是第2个参数),标志设置(0),没有指向另一结构(NULL)。param2的代码类似于参数1的。
对于处理函数的定义如下所示的形式:
Figure BDA0001180310560000062
此代码描述了command3命令节点的处理函数数组mCommand3Handlers。command3有一个处理函数,处理函数数组指针为mCommand3Handlers。具体包括下列信息:命令类型为“0”(即不能处理未被使能的命令),参数1掩码0x00000001,参数2掩码0x0000002,处理函数入口VD_Command3Handler。处理函数代码将在下面更详细地描述。
继续到步骤370,系统根据命令节点的参数信息和处理函数信息,会自动生成一个处理函数代码,以VD_Command3Handler函数为例,代码如下:
Figure BDA0001180310560000063
Figure BDA0001180310560000071
其中paramList是系统获取到的参数列表,而paramDescr结构中是对参数的信息描述,在开发过程中,参数的信息可能会被修改,所以,在处理函数开始时,需根据最新的paramDescr信息和paramList来获取相关联的参数。该功能是由函数RCC_DB_RetrieveParam提供。该函数通过paramList中参数的标识(例如,关键词和/或位掩码标识符)找到基于关键字或掩码标识参数,然后根据paramDescr指针,初始化指向参数列表中的相关参数的参数的描述。用户可以插入自己的代码来完成处理函数的功能。例如,上例中的注释行“/*TO DO:在此处添加用户处理代码*/”表示除了自动生成的代码,开发者可以输入另外的代码。
最后,对于用户创建的所有命令,系统根据用户输入的信息,能够生成一个用户可读格式的输出文件,如图7所示,为文件中对Loadrun命令的描述,包括命令节点信息731,参数表信息732和处理程序信息733,用户能够根据该文件,生成说明文档。

Claims (2)

1.一种扩展结构化命令行的系统,其特征是:由命令结构列表、命令节点编辑器、命令处理函数编辑器、处理函数代码生成器、命令参数编辑器、命令结构生成模块组成;
所述命令结构列表以图形化的方式显示命令的组织结构,用户在其上对各节点进行操作;
所述命令节点编辑器为用户提供命令节点编辑功能,用户可对命令名、命令帮助、访问级别属性进行编辑;
所述命令处理函数编辑器为用户提供命令的执行函数的编辑功能,用户可对函数名、函数参数信息进行编辑;
所述处理函数代码生成器提供根据用户输入的处理函数的相关信息,自动生成处理函数代码的功能;
所述命令参数编辑器为用户提供命令参数的编辑功能,用户可对参数名称、参数类型、取值范围信息进行编辑;
所述命令结构生成模块根据用户对命令节点、命令参数、命令处理函数的编辑,生成或更新命令组织结构,并以结构化的方式进行保存。
2.一种扩展结构化命令行的方法,其特征是:包含以下步骤:
Step1:命令结构列表解析命令间关系,并以树形列表的方式显示给用户;
Step2:用户选定一个操作节点,打开命令节点编辑图形化接口进行插入、删除、编辑,命令节点编辑器为用户显示当前命令节点的相关信息,并提供命令参数、命令处理函数的编辑入口;
Step3:用户分别通过命令参数编辑器、命令处理函数编辑器对命令参数、处理函数进行编辑,其中命令处理函数编辑后由处理函数代码生成器自动生成处理函数代码;
Step4:编辑完成后,命令结构生成模块根据编辑后的命令参数、命令处理函数信息生成新的命令结构信息;
Step5:将新的命令数据更新到命令结构化数据中。
CN201611154048.3A 2016-12-14 2016-12-14 一种扩展结构化命令行的系统和方法 Active CN108228161B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611154048.3A CN108228161B (zh) 2016-12-14 2016-12-14 一种扩展结构化命令行的系统和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611154048.3A CN108228161B (zh) 2016-12-14 2016-12-14 一种扩展结构化命令行的系统和方法

Publications (2)

Publication Number Publication Date
CN108228161A CN108228161A (zh) 2018-06-29
CN108228161B true CN108228161B (zh) 2020-12-29

Family

ID=62638561

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611154048.3A Active CN108228161B (zh) 2016-12-14 2016-12-14 一种扩展结构化命令行的系统和方法

Country Status (1)

Country Link
CN (1) CN108228161B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112905164A (zh) * 2019-12-04 2021-06-04 北京沃东天骏信息技术有限公司 一种项目代码处理方法和装置
CN114070705A (zh) * 2021-11-16 2022-02-18 广东九博科技股份有限公司 基于命令行的设备网管方法、介质及设备
CN114169293A (zh) * 2021-11-29 2022-03-11 深延科技(北京)有限公司 文本转换方法、装置、电子设备及计算机可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6254328A (ja) * 1985-09-02 1987-03-10 Nec Corp ツリ−構造作成編集装置
CN103645931A (zh) * 2013-12-25 2014-03-19 盛杰 代码转换的方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6254328A (ja) * 1985-09-02 1987-03-10 Nec Corp ツリ−構造作成編集装置
CN103645931A (zh) * 2013-12-25 2014-03-19 盛杰 代码转换的方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"命令行接口管理系统的研究与实现";崔滔等;《计算机应用》;20040108;第22卷(第10期);第82-84页 *

Also Published As

Publication number Publication date
CN108228161A (zh) 2018-06-29

Similar Documents

Publication Publication Date Title
US7207031B2 (en) System and method for utilization of a command structure representation
KR100986415B1 (ko) 커맨드 바인딩을 수행하기 위한 데이터-바인딩 매카니즘의 애플리케이션
US7080350B2 (en) Method for developing Web applications, development support system and storage medium for storing programs developed according to the method
KR100994638B1 (ko) 데이터베이스 오브젝트 스크립트 생성 방법 및 시스템
US7921190B2 (en) Method and system for interactively configuring a network device
KR101213843B1 (ko) 원활한 객체 비교 시스템 및 방법
US20020010908A1 (en) System and method for automatic software code generation
JP5192634B2 (ja) 宣言順レポートパラメータ化
US8732595B2 (en) Condition editor for business process management and business activity monitoring
US8214797B2 (en) Visual association creation for object relational class development
CN111427561A (zh) 业务代码的生成方法、装置、计算机设备和存储介质
US20050268280A1 (en) Encapsulating changes to a software application
WO2004086222A2 (en) Development of software systems
KR20060130478A (ko) 관리 도구 환경
Lerman et al. Programming entity framework: code first
US20080005752A1 (en) Methods, systems, and computer program products for generating application processes by linking applications
US20190370028A1 (en) Managing discovery and selection of service interface specifications
US20150261507A1 (en) Validating sql queries in a report
CN108228161B (zh) 一种扩展结构化命令行的系统和方法
US20120060141A1 (en) Integrated environment for software design and implementation
US8126961B2 (en) Integration of client and server development environments
US8433729B2 (en) Method and system for automatically generating a communication interface
KR102309211B1 (ko) 개발 시스템에서의 시맨틱 콘텐츠 액세스 기법
US8700374B1 (en) System and method of using an active link in a state programming environment to locate an element in a graphical programming environment
CN113656001A (zh) 平台组件开发方法、装置、计算机设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant