CN103605496A - 一种实现快速解析基于scpi协议的通信指令的方法 - Google Patents
一种实现快速解析基于scpi协议的通信指令的方法 Download PDFInfo
- Publication number
- CN103605496A CN103605496A CN201310630799.8A CN201310630799A CN103605496A CN 103605496 A CN103605496 A CN 103605496A CN 201310630799 A CN201310630799 A CN 201310630799A CN 103605496 A CN103605496 A CN 103605496A
- Authority
- CN
- China
- Prior art keywords
- instruction
- node
- brotgher
- empty
- level
- 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.)
- Pending
Links
Images
Landscapes
- Communication Control (AREA)
Abstract
本发明涉及可编程器件及设备、板级之间的通信技术,具体涉及一种C语言描述的实现快速解析基于SCPI协议的通信指令的方法。本方法将SCPI指令按照层次设置成二叉树的结构,然后采用迭代的方式解析出指令所代表的含义,即该指令的指令号,每个指令号代表一种对仪器设备的操作,首先对于新接收到的指令首先从根节点开始进行分析,然后对于接收到的指令的每一级节点进行解析,通过采用本方法,可以便捷地实现SCPI指令的解释,即让设备执行此指令相应的操作。SCPI有非常好的可读性,可维护性,可广泛的应用于设备,板级之间的通信。本方法可在诸如MCU,ARM,POWERPC,MIPS,FPGA等可编程器件上实现。
Description
技术领域
本发明涉及可编程器件及设备、板级之间的通信技术,具体涉及一种实现快速解析基于SCPI协议的通信指令的方法。
背景技术
随着通信及计算机技术的发展,现在的设备与设备之间,设备中各个子单元的通信指令变得更加复杂。SCPI(Standard Commands for Programmable Instrument)语言本身定义了一组基本的子系统关键字,同时允许用户增加或减少关键字,这些关键字通常是一些有意义的英文单词,以方便记忆,也称助记符。通过SCPI可以很方便的制定通信协议,并且协议比较容易理解。
发明内容
本发明的目的是提供一种C语言描述的实现快速解析基于SCPI协议的通信指令的方法。该方法基于SCPI协议使用层次化结构——“树”形结构,每条“树”指令都是以根层次指令(也称“子系统”)开始,每个根层次指令下面又有许多层次指令。只有按照从树根到叶子的完整路径发送指令,仪器设备才能正确执行相应的操作指令。
本发明采取的技术方案是:.一种实现快速解析基于SCPI协议的通信指令的方法,其特征在于,将SCPI指令按照层次设置成二叉树的结构,然后采用迭代的方式解析出指令所代表的含义,即该指令的指令号,每个指令号代表一种对仪器设备的操作,其指令解析步骤如下:
步骤一:对于新接收到的指令首先从根节点开始进行分析;
步骤二:对于接收到的指令的每一级节点进行解析,每一级解析步骤如下:a.首先判断该节点的子节点是否为空;若不为空,则比较该节点的指令与指令树中该级指令字符是否匹配;若不匹配,则判断其兄弟节点是否为空;若兄弟节点不为空,则迭代解析其兄弟节点;若兄弟节点为空,返回错误,说明指令输入错误;b.若该级节点指令的字符与指令树中该级指令字符匹配,则入栈本节点的指令号,并迭代解析其子节点;c.若判断该节点的子节点为空,则比较该节点的指令与指令树中该级指令字符是否匹配,若不匹配,判断其兄弟节点是否为空,若兄弟节点不为空,则迭代解析其兄弟节点,若兄弟节点为空,返回错误,说明指令输入错误;d:若该节点的指令与指令树中该级指令字符匹配,则入栈该节点的指令号,然后出栈全部指令号,并计算总指令号。
本发明所述的总指令号的计算方法为各级节点指令号Ni乘以Ki的代数和,其中i表示第i级,i=1,2,3…,Ni表示第i级节点的指令号,Ki则是第i级的加权值,Ki的计算方法为第i级的最大指令号Nmax的(i-1)次方。
本发明所产生的有益效果是:通过采用本方法,可以便捷地实现SCPI指令的解释,即让设备执行此指令相应的操作。SCPI有非常好的可读性,可维护性,可广泛的应用于设备,板级之间的通信。本方法可在诸如MCU,ARM,POWERPC,MIPS,FPGA等可编程器件上实现。
附图说明
图1是本发明解析SCPI指令的流程图。
具体实施方式
以下结合附图对本发明作进一步说明:设置整个指令树中的各个节点格式,用C语言描述如下:
typedef struct TreeNode *PtrToNode;
struct TreeNode
{
unsigned char CommandNO;
}
SCPI指令一般是按照层次的树型结构,这样不便于操作,将树型结构转化成二叉树这种特殊的结构,同一层次的节点互为兄弟节点,每个节点有一个子节点和一个兄弟节点,如果没有,则就指向空节点null。
采用动态接收指令的方式,将指令缓存到指令buffer,将指令中的参数缓存到参数buffer。接收到指令结束字节后,提取指令buffer中的指令进行指令解析,解析的方法如图1所示。
Claims (2)
1.一种实现快速解析基于SCPI协议的通信指令的方法,其特征在于,将SCPI指令按照层次设置成二叉树的结构,然后采用迭代的方式解析出指令所代表的含义,即该指令的指令号,每个指令号代表一种对仪器设备的操作,其指令解析步骤如下:
步骤一:对于新接收到的指令首先从根节点开始进行分析;
步骤二:对于接收到的指令的每一级节点进行解析,每一级解析步骤如下:a.首先判断该节点的子节点是否为空;若不为空,则比较该节点的指令与指令树中该级指令字符是否匹配;若不匹配,则判断其兄弟节点是否为空;若兄弟节点不为空,则迭代解析其兄弟节点;若兄弟节点为空,返回错误,说明指令输入错误;b.若该级节点指令的字符与指令树中该级指令字符匹配,则入栈本节点的指令号,并迭代解析其子节点;c.若判断该节点的子节点为空,则比较该节点的指令与指令树中该级指令字符是否匹配,若不匹配,判断其兄弟节点是否为空,若兄弟节点不为空,则迭代解析其兄弟节点,若兄弟节点为空,返回错误,说明指令输入错误;d:若该节点的指令与指令树中该级指令字符匹配,则入栈该节点的指令号,然后出栈全部指令号,并计算总指令号。
2.根据权利要求1所述的一种实现快速解析基于SCPI协议的通信指令的方法,其特征在于,所述的总指令号的计算方法为各级节点指令号Ni乘以Ki的代数和,其中i表示第i级,i=1,2,3…,Ni表示第i级节点的指令号,Ki则是第i级的加权值,Ki的计算方法为第i级的最大指令号Nmax的(i-1)次方。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310630799.8A CN103605496A (zh) | 2013-12-02 | 2013-12-02 | 一种实现快速解析基于scpi协议的通信指令的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310630799.8A CN103605496A (zh) | 2013-12-02 | 2013-12-02 | 一种实现快速解析基于scpi协议的通信指令的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103605496A true CN103605496A (zh) | 2014-02-26 |
Family
ID=50123727
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310630799.8A Pending CN103605496A (zh) | 2013-12-02 | 2013-12-02 | 一种实现快速解析基于scpi协议的通信指令的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103605496A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106341197A (zh) * | 2016-08-11 | 2017-01-18 | 中国电子科技集团公司第四十研究所 | 一种用于多用户接入控制的接收机程控解析算法 |
CN110110149A (zh) * | 2018-01-11 | 2019-08-09 | 天维讯达(北京)科技有限公司 | 一种scpi命令的解析方法及装置 |
CN110933077A (zh) * | 2019-11-29 | 2020-03-27 | 深圳市风云实业有限公司 | 一种报文解析系统及方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1431586A (zh) * | 2002-08-22 | 2003-07-23 | 智慧第一公司 | 非暂存存储器参照的控制机制 |
CN102521250A (zh) * | 2011-11-16 | 2012-06-27 | 中国电子科技集团公司第四十一研究所 | 一种智能测量仪器通用语法分析的实现方法 |
-
2013
- 2013-12-02 CN CN201310630799.8A patent/CN103605496A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1431586A (zh) * | 2002-08-22 | 2003-07-23 | 智慧第一公司 | 非暂存存储器参照的控制机制 |
CN102521250A (zh) * | 2011-11-16 | 2012-06-27 | 中国电子科技集团公司第四十一研究所 | 一种智能测量仪器通用语法分析的实现方法 |
Non-Patent Citations (1)
Title |
---|
刘震: "SCPI命令解析平台的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106341197A (zh) * | 2016-08-11 | 2017-01-18 | 中国电子科技集团公司第四十研究所 | 一种用于多用户接入控制的接收机程控解析算法 |
CN106341197B (zh) * | 2016-08-11 | 2018-11-20 | 中国电子科技集团公司第四十一研究所 | 一种用于多用户接入控制的接收机程控解析算法 |
CN110110149A (zh) * | 2018-01-11 | 2019-08-09 | 天维讯达(北京)科技有限公司 | 一种scpi命令的解析方法及装置 |
CN110110149B (zh) * | 2018-01-11 | 2023-09-12 | 天维讯达(北京)科技有限公司 | 一种scpi命令的解析方法及装置 |
CN110933077A (zh) * | 2019-11-29 | 2020-03-27 | 深圳市风云实业有限公司 | 一种报文解析系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111026470B (zh) | 用于输入数据的验证和转换的系统和方法 | |
CN111831814B (zh) | 摘要生成模型的预训练方法、装置、电子设备和存储介质 | |
CN106713357A (zh) | 一种通用的网络协议解析方法 | |
US10223550B2 (en) | Generating canonical representations of JSON documents | |
CN103853650A (zh) | 一种模糊测试的测试用例生成方法及装置 | |
AU2015210760A1 (en) | Static feature extraction from structured files | |
CN104750663B (zh) | 页面中文本乱码的识别方法及装置 | |
US9367432B2 (en) | Testing system | |
US20220147498A1 (en) | Generation of schemas with error resolve | |
WO2023098043A1 (zh) | 一种接口参数校验方法及装置 | |
CN104579748A (zh) | Scd在线校核的网络分析方法及系统 | |
CN103605496A (zh) | 一种实现快速解析基于scpi协议的通信指令的方法 | |
CN105721451B (zh) | 一种可拓展的Modbus协议解析方法及装置 | |
JP2023002730A (ja) | テキスト誤り訂正とテキスト誤り訂正モデルの生成方法、装置、機器及び媒体 | |
US8903715B2 (en) | High bandwidth parsing of data encoding languages | |
CN109542968A (zh) | 一种基于vasp软件计算数据处理方法与装置 | |
CN113467777A (zh) | 路径识别方法、装置和系统 | |
CN105005496B (zh) | 一种跨语言转换网络数据包定义文件的处理系统及方法 | |
CN114489594A (zh) | 一种命令解析器的构建方法、命令解析处理方法及装置 | |
Bouras et al. | A tool for automating network simulation and processing tracing data files | |
Liu et al. | Extracting sent message formats from executables using backward slicing | |
CN111245633A (zh) | 微电网主设备的配置文件及其运行方法 | |
CN103455307B (zh) | 对命令行输出的信息进行处理的方法和装置 | |
US20140201474A1 (en) | On-disk multimap | |
CN105808549B (zh) | 基于映射文件自动组帧及分析帧的客户端方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140226 |