[摘要]本文介绍作者研制的一套信号采集与处理ActiveX控件,包括信号采集、存储、信号处理以及信号及其处理结果图形表示等系列控件,这些控件与Visual Basic、Visual C++相结合,为信号采集与处理应用软件的研制提供一套实用的开发工具,节省开发时间与经费。
[ABSTRACT] A group of ActiveX controls for signal acqusition and processing are introduced in this paper, which combines with software developing tools , such as Visual Basic, Visual C++, forms a useful tool for developing DSP application software.
一、引言
ActiveX控件为应用软件开发者提供了可重复使用的软件组件,ActiveX控件凝聚了控件研制人员宝贵的专业领域知识和软件开发经验,以简单的接口形式(属性、时间和方法)提供给应用软件开发者,节省了大量的开发时间、人员和经费。ActiveX控件可以在很多软件开发平台(如Visual Basic, Visual C++, Visual Foxpro, PowerBuild, Delphi, Internet Explorer等)中得到使用,为面向对象的模块化编程提供了功能模块。
信号采集与处理在工业控制、生物医学工程、地震与振动工程、气象、航空航天等许多领域有着极其广泛的应用,不同的应用往往需要使用不同的方案,用到不同的处理方法和用户界面,有简单的应用,也有复杂的应用。所以信号采集与处理应用软件很难象字处理一样研制出通用的系统。
然而,信号采集与处理的应用软件往往涉及到很多公用模块,如各种图形模块、FFT变换算法等,把这些通用的小模块以ActiveX 控件形式或者动态连接库的形式建立起来,就形成了基于ActiveX控件的信号采集与处理开发系统,其中大量的专业化的控件部件与VB、VC等面向对象的软件开发语言相结合,为信号采集与处理在各领域的应用提供了简便、快捷的工具。
美国Mathworks公司于1992年推出了一套MATLAB软件,是目前十分流行的一套高性能的数值计算和可视化数学软件,它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便的、可编程的、界面友好的用户环境,是进行科学研究和仿真的良好工具。然而,该软件比较庞大,所做的软件必须依赖于该环境下运行,并且不能用其他通用软件开发工具(如VB、VC)调用其中的算法与模块来构成自己的应用程序。而基于ActiveX控件的信号采集与处理开发系统,却可以让用户开使用数值计算、矩阵运算、科学图形、信号处理算法等开发出自己的应用程序。
二、信号采集与处理系统组成部分
信号采集与处理针对不同的应用有不同的应用方案,使用不同的信号处理算法,不同的用户界面,不同的采集方式,以及不同的数据文件格式等,但是它们具有共同的部分,都是由信号传感器,放大滤波,模数转换,信号实时监视,数据磁盘文件,信号的可视化表示,信号处理,信号处理与分析结果表示等部分组成。所以,我们把信号采集与处理开发系统分为四大部分,即信号采集部分、科学图形部分、数据处理部分、以及应用软件制作部分,如下图所示。

信号采集与处理软件开发组成部分
信号采集部分包括信号采集驱动,信号数据文件存储格式,信号数据文件读写操作,信号管理等功能。科学图形部分包括二维科学图形,三维科学图形,信号波形显示测量,信号动态波形,图象显示等。信号处理部分包括数值计算、矩阵运算、信号处理、统计分析等基本的处理方法,以及专门信号处理方法,如生理信号处理方法(心电信号处理方法、心率变异性分析、脑电信号分析、呼吸波信号分析等),振动信号分析等。应用程序制作部分就是利用上述各部分的模块,使用VB、VC等开发平台,研制出用户所需要的应用软件。
三、信号处理控件
信号处理控件包括基本算法和专门算法。基本算法是通用算法,也是专门算法的基础。专门算法控件是针对具体的信号数据建立起来的专门处理方法,其中集成了针对该信号的专门处理方法和用户面。在基本算法控件里我们集成了丰富的数值计算、矩阵运算、信号处理等基本算法;针对特殊的应用,我们也研制几个专门信号处理控件,专门信号处理控件需要从事各领域的软件开发人员,结合本专业的需要,特别加以研制。
(一)基本信号处理算法控件
基本信号处理算法控件包括如下功能:
1、矩阵运算:矩阵相乘、求逆、行列式计算、矩阵特征值和特征向量计算,矩阵转置,矩阵分解、矩阵的秩等。
2、数值计算:数据插值、曲线拟合、回归分析、数据平滑、解线性方程组、解一元n次代数方程、数值微分与积分等。
3、特殊函数计算:伽玛函数、误差函数、贝塞耳函数、贝塔函数、正态分布函数、t-分布函数、k平方分布函数、F-分布函数、正弦积分、余弦积分、指数积分、椭圆积分等。
4、数据排序及随机数产生:对各种数据进行排序(字符串、整数、浮点数等)、均匀分布随机数产生、正态分布随机数产生、三角分布随机数产生、指数分布随机数产生。
(二) 信号处理算法控件
1、信号变换:离散傅立叶变换(DFT)、快速傅立叶变换(FFT)、离散余弦变换(DCT)、快速余弦变换、离散正弦变换、快速正弦变换、小波变换、Charp Z变换、离散哈尔变换、离散沃尔什变换、KL变换等。
2、线性建模:AR、MA、ARMA模型参数估计。
3、功率频谱计算:使用FFT做加窗功率谱估计、使用AR模型做极大熵功率谱估计。
4、相关和卷积计算:自相关函数计算、互相关函数计算、卷积计算。
5、信号滤波器设计:FIR和IIR低通、高通、带通、带阻滤波器设计。
6、信号滤波:使用FIR、IIR滤波器对信号进行线性滤波、递推最小二乘自适应滤波、LMS自适应滤波、中值滤波等。
7、统计检验:检验两组数据的均值、方差和概率分布是否相同;统计参数计算,如均值、方差、最大值、最小值、中数、众数、偏度、峰度、过零率等。
8、专门信号处理:如医学信号处理(心电QRS波检测;心率变异性分析;脑电信号分析;睡眠呼吸暂停分析等),振动信号处理,语音信号处理等。
四、科学工程图形控件
信号及其信号处理结果需要以一定的直观的方式呈现给用户,最直接的方法就是采用静态或动态图形来表示,为此我们设计了信号处理表示的各种控件,主要包括:
(一)信号波形表示
1、信号动态波形表示控件,包括滚动、刷新方式。
2、信号静态波形表示控件,包括信号翻页、信号测量、波形打印、信号选择、显示设置等。
3、曲线绘图。
(二)二维科学图形
直方图、散点图、曲线图、饼图等。
(三)三维科学图形
三维线阵图形、三维网格图形、三维填充图形、三维光照图形、等高线图形等。
(四)动态图形
三维实时动态图形、动态图象。
(五)图像显示与处理
图像文件的读写,图像显示,图像数据操作,图像处理。
五、数据采集与数据文件
信号采集的过程中需要实时监视采集到的信号情况,我们可以采用动态波形控件来实时监视信号采集的情况;信号采集完成后,我们需要把信号数据保存起来,为了统一信号存储的方式,我们设计了信号的数据文件存储格式,并为这些格式文件提供了操作的函数和方法,这样就能达到数据共享的目的。在数据采集时,计算机需要与信号采集硬件打交道,由于不同的硬件有不同的数据采集方式,为此我们设计了信号采集的软件接口规范,只要按此规范作好动态连接库,软件的编程就与硬件无关,并在此基础上设计了我们的信号采集部件。六、小结
基于ActiveX控件的信号采集与处理开发系统,实现了编制信号采集与处理应用软件中需要使用的大量控件,这些控件和现有的开发工具VB、VC等相结合,可构成用户从事信号采集与处理应用软件开发方便、快捷的工具,充分利用第三方的研究成果,节省用户的开发时间、经费和劳动力。
ChengBo Software Workshop
Email: ChengBoSoft@126.com