CN106339249A - 动态配置编程方法 - Google Patents
动态配置编程方法 Download PDFInfo
- Publication number
- CN106339249A CN106339249A CN201610712344.4A CN201610712344A CN106339249A CN 106339249 A CN106339249 A CN 106339249A CN 201610712344 A CN201610712344 A CN 201610712344A CN 106339249 A CN106339249 A CN 106339249A
- Authority
- CN
- China
- Prior art keywords
- data
- function
- user
- script
- data processing
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Communication Control (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种动态配置编程方法,包括以下步骤:步骤一:动态的配置数据格式和解析;步骤二:将配置的数据格式转换成某种脚本语言;步骤三:在接收到的数据之后,按照用户配置的数据结构进行解析,在解析之后的数据上轻松的实现数据处理;步骤四:将处理后的数据按照解析方法再进行打包,传输出去。本发明降低了通信协议等变更时,再次进行软件的开发的工作量。
Description
技术领域
本发明涉及一种配置编程方法,具体地,涉及一种动态配置编程方法。
背景技术
在大型仿真系统中,一般需要通过故障注入的方式来测试系统的健壮性。根据通信协议来模拟的数据包,在数据格式上存在并不存在很大的差异性。在通信协议做出变动时,模拟的数据包也需要同步进行调整,导致一般的故障注入工具在实现时,难以做到通用性。一般故障注入软件需要根据通信协议重新开发通信功能模块,并根据不同的协议生成不同的版本号,以便于区分。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种动态配置编程方法,其降低了通信协议等变更时,再次进行软件的开发的工作量。
根据本发明的一个方面,提供一种动态配置编程方法,其特征在于,包括以下步骤:
步骤一:动态的配置数据格式和解析;
步骤二:将配置的数据格式转换成某种脚本语言;
步骤三:在接收到的数据之后,按照用户配置的数据结构进行解析,在解析之后的数据上轻松的实现数据处理;
步骤四:将处理后的数据按照解析方法再进行打包,传输出去。
优选地,所述步骤一包括如下步骤:
步骤一十一:数据包格式定义;数据包由数据变量组成;
步骤一十二:解包方法和组包方法定义;
步骤一十三:用户根据其通信协议,配置其数据格式,以及验证配置的数据格式;
步骤一十四:将用户数据配置信息保存为xml文件,包含数据的基本定义信息,便于更新其定义的数据配置结构。
优选地,所述步骤二包括如下步骤:
步骤二十一:使用C语言定义基本数据格式;
步骤二十二:根据用户输入的数据结构信息,创建接口函数C文件;
步骤二十三:定义通用的函数指针,处理数据包的解析和组合;并提供外部访问接口;
步骤二十四:创建解包和组包函数文件,包含数据包的解析方法和组合方法;用户自定义的解析和组包函数也进行相应的调用处理;确保按照自定义数据结构处理相关数据包;
步骤二十五:根据配置生成代码文件后,通过编译器进行编译生成dll并进行验证;如编译发生错误,则用户根据反馈信息进行相关的配置修改;
步骤二十六:在配置无误后,自动将解包和组包的方法设置到对应的函数接口,保证通信时的正常调用。
优选地,所述步骤三包括如下步骤:
步骤三十一:数据处理脚本定义;
数据处理的脚本根据用户所采用的编程语言进行编写;允许简单的条件分支和四则运算以及三角函数运算;软件提供函数名称接口,用户根据需要在数据处理的函数接口中编写自己的脚本逻辑;
步骤三十二:根据用户定义的数据结构,修改需要进行数据处理的参数;相关参数的定义是由用户在步骤一中创建,并生成的结构体定义文件,用于在数据处理时使用;
步骤三十三:根据定义的结构体函数,由用户进行相关数据包内的数据处理,并提供修改脚本,支持创建多个脚本;结构体文件中记录有用户定义的数据结构,用户可直接对其中的参数进行修改;在脚本修改完毕后,通过编译器即时编译链接生成DLL文件;期间如果软件会显示脚本编译是否出错;如果出错,则会将错误信息写到输出窗口中,并提示用户修改代码,直到生成正确的DLL文件;
步骤三十四:使用程序调用函数将所有的脚本文件对应的DLL加载到程序内存中;调用函数获取每一个DLL中的数据处理函数的地址;如果函数执行失败,则提示异常信息;
步骤三十五:在软件运行时,操作切换当前的数据处理脚本;在下一次数据收到后,使用新的脚本进行数据处理。
优选地,所述步骤四包括如下步骤:
步骤四十一:定义通用数据的组包函数;
步骤四十二:特殊数据变量的组包函数调用其设定的dll中的函数进行处理;
步骤四十三:获取当前数据结构中的信息,根据通信协议进行组包操作;
步骤四十四:将组织好的数据包进行发送,完成数据处理操作。
优选地,所述数据变量分为结构体和普通数据变量。
与现有技术相比,本发明具有如下的有益效果:(1)本发明实现了通信协议的动态可配置,参数的解析和组包方法的自定义;(2)本发明实现了数据处理的即时修改,可在运行期间修改数据结构的参数;(3)本发明实现了数据处理脚本的动态切换,可在运行时在不同的脚本间进行切换,达到不同的数据处理目的和组合方式;(4)动态配置编程方法大大降低了通信协议等变更时,再次进行软件的开发的工作量;(5)动态配置编程方法以动态加载dll的方式,实现了通信协议的灵活配置,数据处理参数和方式的可变更性。(6)动态配置编程方法基于数据结构处理,改变了以往处理数据流的通信方式。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明动态配置编程方法的流程图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。
如图1所示,本发明动态配置编程方法包括以下步骤:
步骤一:动态的配置数据格式和解析;
步骤二:将配置的数据格式转换成某种脚本语言;
步骤三:在接收到的数据之后,按照用户配置的数据结构进行解析,在解析之后的数据上轻松的实现数据处理;
步骤四:将处理后的数据按照解析方法再进行打包,传输出去。
其中,步骤一包括如下步骤:
步骤一十一:数据包格式定义;数据包由数据变量组成。数据变量分为结构体和普通数据变量。用户通过自定义数据变量来实现通信协议数据包的定义。
变量配置信息主要包含变量名、注释、类型、结构体名称、偏移量、字节数、数据类型配置等。将普通数据类型划分为通用数据、CRC校验数据、自定义数据三类。数据区分大端数据和小端数据。通用数据主要是基础的数据,区分为有符号和无符号,配置时可能还有系数的配置。CRC数据主要是各类校验数据,分CRC、CRC校验和、CRC校验和取低八位、自定义CRC校验类型等。
步骤一十二:解包方法和组包方法定义;
解包和组包方法有默认解析和组合方法,也可以通过dll自定义解包函数和组包函数,在软件运行时,动态加载相关函数进行处理。
步骤一十三:用户根据其通信协议,配置其数据格式,以及验证配置的数据格式。
步骤一十四:将用户数据配置信息保存为xml文件,包含数据的基本定义信息,便于更新其定义的数据配置结构。
其中,步骤二包括如下步骤:
步骤二十一:使用C语言定义基本数据格式;
步骤二十二:根据用户输入的数据结构信息,创建接口函数C文件;
步骤二十三:定义通用的函数指针,处理数据包的解析和组合。并提供外部访问接口;
步骤二十四:创建解包和组包函数文件,包含数据包的解析方法和组合方法;用户自定义的解析和组包函数也进行相应的调用处理;确保按照自定义数据结构处理相关数据包;
步骤二十五:根据配置生成代码文件后,通过编译器进行编译生成dll并进行验证;如编译发生错误,则用户根据反馈信息进行相关的配置修改;
步骤二十六:在配置无误后,自动将解包和组包的方法设置到对应的函数接口,保证通信时的正常调用。
其中,步骤三包括如下步骤:
步骤三十一:数据处理脚本定义;
数据处理的脚本根据用户所采用的编程语言进行编写。允许简单的条件分支和四则运算以及三角函数运算。软件提供函数名称接口,用户根据需要在数据处理的函数接口中编写自己的脚本逻辑。
步骤三十二:根据用户定义的数据结构,修改需要进行数据处理的参数;相关参数的定义是由用户在步骤一中创建,并生成的结构体定义文件,用于在数据处理时使用。
步骤三十三:根据定义的结构体函数,由用户进行相关数据包内的数据处理,并提供修改脚本,支持创建多个脚本。结构体文件中记录有用户定义的数据结构,用户可直接对其中的参数进行修改。在脚本修改完毕后,通过编译器即时编译链接生成DLL文件。期间如果软件会显示脚本编译是否出错。如果出错,则会将错误信息写到输出窗口中,并提示用户修改代码,直到生成正确的DLL文件。
步骤三十四:使用程序调用函数将所有的脚本文件对应的DLL加载到程序内存中。调用函数获取每一个DLL中的数据处理函数的地址。如果函数执行失败,则提示异常信息。
步骤三十五:在软件运行时,也可以操作切换当前的数据处理脚本。在下一次数据收到后,使用新的脚本进行数据处理。
其中,步骤四包括如下步骤:
步骤四十一:定义通用数据的组包函数。
步骤四十二:特殊数据变量的组包函数调用其设定的dll中的函数进行处理。
步骤四十三:获取当前数据结构中的信息,根据通信协议进行组包操作。
步骤四十四:将组织好的数据包进行发送,完成数据处理操作。
本发明通过可配置的方式来实现故障注入的脚本。首先,允许动态的配置数据格式和解析方法。其次,将配置的数据格式转换成某种脚本语言。再次,在接收到的数据之后,按照用户配置的数据结构进行解析,在解析之后的数据上轻松的实现数据处理。最后,将处理后的数据按照用户定义的组包方法,传输出去。通过动态配置编程技术来实现故障注入系统的通信部分的处理,使得协议变更时,仅需要变更通信协议配置文件,重新定义数据包的格式,对数据包的各个字段设置其常规的解析方法,对于特殊定义或需要特殊解析的函数,可以通过导入组包和解包方法。在软件运行时,动态加载通信协议配置文件和组包解包方法,从而实现了通信协议变更,但通信模块的不需要关心实际的通信数据包的格式,仅关注于数据的收发,从而实现了通信的透明传输。动态配置编程技术并不局限于仿真系统的使用,在所有基于通信协议的模块,均可通过该方式来实现数据包格式的定义。它不仅有利于通信模块的扩展,也有利于延长软件的使用周期,也有利于快速完成系统故障注入的仿真等。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。
Claims (6)
1.一种动态配置编程方法,其特征在于,包括以下步骤:
步骤一:动态的配置数据格式和解析;
步骤二:将配置的数据格式转换成某种脚本语言;
步骤三:在接收到的数据之后,按照用户配置的数据结构进行解析,在解析之后的数据上轻松的实现数据处理;
步骤四:将处理后的数据按照解析方法再进行打包,传输出去。
2.根据权利要求1所述的动态配置编程方法,其特征在于,所述步骤一包括如下步骤:
步骤一十一:数据包格式定义;数据包由数据变量组成;
步骤一十二:解包方法和组包方法定义;
步骤一十三:用户根据其通信协议,配置其数据格式,以及验证配置的数据格式;
步骤一十四:将用户数据配置信息保存为xml文件,包含数据的基本定义信息,便于更新其定义的数据配置结构。
3.根据权利要求1所述的动态配置编程方法,其特征在于,所述步骤二包括如下步骤:
步骤二十一:使用C语言定义基本数据格式;
步骤二十二:根据用户输入的数据结构信息,创建接口函数C文件;
步骤二十三:定义通用的函数指针,处理数据包的解析和组合;并提供外部访问接口;
步骤二十四:创建解包和组包函数文件,包含数据包的解析方法和组合方法;用户自定义的解析和组包函数也进行相应的调用处理;确保按照自定义数据结构处理相关数据包;
步骤二十五:根据配置生成代码文件后,通过编译器进行编译生成dll并进行验证;如编译发生错误,则用户根据反馈信息进行相关的配置修改;
步骤二十六:在配置无误后,自动将解包和组包的方法设置到对应的函数接口,保证通信时的正常调用。
4.根据权利要求1所述的动态配置编程方法,其特征在于,所述步骤三包括如下步骤:
步骤三十一:数据处理脚本定义;
数据处理的脚本根据用户所采用的编程语言进行编写;允许简单的条件分支和四则运算以及三角函数运算;软件提供函数名称接口,用户根据需要在数据处理的函数接口中编写自己的脚本逻辑;
步骤三十二:根据用户定义的数据结构,修改需要进行数据处理的参数;相关参数的定义是由用户在步骤一中创建,并生成的结构体定义文件,用于在数据处理时使用;
步骤三十三:根据定义的结构体函数,由用户进行相关数据包内的数据处理,并提供修改脚本,支持创建多个脚本;结构体文件中记录有用户定义的数据结构,用户可直接对其中的参数进行修改;在脚本修改完毕后,通过编译器即时编译链接生成DLL文件;期间如果软件会显示脚本编译是否出错;如果出错,则会将错误信息写到输出窗口中,并提示用户修改代码,直到生成正确的DLL文件;
步骤三十四:使用程序调用函数将所有的脚本文件对应的DLL加载到程序内存中;调用函数获取每一个DLL中的数据处理函数的地址;如果函数执行失败,则提示异常信息;
步骤三十五:在软件运行时,操作切换当前的数据处理脚本;在下一次数据收到后,使用新的脚本进行数据处理。
5.根据权利要求1所述的动态配置编程方法,其特征在于,所述步骤四包括如下步骤:
步骤四十一:定义通用数据的组包函数;
步骤四十二:特殊数据变量的组包函数调用其设定的dll中的函数进行处理;
步骤四十三:获取当前数据结构中的信息,根据通信协议进行组包操作;
步骤四十四:将组织好的数据包进行发送,完成数据处理操作。
6.根据权利要求1所述的动态配置编程方法,其特征在于,所述数据变量分为结构体和普通数据变量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610712344.4A CN106339249B (zh) | 2016-08-23 | 2016-08-23 | 动态配置编程方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610712344.4A CN106339249B (zh) | 2016-08-23 | 2016-08-23 | 动态配置编程方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106339249A true CN106339249A (zh) | 2017-01-18 |
CN106339249B CN106339249B (zh) | 2019-09-27 |
Family
ID=57824637
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610712344.4A Active CN106339249B (zh) | 2016-08-23 | 2016-08-23 | 动态配置编程方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106339249B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108141464A (zh) * | 2017-03-15 | 2018-06-08 | 深圳中兴力维技术有限公司 | 一种通信协议解析代码自动生成方法及系统 |
CN109634681A (zh) * | 2018-11-15 | 2019-04-16 | 福建星云电子股份有限公司 | 一种向制造执行系统上传数据的方法及装置 |
CN111488631A (zh) * | 2020-06-28 | 2020-08-04 | 中国核动力研究设计院 | 一种核级安全显示装置及其组态-解析系统 |
CN112532991A (zh) * | 2020-10-28 | 2021-03-19 | 惠州华阳通用电子有限公司 | 一种作用于rmff格式文件的硬件解码方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101944025A (zh) * | 2010-09-16 | 2011-01-12 | 福建鑫诺通讯技术有限公司 | 基于python语言的tcp/udp数据的自动组包与解包的方法 |
CN102868648A (zh) * | 2012-09-27 | 2013-01-09 | 瑞斯康达科技发展股份有限公司 | 一种进行数据传输的方法、从设备和系统 |
CN104660460A (zh) * | 2015-01-15 | 2015-05-27 | 北京奥普维尔科技有限公司 | 一种测试以太网性能的系统及方法 |
US20150229657A1 (en) * | 2007-09-19 | 2015-08-13 | Trend Micro Incorporated | Method and system for dynamic protocol decoding and analysis |
CN105187258A (zh) * | 2015-09-30 | 2015-12-23 | 北京英诺威尔科技股份有限公司 | 一种可配置的Trap告警解析处理方法 |
CN105573760A (zh) * | 2015-12-16 | 2016-05-11 | 南京邮电大学 | 基于storm的物联网数据处理系统及方法 |
-
2016
- 2016-08-23 CN CN201610712344.4A patent/CN106339249B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150229657A1 (en) * | 2007-09-19 | 2015-08-13 | Trend Micro Incorporated | Method and system for dynamic protocol decoding and analysis |
CN101944025A (zh) * | 2010-09-16 | 2011-01-12 | 福建鑫诺通讯技术有限公司 | 基于python语言的tcp/udp数据的自动组包与解包的方法 |
CN102868648A (zh) * | 2012-09-27 | 2013-01-09 | 瑞斯康达科技发展股份有限公司 | 一种进行数据传输的方法、从设备和系统 |
CN104660460A (zh) * | 2015-01-15 | 2015-05-27 | 北京奥普维尔科技有限公司 | 一种测试以太网性能的系统及方法 |
CN105187258A (zh) * | 2015-09-30 | 2015-12-23 | 北京英诺威尔科技股份有限公司 | 一种可配置的Trap告警解析处理方法 |
CN105573760A (zh) * | 2015-12-16 | 2016-05-11 | 南京邮电大学 | 基于storm的物联网数据处理系统及方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108141464A (zh) * | 2017-03-15 | 2018-06-08 | 深圳中兴力维技术有限公司 | 一种通信协议解析代码自动生成方法及系统 |
WO2018165902A1 (zh) * | 2017-03-15 | 2018-09-20 | 深圳中兴力维技术有限公司 | 一种通信协议解析代码自动生成方法及系统 |
CN108141464B (zh) * | 2017-03-15 | 2019-04-05 | 深圳力维智联技术有限公司 | 一种通信协议解析代码自动生成方法及系统 |
CN109634681A (zh) * | 2018-11-15 | 2019-04-16 | 福建星云电子股份有限公司 | 一种向制造执行系统上传数据的方法及装置 |
CN109634681B (zh) * | 2018-11-15 | 2021-08-27 | 福建星云电子股份有限公司 | 一种向制造执行系统上传数据的方法及装置 |
CN111488631A (zh) * | 2020-06-28 | 2020-08-04 | 中国核动力研究设计院 | 一种核级安全显示装置及其组态-解析系统 |
CN112532991A (zh) * | 2020-10-28 | 2021-03-19 | 惠州华阳通用电子有限公司 | 一种作用于rmff格式文件的硬件解码方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106339249B (zh) | 2019-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110096338B (zh) | 智能合约执行方法、装置、设备及介质 | |
JP7317722B2 (ja) | ブロックチェーンコンパイラ | |
US9697109B2 (en) | Dynamically configurable test doubles for software testing and validation | |
CN106339249A (zh) | 动态配置编程方法 | |
Nelson et al. | Specification and verification in the field: Applying formal methods to {BPF} just-in-time compilers in the linux kernel | |
CN104050080B (zh) | 用户态调试linux内核的方法及系统 | |
CN106844153B (zh) | 应用程序运行监控方法、装置以及终端 | |
CN110069259A (zh) | 基于idl文件的解析方法、装置、电子设备和存储介质 | |
CN106960140A (zh) | 虚拟机指令的混淆方法及装置、虚拟机保护系统 | |
CN109598107A (zh) | 一种基于应用安装包文件的代码转换方法及装置 | |
CN110825386A (zh) | 代码的编译方法和装置、存储介质 | |
CN104134039A (zh) | 病毒查杀方法、客户端、服务器以及病毒查杀系统 | |
CN108846264A (zh) | 代码加固方法、装置、智能终端和计算机可读存储介质 | |
CN106960141A (zh) | 虚拟机指令的编码、解码方法及装置、虚拟机保护系统 | |
CN112905447A (zh) | 一种区块链虚拟机的测试方法和系统 | |
CN105591779A (zh) | 网元巡检方法及装置 | |
CN114327477A (zh) | 智能合约执行方法、装置、电子装置和存储介质 | |
CN104423986B (zh) | 一种应用系统内嵌脚本的方法和装置 | |
EP2626784A1 (en) | Method and apparatus for automated MATLAB interfacing | |
US20020066091A1 (en) | Interpreter | |
CN105511935A (zh) | 资源索引值的获取方法及装置 | |
US20180129490A1 (en) | Object ordering preservation during lto link stage | |
Dardaillon et al. | A new compilation flow for software-defined radio applications on heterogeneous MPSoCs | |
CN104751026B (zh) | 安卓系统的软件保护方法、软件应用方法及相关装置 | |
CN103678114B (zh) | 产生断言的设备和方法以及验证处理器的设备和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 201203 Shanghai City, Pudong New Area Chinese (Shanghai) free trade zone 498 GuoShouJing Road No. 14 building block 22301-985 Applicant after: Shanghai chuangkin Mdt InfoTech Ltd Address before: Shanghai City, Pudong New Area Jing Road 201203 Shanghai Free Trade Zone No. 498 building 14 block 22301-985 Applicant before: Upper SeaBird scape computer system company limited |
|
GR01 | Patent grant | ||
GR01 | Patent grant |