首 页
手机版

数据曲线分析器Curve v2.1绿色版

Curve俗称数据曲线分析器,是一款用于曲线形式查看工程试验中生成的文本文件数据工具,程序内置了对曲线的变换操作和数据处理功能,主要有曲线算法、标记线窗、动态模拟、频谱分析等应用模块,便于分析。其中曲线绘制采用高效的聚点算法,即使对于长曲线,在伸缩变换时仍能速度极快且不损失观察细节;频谱分析数据精准,单窗可支持65536*64点数据,很好的兼顾了谱分辨率和带宽,适用于用于精密测量。

此外,数据曲线分析器应用简单,支持数据导入和导出,且无需安装即可双击使用!

数据曲线分析器Curve

数据曲线分析器Curve使用方法

1、导入、导出数据

单击"导入数据"按钮,可从文件导入数据序列,初始数据为"曲线一",对初始数据变换后生成二级曲线"曲线二",对"曲线二"变换后称"曲线三",三条曲线在同一坐标系下以不同颜色显示;变换后的数据被存储在各自的内存缓冲区中,不影响其前级数据。

2、源文件格式

数据文件为文本文件,可以单列或多列形式存储;各行应整齐,即每行列数相同,列间以空格或Tab分隔,多个连续空格或Tab被视为1个;对每个数据的字符个数不限制(即每行长度可以不齐),每行列数相同即可;

系统会根据设定的列号提取一列数据作为初始数据(首列列号为1),提取时会忽略掉不被提取的其它列,仅读取指定列,因而其它列可以是任意字符,提取列则要求为数值形式;

数值无论是否带小数点,都被视为double,合法的数值为C正则"%lf"字符串格式,例如: +69352,618,0,-4,1.7,-87.1899,2.3E-6 等;

文件被导入时系统会自动预览显示,可根据预览自行设定参数;

3、曲线算法

曲线算法是指生成曲线数据时使用的方法,对于"初始曲线",只能从文件中导入数据(也可以进程通信直接内存交换,已保留该接口);对二级、三级曲线的数据,则由其前级曲线经过算法运算得到;

每次点击算法列表中的选项时,对应的曲线数据生成一次,反复改变算法只影响本级的结果,不影响其前级曲线;算法改变时,用前级数据重新运算一次,而不是在本级原有结果的基础上再叠加算法;

变换后的曲线数据可执行"导出数据"被保存至新的文本文件中;导出时可以指定数据选项以及是否以.csv格式存储(该格式可被Excel识别);

4、多列数据查看

三条曲线中只有"初始数据"是从文件中导入的,另外两条均是在内存中变换生成的;如果数据文件中包含多列数据,想同时对比观察,可逐条导入后,利用变换算法中的"复制前级"将曲线移至二三级缓冲区,然后再导入另一列,这样,曲线窗中即可以对比同一数据文件中的多列数据(目前限制为三条曲线,软件保留有一次导入更多条曲线的接口);

也可以灵活使用"数据导出"功能,将曲线暂存为文件,需要时再导入。

5、曲线操作(先通过Tab键或单击使曲线窗获得焦点)

鼠标方式

切换活动曲线:左键单击辅助钮(左上角)

X方向缩放:滚轮

Y方向缩放:Ctrl+滚轮

X方向平移:

Y方向平移:

自动显示全部:左 双击绘图区

1:1初始显示:右 双击绘图区

键盘方式

Ctrl + Tab

← →

↑ ↓

Ctrl + ← →

Ctrl + ↑ ↓

Ctrl + a/A

a/A

其他:

开/关标记窗功能: Ctrl+左双击标记"开"字符  

锁定/解锁窗宽: Ctrl+左双击宽"锁定"字符 (标记窗开时才有效) 

标记区起点: Ctrl+左双击绘图区 (标记窗开时才有效)     

标记区止点: Ctrl+右双击绘图区 (标记窗开时才有效)  

频谱查看: Ctrl+左单击Fn按钮/F1

退出程序:ESC

注:当多条曲线叠加显示时,其中有一条是"活动曲线",或称"当前曲线";视值显示、标记窗和频谱分析都是针对"活动曲线"的;任意一条曲线均可切换为"活动曲线",界面上会有颜色变换区分;

6、视值

视值是指根据坐标刻线的标示量读出的曲线点的数值;

本系统中,y轴视值与初始数据的量值完全相等(不因曲线变换而改变);x轴的视值默认等于数据点序号(0,1,2,...);导入数据时若指定了采样频率,x视值会被修正为以秒(s)为单位的时间量;按照x坐标轴刻线读出的是s;

如果采样频率设定准确,相应的频谱曲线频率轴视值单位为Hz,也已被修正准确,可直接读出;

曲线平移时,窗口顶部会实时显示曲线上最左点的数值(视值);查看其它点数值可通过平移曲线完成(也可以采用挪动标记线方式);

7、标记线/窗

当在曲线窗绘图区外的"标记:关"按钮上Ctrl+左双击后,会开启数据标记功能,数据标记默认为单点模式,标记为一条竖线(宽度为1);绘图区上任意点Ctrl+左双击,会使标记线移动到该点,并显示该点的数据值;

标记开启后,单击"宽:锁定"按钮,可将标记宽度设为可变,此时,在曲线窗中任意点Ctrl+右双击,会使标记变为一段窗口,标记窗中的数据即被选中;

8、算法明细

软件保留有自定义算法接口,内置算法如下:

复制前级: 不做任何处理,将前级数据拷贝至本级;

一阶差分: 求一阶导数(速度),本级本点=前级本点-前级前点

二阶差分: 二阶导数:本级本点=前级前点+前级后点-2*前级本点;

一阶LPF(Fs/2): 一阶IIR低通滤波,截止频率为采样频率的1/2;

一阶LPF(Fs/4):   类同;

一阶LPF(Fs/8):   类同;

一阶LPF(Fs/100): 类同;

3点1次平均: 前级的本点为中心前后共3点均值,作为本级本点值;

3点2次平均: 3点1次完成后,叠加一遍3点1次,共2次;

5点1次平均: 类同;

5点3次平均: 类同;

n点m10次: 类同;

9、动态模拟

动态模拟是一种在事后将数据流从数据窗动态滑过,以模拟数据时间变化的功能;按住Ctrl并单击Fn按钮,系统即开始对原始数据曲线进行动态模拟;动态模拟刷新由定时器自动执行(设为10ms一次,但未必准确);模拟时的曲线平移速度由滑动步长调节,滑动步长可以是2,4,8,10,20,40,80,100点;在动态模拟时点按Alt键即可自动切换步长;

10、频谱分析

点击Fn按钮,即可打开频谱窗,并查看标记区内数据的频谱,频谱窗内曲线的操作与5所述相同;

系统只有在标记窗打开,并选定数据时,才允许查看频谱;系统会自动将标记窗内的数据截取为2的n次幂长,以便于FFT计算(例如标记窗内有1035点数据,则谱分析实际使用的是其前1024点);

由于FFT变换得到的是完全对称的双边谱,为提高效率,频谱窗中只显示其幅值谱的单边一半,并进行视值校准,可在由坐标轴直接读数;    

当系统进行动态模拟时,或由外部进程动态注入数据时,随着时域窗中数据的刷新,频谱窗也会随之动态刷新;

11、使用限制

1) 文件单行长: 32768字符;

2) 可浏览行数: 4194304行;导入时有跳行功能,理论上长度无限制;

系统保留有单次查看更多行的配置接口;

3) 单谱窗点数: 4194304点;

数据曲线分析器外部接口

外部接口:

外部进程可采用进程通信方式直接向Curve的共享缓冲区中写入数据,并更新曲线;

步骤如下:

OpenFileMapping();

MapViewOfFile();

buf[0]=..;

buf[1]=..;//操作缓冲区

...

UnmapViewOfFile();

CloseHandle();

PostMessage();

过程描述:

(1) 打开内存映像文件,映像名字为"LiXueLei_SharedCurveMemory",

(2) 成功后,将映像映射到本地内存地址空间;会获得一个本进程中的内存地址指针;(注意:如果Curve.exe未运行,打开时会失败,因而应在此之前先启动Curve程序)

(3) 进程中用这个地址指针操作内存,就可以改写作曲线的数据区;

映像区的格式:

offset(byte) 类型 元素个数 内容

0~3 long 1 本次修改的数据长度n(点数)

4~7 float 1 数据的采样频率(Hz数)

8~15 double 1 data[0]  --\

16~23 double 1 data[1]     \

24~32 double 1 data[2]     |---共n点;

... /

... _ / (n个double)

(4) 操作完成后撤销在本地进程的地址映射并关闭映像文件;

(5) 最后向Curve主窗口发送一条数据更新消息:

取窗口句柄:

::FindWindow(NULL,"数据曲线分析器 Curve2.1");

消息号定义:

::RegisterWindowMessage(_T("LixlCurveMsg_BufferModified"));     

然后用::PostMessage()就可以了;可参阅MSDN;

细节补充:

Curve.exe软件中这样创建的映像区,看完这段,缓冲区结构就清楚了,同行人士都懂,不再赘述! 

struct CurveSCB

{

long nSize;

float FsHz;

};

hShareFile= CreateFileMapping

(

INVALID_HANDLE_VALUE,

NULL,

PAGE_READWRITE|SEC_COMMIT,

0,

sizeof(struct CurveSCB)+cvWnd.MaxCurveLength()*sizeof(double),

"LiXueLei_SharedCurveMemory"

);

曲线数据区预留: MaxCurveLength=65536*64 点;一般足够用了;实际上曲线刷新是以nSize规定的点数为上限的;

还有就是:

Curve.exe运行时当共享缓冲区创建成功,会广播一条消息,消息号:

::RegisterWindowMessage(_T("LixlCurveMsg_CurveAppInit"));

Curve.exe在退出时,也会广播一条消息,消息号:

::RegisterWindowMessage(_T("LixlCurveMsg_CurveAppExit"));

可根据这些消息进行相应的处理;

软件特色

1、Curve数据曲线分析器中文版支持对Y向比例、X向比例查看。

2、也可对初始数据、左侧点好进行快速的了解。

3、可以对需要的数据进行快速的导出。

4、对需要的曲线进行快速的添加,自定义的选择。

更新日志

v2.1版本

1、增加频谱自动提取至剪贴板功能。

2、增加导出频谱序列对功能(F2)。

收起介绍展开介绍
  • 下载地址
数据曲线分析器Curve v2.1绿色版

有问题? 点此报错

发表评论

0条评论