一种嵌入式系统软件中命令解析的偏移量方法

文档序号:6649663阅读:312来源:国知局
专利名称:一种嵌入式系统软件中命令解析的偏移量方法
技术领域
本发明涉及一种嵌入式系统软件中命令解析的偏移量方法,属于嵌入式系统软件技术领域。
背景技术
在Fuji Xerox的eGret系列产品中,对嵌入式系统的软件升级、调试和维护等工作,目前都是通过PC以串行通信方式,向IOT主机发送命令,接着由系统软件(与CMX紧密结合的、基于状态机方式的IOT软件)首先对命令进行解析,然后按命令要求执行相应程序代码,以及向PC返回所需数据。
作为接受者的角度看,PC端发来的只是一串字符,IOT需要将这个字符串分解成命令部分和数据参数部分,另外对于不符合命令格式的字符串要有异常处理的方法。这种分解和处理的过程就是命令解析。
IOT能够分析执行一条命令,首先需要该命令被包含在设计者已经指定的命令集中;同时,如果命令后面带有数据参数,这部分又必须符合设计此命令的事先约定和取值范围。不仅如此,为了更好的向用户返回执行的情况和状态,在命令执行前后必要的提示和执行结果也是软件工程师需要关注的。
所谓逐段截取法,在最初接受这样一个任务时,一般的软件工程师能够想到的最直接方法就是命令解析方法按空格自然地将一条控制台发来的命令分解成命令部分和参数部分。然后按照获得的中已知的命令进行逐项匹配(也就是比较判的查找过程),命令集就是软件设计者提供给维护人员可以使用的命令项的总和。如图1所示,这是逐段截取法的命令解析程序,其程序如下逐段截取方法,依次进入忽略头空格、截取命令部分,忽略中间空格、截取参数部分、忽略尾空格,命令部分、在命令集匹配,在命令集中吗?进行判断,如果是,将Paraeter作为参数传到Command对应的Routine,如果否,异常报错,然后共同到一次命令解析结束。
这种方法存在如下几种缺点1)对于像图2-1那样的树型菜单(树的深度超过2),将无法识别重名的命令;2)这种方法未将连续字符的提取方法模块化,所以可读性差,不易维护;也不利于代码移植和模块化的程序风格;3)程序记录Str的游标i和CP/PP游标看上去较为混乱,而且没法保证参数个数可变的要求;4)命令集完全由后面的匹配判断语句决定,当命令扩充后势必代码变得冗长和不易维护;5)缺少命令备份和提取的机制,缺少必要的和用户交互提示信息。
因此,有必要研发新的命令解析方法,来适应各类软件的开发。

发明内容
本发明的目的在于提供一种嵌入式系统软件中命令解析方法,该方法就是,偏移量方法OM,采用了合理的数据结构、恰当有效的分析算法,来适应各类软件的开发。
为达到上述目的,本发明的技术方案是偏移量方法OM采用的硬件处理器MCU、DMA控制器、图像处理专用芯片;所采用软件包括合理的数据结构、恰当有效的分析算法;该方法是将逐段截取的分析方法进行如下优化1)、定义新MENU类型,包括命令的提示信息,可以支持不同树深度下实现重名命令;
2)、将子串分析的代码模块化为CParse过程;3)、定义子串起始地址的字符指针数组argv[];4)、命令集CS的增加,以后将是只增加MENU类型变量数组的工作;5)、增加命令的备份和提取机制。
本发明的有益效果首先是引入了字符是否空格的标志iswhite和inwhite;而这两个标志总是表征相邻字符的情况。我们知道子串被空格分割的判断方法,就是当前字符和前一字符在空格的逻辑下互斥;所以子串开始条件为(inwhite && !iswhite)和子串结束条件为(!inwhite && iswhite);另外,引入记录子串起始地址的字符指针数组argv[],在前述子串起始判断条件成立的情况下,就将游标(str)的值(地址)顺序拷贝到argv
、argv[1]…、argv[MAXARGS-1]而且对子串的数目定义可以通过修改4.1中宏MAXARGS轻松实现。


图1为与本发明相近的逐段截取法的命令解析程序;图2为本发明的命令解析偏移量法的完整流程程序;图3为本发明的命令解析偏移量法核心的子串定位过程程序。
具体实施例方式
以下结合附图和实施例对本发明作进一步说明。
偏移量方法OM采用的硬件包括处理器MCU、DMA控制器、图像处理专用芯片参照图2,这是本发明的命令解析偏移量法的完整流程程序。
如图所示,其流程如下从[开始分析菜单开始]1,以下进入[打印提示信息]2、[置空命令字符数组str]3、[接收字符串空?]4进行判断,如果是,进入[结束分析莱单]11;如果否,[提取上次命令?]5,如果是,[提取oldstr->str]6,如果否,[备份str->oldstr]7,然否共同进入[命令解析Gparse得参数个数]8,[在命令集中匹配命令,若匹配到则执行之]9,[命令不在命令集的异常处理(打印出错)]10,重新[返回到打印提示信息]2。
参照图3,这是本发明的命令解析偏移量法核心的子串定位过程程序。如图所示,其流程如下从[开始子串分析]12,以下进入[清空字符指针组]13,[剔除前导部分空格,初始化子串数目和inwhite标志]14,进入到[字符串尾?]判断15,如果是,[结束子串分析]23;如果否,[判断当前字符,置标志iswhite]16,进入[子串开始?]判断17,如果是,进入[记录字符位置,子串数增1;未到最大子串数,loop continue,否则调用返回]18;如果否,进入[子串结束?]判断19,如果否,进入[复制iswhhite=>inwhite字符串游标增1(步进)]21,[返回子串数]22,[结束子串分析]23;如果是,进入[当前字符置′0′]20,然后进入[复制iswhhite=>inwhite字符串游标增1(步进)21,[返回子串数]22,[结束子串分析]23。
这里实现的关键有两点首先是引入了字符是否空格的标志iswhite和inwhite;而这两个标志总是表征相邻字符的情况。我们知道子串被空格分割的判断方法,就是当前字符和前一字符在空格的逻辑下互斥;所以子串开始条件为(inwhite &&!iswhite)和子串结束条件为(!inwhite && iswhite);另外,引入记录子串起始地址的字符指针数组argv[],在前述子串起始判断条件成立的情况下,就将游标(str)的值(地址)顺序拷贝到argv
、argv[1]...、argv[MAXARGS-1]而且对子串的数目定义可以通过修改4.1中宏MAXARGS轻松实现。
权利要求
1.嵌入式系统软件中命令解析的偏移量方法,用于各类软件的开发,其硬件包括包括处理器MCU、DMA控制器、图像处理专用芯片;其特征在于该方法所述的软件包括以下步骤(1)采用合理数据;(2)然后采用恰当有效的分析算法;所述的采用合理的数据结构并将逐段截取的分析方法进行如下优化后成为有效的分析算法定义新MENU类型,包括命令的提示信息,可以支持不同树深度下实现重名命令;将子串分析的代码模块化为CParse过程;定义子串起始地址的字符指针数组;命令集CS的增加,以后将是只增加MENU类型变量数组的工作;增加命令的备份和提取机制,oldstr[]字符数组和“!”命令;该方法涉及完整流程程序和子串定位过程程序。
2.如权利要求1所述的命令解析的偏移量方法,其特征在于所述的偏移量方法完整流程程序,其流程如下从[开始分析莱单开始]1,以下进入[打印提示信息]2、[置空命令字符数组str]3、[接收字符串空?]4进行判断,如果是,进入[结束分析莱单]11;如果否,[提取上次命令?]5,如果是,[提取oldstr->str]6,如果否,[备份str->oldstr]7,然否共同进入[命令解析Gparse得参数个数]8,[在命令集中匹配命令,若匹配到则执行之]9,[命令不在命令集的异常处理(打印出错)]10,重新[返回到打印提示信息]2。
3.如权利要求1所述的命令解析的偏移量方法,其特征在于所述的偏移量方法核心的子串定位过程程序,其流程如下从[开始子串分析]12,以下进入[清空字符指针数组]13,[剔除前导部分空格,初始化子串数目和inwhite标志]14,进入到[字符串尾?]判断15,如果是,[结束子串分析]23;如果否,[判断当前字符,置标志iswhite]16,进入[子串开始?]判断17,如果是,进入[记录字符位置,子串数增1;未到最大子串数,loopcontinue,否则调用返回]18;如果否,进入[子串结束?]判断19,如果否,进入[复制iswhhite=>inwhite字符串游标增1(步进)]21,[返回子串数]22,[结束子串分析]23;如果是,进入[当前字符置`0`]20,然后进入[复制iswhhite=>inwhite字符串游标增1(步进)21,[返回子串数]22,[结束子串分析]23。
全文摘要
本发明涉及一种嵌入式系统软件中命令解析的偏移量方法,用于各类软件的开发,其硬件包括处理器MCU、DMA控制器、图像处理专用芯片;该方法涉及的软件包括合理的数据结构、恰当有效的分析算法,是将逐段截取的分析方法进行如下优化1)定义新MENU类型,包括命令的提示信息,可以支持不同树深度下实现重名命令;2)将子串分析的代码模块化为CParse过程;3)定义子串起始地址的字符指针数组argv[];4)命令集CS的增加,以后将是只增加MENU类型变量数组的工作;5)增加命令的备份和提取机制。该方法还涉及完整流程程序和子串定位过程程序。
文档编号G06F9/44GK1967473SQ20051011051
公开日2007年5月23日 申请日期2005年11月18日 优先权日2005年11月18日
发明者金辉 申请人:上海富士施乐有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1