kjb文件 解析_NVH原始数据文件如何读取 Part2

article/2025/10/13 19:32:50

“前一篇文章介绍了NVH数采系统记录的原始文件常见的几种数据格式。本篇将介绍怎样找到具体的数据位置并还原它,从而实现编程直接读取原始文件的目的。

01

画出整体数据

前一篇文章提到:数采系统记录的原始数据包含两部分:ASCII码明文和某类型的二进制数据。如图1。

45d2dced90bbe47b083bedeb9b567d32.png

图1

本文中,我们以24位数据格式来举例。要画出整体数据,可以对图1的原始文件进行如下3次尝试,如图2:

1)从文件开头,读取24位整型数据; 2)跳开8位,读取24位整型数据; 3)跳开16位,读取24位整型数据。 跳开24位,再读取24位数据的话,会和情况1)类似。

ea058b58bb29b683015ec3ee3fcbc80f.png

图2

第 1)次:没发现信号,如图3;

第 2)次:没发现信号,如图4;

第 3)次: 发现测试信号 ,如图5。

466346a472ef6cc8ba65ed1e8765f3cc.png

图3

6a5e1b512c2db5c07c114b481ae45511.png

图4

dc5513df906e8409c76b696e74db3de0.png

图5

需要注意的是: 图5中最前面的大数,是说明文字,而非数据 。 同样的,如果数据格式是32位,则进行4次尝试,即可画出整体数据。

02

原始文件的数据排序

由于NVH数采系统的采样频率较高,每个通道记录的数据一般不会连续存储。常采用数据块( 数据长度固定 )的形式,按通道依次存储。 以3个通道记录的数据为例:要得到各通道数据,需要对整体数据进行重新排序,如图6。

c2cc56011ae948b54da397c1907bc0e9.png

图6

而解析原始数据格式,则是个逆向工程。需要先准备好各通道的数据(用NVH自身软件导出),然后从整体数据中找到其相应位置,如图7。

06742267de4ff5729794105d08f073ad.png

图7

虽说,图7过程和图8有些类似。但是,依然可以用一些数学方法让整个过程变得容易和充满乐趣。

2643cbcb3c8d8f6a75341b3bd24b1fbd.png

图8

03

查找数据位置

我们拿NVH自身软件导出的某通道 一小段数据 (暂称为: 目标数据 )为例。目的是:找到这段 目标数据 在 原始整体数据 中的位置,如图9。 其实,刚开始,我是用肉眼对的~edb17888061020a6766d59ac5092171a.png。 但是,由于图9上图和下图数据完全不是一个数量级( 上图是24位整形数据,需要乘以修正系数后,才能得到下图 ),所以给肉眼寻找增加了很多难度。

8875e7869d4790c292e46fc8d81dd88e.png

图9

后来,我用了一种更简单高效的方法: 互相关。如图10。

abc725a1bb2a603b011efbac2a04dd03.gif

图10

因为目标数据是整体数据中某段乘以修正系数的结果,所以它们严格线性相关。 通过互相关计算,找到互相关最大值的位置,也就是目标信号的位置,如图11。 将目标信号放在互相关最大的位置,进一步验证:目标信号乘以一个系数后,和整体信号的一段完全吻合,如图11下图。说明我们找到了正确的位置。

e88892b2af1b6f4934c1157162ed0960.gif

图11

以上,即寻找某个通道数据在原始整体数据位置的方法。确认完所有通道数据在整体数据的各个位置后,该原始文件的解析工作也就基本完成。

04

总结

总结一下针对NVH原始数据文件的解析过程:

1)用NVH自身软件导出各通道数据备用。

2)读取NVH原始数据文件的ASCII明文内容,内含采样频率、通道数、各通道修正系数等。

3)已知数据格式(24位或32位等),进行多次数据读取尝试,找到合适的数据读取起始位置。

4)用之前备用的各通道数据作为目标数据,多次查找目标数据在原始文件整体数据中的位置。

5)知道原始文件整体数据的排列规律后,结合各通道修正系数,还原各通道数据。

以上是解析NVH原始数据文件的大致过程,具体过程及细节不再详述。在逆向解析的过程中难免会遇到各种问题,当然,乐趣,也尽在其中b3e4bf3ef47bc21e0327d0bc6355fa8d.pngb3e4bf3ef47bc21e0327d0bc6355fa8d.png


有问题请指正,谢谢!

dcbc507df5777bf8293d5b20c950f492.png

http://chatgpt.dhexx.cn/article/mP8doYjL.shtml

相关文章

Java调用kjb文件

目录 一、kjb和ktr文件创建 kjb文件 ktr文件 关联kjb和ktr 变量信息 二、 Java代码调用kjb 引包 放入kjb和ktr文件 三、代码调用 定时任务 一、kjb和ktr文件创建 kjb文件 首先先新建一个Job,如下图所示,这样就新建了一个kjb文件,即…

SpringDataJPA(5)jpql查询

JPQL全称Java Persistence Query Language 这是JPA提供的复杂查询 sql:查询的是表和表中的字段 jpql:查询的是实体类和类中的属性 jpql和sql语句的语法相似 进行sql查询的步骤 1.创建query查询对象 2.对参数进行赋值 3.查询,并得到返回结果…

JPA的查询语言JPQL

JPA的查询语言(JPQL)是一种和SQL非常类似的中间性和对象化查询语言。它可以被编译成不同的底层数据库能接受的SQL,从而屏蔽不同数据库的差异,确保用JPQL查询语言编写的代码可在不同的数据库上运行。比起EJB 2.1的查询语言,EJB3可以运行期构造…

JPQL语句

JPQL语言 JPQL语言,即 Java Persistence Query Language 的简称。JPQL 是一种和 SQL 非常类似的中间性和对象化查询语言,它最终会被编译成针对不同底层数据库的 SQL 查询,从而屏蔽不同数据库的差异。 JPQL语言的语句可以是 select 语句、upda…

jpa之jpql查询

JPQL介绍 JPQL语言,即 Java Persistence Query Language 的简称。JPQL 是一种和 SQL 非常类似的中间性和对象化查询语言,它最终会被编译成针对不同底层数据库的 SQL 查询,从而屏蔽不同数据库的差异。如果会hibernate的hql查询,那…

SpringData JPA进阶查询—JPQL/原生SQL查询、分页处理、部分字段映射查询

上一篇介绍了入门基础篇SpringDataJPA访问数据库。本篇介绍SpringDataJPA进一步的定制化查询,使用JPQL或者SQL进行查询、部分字段映射、分页等。本文尽量以简单的建模与代码进行展示操作,文章比较长,包含查询的方方面面。如果能耐心看完这篇文…

JPA之JPQL

文章目录 什么是JPQL?JPQL怎么用?JPQL的查询demoJPQL的占位符与入参问题修改demo删除demo插入demo 什么是JPQL? 所谓JPQL,就是Java Persistence Query Language的缩写,也就是java持久化查询语言.JPQL是一种可移植的查询语言&am…

JPQL-Query查询实例详解

前面学习了JPQL语言和Query接口。这里学习一下如果通过JPQL和Query接口进行数据的查询、更新和删除。 【1】普通查询 首先说明一下FROM子句和Select…FROM。 from 子句是查询语句的必选子句。 Select 用来指定查询返回的结果实体或实体的某些属性。 From 子句声明查询源实体…

JPQL和SQL的比较

前言 在JAVA EE中,JPQL是专门为Java 应用程序访问和导航实体实例设计的。Java Presistence Query Language(JPQL),java持久性查询语言。它是JPA规范的重要组成部分,其实它就是一种查询语言,语法类似于SQL语法,但是有着…

【JPQL】--JPQL和SQL的比较

前言 在JAVA EE中,JPQL是专门为Java 应用程序访问和导航实体实例设计的。Java Presistence Query Language(JPQL),java持久性查询语言。它是JPA规范的重要组成部分,其实它就是一种查询语言,语法类似于SQL语法,但是有着…

JPA - JPQL完成复杂的多表查询

目录 前言示例建表语句Entity实体JPQL多表查询完整代码调用结果 前言 JPA中可以通过设置实体的导航属性 JPQL完成复杂的多表查询,简化SQL的编写。 示例 建表语句 Table CREATE TABLE school (id int(11) DEFAULT NULL,name varchar(50) COLLATE utf8_unicode_c…

JPQL查询

JPQL查询 1 jpql的介绍 sql:查询的是表和表中的字段。 jpql:查询的是实体类和类中的属性。 jpql和sql语句的语法相似。 JPQL全称Java Persistence Query Language 基于首次在EJB2.0中引入的EJB查询语言(EJB QL),Java持久化查询语言(JPQL)是一种可移植的…

JPQL详解

前提 最近在改bug的时候发现了自己的缺点,在改前端bug的时候非常顺利顺手。但是在改后端bug的时候如果遇到不是太难的问题还可以解决,但是一到难点感觉自己就懵逼! 所以讲解了关于JPQl相关内容 JPA 在说jpql之前必须要说一下什么是JPA&…

JPA(4) JPQL一些简单的查询语法

JPQL --> JPA Query Language --> JPA的查询语句 (另外HQL:Hibernate的查询语句) JPQL本质:JPA通过antlr-2.7.7.jar将JPQL编译成sql并且封装执行的。 JPQL和SQL区别?? --> 它们查询的关键字都是一样的&#xff…

HPROF内存文件获取

1.命令生成Dump内存文件 命令&#xff1a;am dumpheap 进程名 输出文件目录<文件名.hprof> 如&#xff1a; am dumpheap app …/demo.hprof 2.通过Android Studio获取 在Android Studio中使用Android Monitor里的Memory Monitor工具监视内存使用情况时&#xff0c;可以…

jvm调优-hprof 文件打开

当服务器出现内存溢出的情况&#xff0c;要下载分析dump内存文件“ dump 当前进程的内存信息: 通过命令 jsp获取java进程pid: jsp: 生成dump文件&#xff1a; jmap -dump:formatb,filedump.hprof pid在当前目录xiazaihprof文件到本地。 如何打开hprof后缀格式的文件呢&#…

使用adb命令导出hprof文件

我们可以使用android studio profiler导入hprof文件分析android应用的内存问题。那么如何从手机上面导出这份文件呢&#xff1f; 把应用的heap 区的数据取出来保存在一个hprof文件上&#xff0c;然后把hprof文件导入到可以查看这个文件的工具上&#xff08;如android studio p…

jvisualvm分析hprof文件

jvisualvm是jdk8的bin目录下自带的一个分析工具&#xff0c;在我下载的jdk11下没有这个工具&#xff0c;这个工具我们可以用来分析hprof文件 首先我们可以配置对应的参数&#xff0c;配置文件地址在\jdk8\lib\visualvm\etc\visualvm.conf visualvm_default_options"-J-cl…

android studio 分析 hprof,Android Studio 中的 HProf静态分析

HProf 在 Android Studio 中的展示详解&#xff0c;基于我对其的理解&#xff0c;我将其根据 heap,count,size,其他将其分成了 4 个层次。 第一层 Heap 分类 Heap 共分为&#xff1a; zygote heap: 与 android zygote 进程共享的 heap image heap: 与系统共享的 heap app heap&…

JProfile 分析OOM hprof文件

JProfile 分析OOM OutOfMemoryError 1.JVM组成 首先要明白JVM组成 方法区-非堆 Method Area、No-HeapJava栈-虚拟机栈 VM Stack、Java Stack本地方法栈 Native Method Stack程序计数器 Program Counter Register堆 Heap 1.1 OOM发生在哪里? OOM可以发生在除了程序计数器外…