首页> 中国专利> 一种基于Emit反射和表达式树的报文映射方法及系统

一种基于Emit反射和表达式树的报文映射方法及系统

摘要

本发明提供了锂电池测试技术领域的一种基于Emit反射和表达式树的报文映射方法及系统,方法包括如下步骤:步骤S10、通过Emit反射解析对象类型得到对应的属性以及特性;步骤S20、基于各所述对象类型、属性以及特性构建若干个节点,基于各所述节点构建表达式树,并将所述表达式树写入缓存;步骤S30、遍历缓存的所述表达式树的各节点,基于各所述节点映射二进制报文;步骤S40、基于各所述节点携带的特征解析二进制报文得到目标对象。本发明的优点在于:极大的提升了锂电池测试效率。

著录项

  • 公开/公告号CN114924738A

    专利类型发明专利

  • 公开/公告日2022-08-19

    原文格式PDF

  • 申请/专利权人 宁德星云检测技术有限公司;

    申请/专利号CN202210318689.7

  • 发明设计人 刘震;陈宜;杨柳;

    申请日2022-03-29

  • 分类号G06F8/41(2018.01);H04L69/22(2022.01);

  • 代理机构福州市鼓楼区京华专利事务所(普通合伙) 35212;

  • 代理人林云娇

  • 地址 352000 福建省宁德市东侨工业集中区疏港路11号

  • 入库时间 2023-06-19 16:25:24

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-09-06

    实质审查的生效 IPC(主分类):G06F 8/41 专利申请号:2022103186897 申请日:20220329

    实质审查的生效

说明书

技术领域

本发明涉及锂电池测试技术领域,特别指一种基于Emit反射和表达式树的报文映射方法及系统。

背景技术

随着新能源的兴起和发展,锂电池作为绿色高能化学电源,具有高能量、高功率、低成本等优点,在新能源行业中得到广泛的应用。为了保障锂电池使用的安全性,出厂前需要对锂电池进行一系列的测试。

在锂电池测试过程中,不可避免的要和各类测试设备进行通讯,而传统的通讯方式是采用TCP协议来传输二进制报文,再将二进制报文映射成程序中的目标对象。但是,传统上对二进制报文进行映射,一般借助简单反射的方法,不仅速度慢,而且不能解析不定长的二进制报文,需要通过硬编码进行干预,导致锂电池测试效率低下。

因此,如何提供一种基于Emit反射和表达式树的报文映射方法及系统,实现提升锂电池测试效率,成为一个亟待解决的技术问题。

发明内容

本发明要解决的技术问题,在于提供一种基于Emit反射和表达式树的报文映射方法及系统,实现提升锂电池测试效率。

第一方面,本发明提供了一种基于Emit反射和表达式树的报文映射方法,包括如下步骤:

步骤S10、通过Emit反射解析对象类型得到对应的属性以及特性;

步骤S20、基于各所述对象类型、属性以及特性构建若干个节点,基于各所述节点构建表达式树,并将所述表达式树写入缓存;

步骤S30、遍历缓存的所述表达式树的各节点,基于各所述节点映射二进制报文;

步骤S40、基于各所述节点携带的特征解析二进制报文得到目标对象。

进一步地,所述步骤S10具体为:

确定锂电池测试过程需要的对象类型,通过Emit反射动态生成IL代码,进而利用所述IL代码快速解析所对象类型得到对应的属性以及特性;

所述属性用于描述节点间的关联性;所述特性用于描述二进制报文的特征,至少包括长度特性以及大小端序特性。

进一步地,所述步骤S20具体为:

基于一一对应的各所述对象类型、属性以及特性构建若干个节点,基于各所述节点携带的属性构建表达式树,并将所述表达式树写入缓存;

所述节点为根节点或者子节点。

进一步地,所述步骤S30具体为:

基于缓存的所述表达式树,从根节点开始依次递归遍历各分支的子节点,进而自动映射二进制报文。

进一步地,所述步骤S40具体为:

基于各所述节点携带的特性分别对不同长度的二进制报文进行解析,得到对应的目标对象。

第二方面,本发明提供了一种基于Emit反射和表达式树的报文映射系统,包括如下模块:

元数据解析模块,用于通过Emit反射解析对象类型得到对应的属性以及特性;

表达式树构建模块,用于基于各所述对象类型、属性以及特性构建若干个节点,基于各所述节点构建表达式树,并将所述表达式树写入缓存;

二进制报文映射模块,用于遍历缓存的所述表达式树的各节点,基于各所述节点映射二进制报文;

目标对象生成模块,用于基于各所述节点携带的特征解析二进制报文得到目标对象。

进一步地,所述元数据解析模块具体为:

确定锂电池测试过程需要的对象类型,通过Emit反射动态生成IL代码,进而利用所述IL代码快速解析所对象类型得到对应的属性以及特性;

所述属性用于描述节点间的关联性;所述特性用于描述二进制报文的特征,至少包括长度特性以及大小端序特性。

进一步地,所述表达式树构建模块具体为:

基于一一对应的各所述对象类型、属性以及特性构建若干个节点,基于各所述节点携带的属性构建表达式树,并将所述表达式树写入缓存;

所述节点为根节点或者子节点。

进一步地,所述二进制报文映射模块具体为:

基于缓存的所述表达式树,从根节点开始依次递归遍历各分支的子节点,进而自动映射二进制报文。

进一步地,所述目标对象生成模块具体为:

基于各所述节点携带的特性分别对不同长度的二进制报文进行解析,得到对应的目标对象。

本发明的优点在于:

通过Emit反射动态生成IL代码,进而利用IL代码解析对象类型,由于直接操作IL代码,极大的提升了对象类型的反射解析的速度;通过将表达式树写入缓存,便于长时间、高强度的解析锂电池测试过程中产生的二进制报文;通过标注二进制报文的长度特性,进而利用长度特性对不同长度的二进制报文进行解析得到目标对象,不需要对每份不定长的二进制报文单独编写解析方法(硬编码),实现了代码的通用性,最终极大的提升了锂电池测试效率。

附图说明

下面参照附图结合实施例对本发明作进一步的说明。

图1是本发明一种基于Emit反射和表达式树的报文映射方法的流程图。

图2是本发明一种基于Emit反射和表达式树的报文映射系统的结构示意图。

具体实施方式

本申请实施例中的技术方案,总体思路如下:通过Emit反射动态生成IL代码,直接操作IL代码进行解析以提升解析的速度;通过将表达式树写入缓存,便于长时间、高强度的解析二进制报文;通过标注二进制报文的长度特性,不需要对每份不定长的二进制报文单独编写解析方法,以提升锂电池测试效率。

请参照图1至图2所示,本发明一种基于Emit反射和表达式树的报文映射方法的较佳实施例,包括如下步骤:

步骤S10、通过Emit反射解析对象类型得到对应的属性以及特性;

步骤S20、基于各所述对象类型、属性以及特性构建若干个节点,基于各所述节点构建表达式树,并将所述表达式树写入缓存;

步骤S30、遍历缓存的所述表达式树的各节点,基于各所述节点映射二进制报文;

步骤S40、基于各所述节点携带的特征解析二进制报文得到目标对象。

即首先解析对象类型,取出它的属性以及特性并转换成表达式树,再利用表达式树对二进制报文进行解析,得到目标对象。

所述步骤S10具体为:

确定锂电池测试过程需要的对象类型,通过Emit反射动态生成IL代码,进而利用所述IL代码快速解析所对象类型得到对应的属性以及特性(Attribute);IL是.NET框架中中间语言(Intermediate Language)的缩写,使用.NET框架提供的编译器可以直接将源程序编译为.exe或.dll文件;

所述属性用于描述节点间的关联性,即用于构建表达式树;所述特性用于描述二进制报文的特征,至少包括长度特性(FLength)以及大小端序特性(FIsBigEndian)。

通过Emit反射动态生成IL代码,进而利用IL代码解析对象类型,由于直接操作IL代码,极大的提升了解析的速度。

所述步骤S20具体为:

基于一一对应的各所述对象类型、属性以及特性构建若干个节点,基于各所述节点携带的属性构建表达式树,并将所述表达式树写入缓存;

所述节点为根节点或者子节点。

通过将表达式树写入缓存,便于长时间、高强度的解析锂电池测试过程中产生的二进制报文。

所述步骤S30具体为:

基于缓存的所述表达式树,从根节点开始依次递归遍历各分支的子节点,进而自动映射二进制报文。

所述步骤S40具体为:

基于各所述节点携带的特性分别对不同长度的二进制报文进行解析,得到对应的目标对象。

通过标注二进制报文的长度特性,进而利用长度特性对不同长度的二进制报文进行解析得到目标对象,不需要对每份不定长的二进制报文单独编写解析方法(硬编码),实现了代码的通用性。

本发明一种基于Emit反射和表达式树的报文映射系统的较佳实施例,包括如下模块:

元数据解析模块,用于通过Emit反射解析对象类型得到对应的属性以及特性;

表达式树构建模块,用于基于各所述对象类型、属性以及特性构建若干个节点,基于各所述节点构建表达式树,并将所述表达式树写入缓存;

二进制报文映射模块,用于遍历缓存的所述表达式树的各节点,基于各所述节点映射二进制报文;

目标对象生成模块,用于基于各所述节点携带的特征解析二进制报文得到目标对象。

即首先解析对象类型,取出它的属性以及特性并转换成表达式树,再利用表达式树对二进制报文进行解析,得到目标对象。

所述元数据解析模块具体为:

确定锂电池测试过程需要的对象类型,通过Emit反射动态生成IL代码,进而利用所述IL代码快速解析所对象类型得到对应的属性以及特性(Attribute);IL是.NET框架中中间语言(Intermediate Language)的缩写,使用.NET框架提供的编译器可以直接将源程序编译为.exe或.dll文件;

所述属性用于描述节点间的关联性,即用于构建表达式树;所述特性用于描述二进制报文的特征,至少包括长度特性(FLength)以及大小端序特性(FIsBigEndian)。

通过Emit反射动态生成IL代码,进而利用IL代码解析对象类型,由于直接操作IL代码,极大的提升了解析的速度。

所述表达式树构建模块具体为:

基于一一对应的各所述对象类型、属性以及特性构建若干个节点,基于各所述节点携带的属性构建表达式树,并将所述表达式树写入缓存;

所述节点为根节点或者子节点。

通过将表达式树写入缓存,便于长时间、高强度的解析锂电池测试过程中产生的二进制报文。

所述二进制报文映射模块具体为:

基于缓存的所述表达式树,从根节点开始依次递归遍历各分支的子节点,进而自动映射二进制报文。

所述目标对象生成模块具体为:

基于各所述节点携带的特性分别对不同长度的二进制报文进行解析,得到对应的目标对象。

通过标注二进制报文的长度特性,进而利用长度特性对不同长度的二进制报文进行解析得到目标对象,不需要对每份不定长的二进制报文单独编写解析方法(硬编码),实现了代码的通用性。

综上所述,本发明的优点在于:

通过Emit反射动态生成IL代码,进而利用IL代码解析对象类型,由于直接操作IL代码,极大的提升了对象类型的反射解析的速度;通过将表达式树写入缓存,便于长时间、高强度的解析锂电池测试过程中产生的二进制报文;通过标注二进制报文的长度特性,进而利用长度特性对不同长度的二进制报文进行解析得到目标对象,不需要对每份不定长的二进制报文单独编写解析方法(硬编码),实现了代码的通用性,最终极大的提升了锂电池测试效率。

虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号