功能库中有多少个功能,就对应多少个功能接口。功能库是整体封装的,要访问功能库必须通过接口函数。所以,接口函数的设计至关重要。功能接口的设计的一个基本原则是接口参数标准化。智能虚拟控件的功能接口分为两大类:默认接口和扩展接口。其中默认接口由专家仪器库提供,扩展接口由基本信号分析库提供。
1.默认接口
默认接口是一类高度集成化的功能接口,主要面向基本用户。用户不需要自己再去重新组配仪器功能,只需对虚拟控件进行简单的功能“赋予”即可。默认接口功能的参数都是默认的,外部无需更改也不能更改。例如默认接口中的“幅值谱”功能,这是一个没有参数输入输出的接口,用于按钮、选择开关等布尔型虚拟控件。然而“幅值谱”功能本身是有参数的,例如,数据长度、傅里叶变换长度、平均次数、采样频率、窗函数等,默认接口则将所有这些参数设置一个默认值。
图9-8 仪器功能库的模型
根据控件传输参数的特点,默认功能接口可以分为四种类型:
1)面向数字输出型智能虚拟控件的功能接口,例如,表盘、数码管、温度计等。传递三个参数,分别用来说明输出的数值,控件ID值和功能ID值。控件ID和功能ID在同一台仪器中是唯一的,应该避免重复。接口定义如下:
voidFUNCTION(const float∗const,short,int)
2)面向数字输入型智能虚拟控件的功能接口,例如,刻度式旋扭、滑动条等。传递一个参数,用来说明当前输入数值的数值。
voidFUNCTION(float∗)
3)面向布尔型智能虚拟控件的功能接口,也就是在同一位置有两种状态的虚拟控件对应的功能接口,例如,按钮、拨动开关、选择开关、档位式旋钮等。传递一个空类型的变量。
voidFUNCTION(void)
4)面向数字输出输入型智能虚拟控件的功能接口,这是第一类功能和第二类功能组合,例如旋扭、滑动条等。传递四个参数,分别用来说明输出的数值,控件ID值和功能ID值,传值函数地址。控件ID和功能ID在同一台仪器中是唯一的,应该避免重复。接口定义如下
voidFUNCTION(const float∗const,short,int,FARPROC)
2.扩展接口
虚拟仪器开发系统真正强大的地方,就在仪器功能的重组上,或者说“功能的积木式拼搭”。也就是说,由一些基本的功能组合为更为具体的特定仪器功能,最终成为一个具有默认接口特征的接口。扩展接口就是完成基本功能的“积木式拼搭”,如图9-8中的功能12,它由三个基本功能组成(功能11、基本功能库中功能2和功能X),而功能11本身又由两个功能组成(功能9和功能10)。这是一类面向高级用户的接口,这些用户既熟悉特定的工程领域,明确自己需要解决什么问题,需要哪些测试功能;也了解信号分析处理的一些基本知识,知道基本信号处理功能含义和目的,并且懂得如何有这些基本功能组合出能够完成自己特定要求的专门功能。
例如,可以建立如下一些信号分析处理的基本功能:
1)基本信号处理功能库:包括各种典型信号的产生;信号的基本运算,如延迟、相加、相乘、翻转、和、积、特征值等;卷积;相关传递函数,相干函数;FFT;DCT变换;Hil-bert变换;窗函数;FIR滤波;IIR滤波;谐波分析;倍频分析等。(www.xing528.com)
2)时频分析功能库:包括短时傅里叶变换(gabor变换)、Wigner-Ville分布、Choi-Wil-liams分布、Rihaczek分布、Born-Jordan分布等。
3)小波变换功能库:包括小波基库、连续小波变换、离散小波变换、小波包变换等。
4)数学运算功能库:包括方程组求解(包括线性方程组、非线性方程组、常微分方程等)、微积分、插值、拟合、概率统计等。
5)扩展信号处理功能库:包括时间序列分析、高阶谱估计、神经网络、支持向量机(SVM)、Hilbert-Huang变换、独立分量分析等。
扩展接口的设计一个是体现在功能库模型上,另外要求智能虚拟控件的组态性设计。扩展接口要求每类控件都具有输入输出参数,例如按钮控件,输出布尔变量(0或1;真或假);选择开关控件,输出连续的状态序号(0、1、2、3、序号的多少取决于选择开关的层数和每层的档位数)。那么对于某个扩展接口来讲,也就不要求必须具体使用哪类控件,即对于扩展接口来讲,可以赋予给任何一类控件。扩展接口也可作为默认接口使用,此时该接口相关的参数都是默认的。
扩展接口的组配有两种方式,一种是接口参数的组配;一种是功能的组合。以幅值谱接口为例,说明扩展接口的组配。
设幅值谱接口形式为
AmpliSpectrum(float∗signal,float fs,int inputlen,int window,int averMode,int averNum,int MagMode,float∗spectrum,float∗freq,int outlen)
该接口中,输入参数有:输入信号signal,采样频率fs,输入信号长度inputlen,窗函数类型window,平均类型averMode,平均次数averNum,幅值形式(对数/线性)MagMode。输出参数有:幅值谱幅度spectrum,幅值谱频率freq,输出信号长度outlen。当然,在实际接口设计时,有些输入输出参数可以合并,例如输入输出信号的长度,可以用同一个参数变量来表示。
如果采用接口参数组配方式,则可根据输入输出参数的特点,分别让相应的智能虚拟控件控制这些参数。对于输入输出信号缓冲,由数据获取与管理模块统一管理;采样频率、输入输出信号长度可由旋钮类等输出数值的控件控制;窗函数类型、平均类型、平均次数可由选择开关类等输出连续状态量的控件控制;幅值形式只有两种状态,因此可由按钮类等有两种状态输出的控件控制。
若用户希望在已有幅值谱功能的基础上作某些符合自身要求的改进,则采用功能组合方式组配。例如,它可对幅值谱输入信号首先进行滤波处理、在外部做加窗处理等。扩展接口功能组配如图9-9所示。甚至可以在该功能内部设计滤波器。经过组配之后的功能通过数据管理模块中的数据池和全局数据进行信息的传递和交换,保证功能逻辑的完整性。
图9-9 扩展接口功能组配
用户也可以自行组配出一个全新的幅值谱功能。例如,对于一个基本的幅值谱功能来讲,一般先加窗,然后进行快速傅里叶变换,最后对傅里叶变换之后的复变量做均方根运算,从而得到幅值谱。即具有如图9-10所示的功能拼搭形式。在这一过程,用户拥有功能拼搭的完全自主权,相当于利用类似VC++等高级语言函数编写自己的测试分析功能,只是这里的函数为信号分析处理的基本函数。
图9-10 功能拼搭形式
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。