今天正式调试了一下LabWindow程序,发现功能是非常强大的,作为仪器控制,值得学习。
标准C函数应用,虚拟仪器控制,与LabVIEW是一对兄弟。
留待以后,仔细研究。
几个简单的函数:
GetCtlValue(panelHandle,PANEL_NUMERICKNOB,&value); 得到这数字旋钮的值
SetCtlValue(panelHandle,PANEL_NUMERICSLIDE,value); 赋给数字幻灯片
#include <cvirte.h>
#include <userint.h>
#include "ex1.h"
static int panelHandle;
int main(int argc,char *argv[])
{
if(InitCVIRTE(0,argv,0)==0)
return -1;
if((panelHandle=LoadPanel(0,"ex1.uir",PANEL))<0)
return -1;
DisplayPanel(panelHandle);
RunUserInterface();
DiscardPanel(panelHandle);
return 0;
}
int CVICALLBACK ChangeValueCB(int panel,int control,int event,void *callbackData,int eventData1,int eventData2)
{
double value;
switch (event)
{
case EVENT_COMMIT:
GetCtrVal(panelHandle,PANEL_NUMERICKNOB,&value);
SetCtrVal(panelHandle,PANEL_NUMERRICSLIDE,value);
break;
}
return 0;
}
int CVICALLBACK QuitCB(int panel,int control,int event,void *callbackData,int eventData1,int evenData2)
{
switch(event)
{
case EVENT_COMMIT:
QuitUserInterface(0);
break;
}
return 0;
}
DeleteGraphPlot(panelHandle,PANEL_GRAPH1,-1,VAL_IMMEDIATE_DRAW);删除所画曲线
PlotWaveform((panelHandle, PANEL_GRAPH1, waveData, POINTS, VAL_DOUBLE, 1.0, 0.0, 0.0, 1.0/sampleRate, VAL_THIN_LINE, VAL_EMPTY_SQUARE, VAL_SOLID, 1, VAL_RED);画出波形曲线
SineWave,正弦波 TriangleWave,三角波 SawtoothWave锯齿波 SquareWave 方波
BW_LPF (waveData,POINTS,sampleData,cutoff_freq,5,filterData);低通滤波器
CopyID(filterData,POINTS,specData); 数组拷贝函数
Spectrum(specData,POINTS);功率谱函数
CVI中回调函数的第一个参数是控件所在的面板的句柄。第二个参数为产生事件的控件的标识符。第三个参数是所产生的事件。第四个参数是回调数据,这些回调数据被用来在回调函数之间传递数据。回调数据可以是任何类型的数据。第五和第六个参数随着事件的不同而不同。
CVI控件的四种模式:1.Normal:该模式下用户对控件的操作可产生除Commit事件外的所有事件。 2.Hot:该模式下可产生包括Commit事件在内的所有事件。 3.Validate:在满足相应条件时可产生Commit事件。 4.Indicator:只能做显示用,不能产生任何事件。
SetCtrAttribute(panelHandle,PANEL_TIMER,ATTR_ENABLED,p);设置控件属性
FlashWindow((HWND)hwnd,1);窗口闪烁函数,是windows SDK函数,要用到<windows.h>头文件
int hwnd;
hwnd=GetCVIWindowHandle(); 获得windows句柄。
LabWindows CVI 9.0 值得学习。