您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > LabWindowsCVI库函数的使用
1LabWindows/CVI库函数的使用一、实验目的1、进一步熟悉CVI的集成开发环境2、进一步学习仪器面板中控键的使用3、学习CVI库函数使用方法4、学习用CVI库函数进行频谱分析的步骤二、实验内容1、编写一个波形显示程序,要求根据输入的幅值和周期数显示正弦波;根据输入的幅值和占空比显示方波。2、制作一个简单仪器面板:要求有两个图形控件,用来显示图形;四个数字控件,分别用来输入正弦波幅值、周期以及方波的幅值、占空比;五个命令控件,分别用来启动程序产生正弦波、产生方波,清楚屏幕上显示的图像和退出程序。3、利用CVI的代码生成工具生成你制作的一起面板的程序框架。4、在用户程序中添加相应程序,运行后观察程序执行的结果。三、程序源代码#includeanalysis.h2#includecvirte.h#includeuserint.h#includeguweiming.hstaticintpanelHandle;doublea,b,c,d;intmain(intargc,char*argv[]){if(InitCVIRTE(0,argv,0)==0)return-1;/*outofmemory*/if((panelHandle=LoadPanel(0,guweiming,PANEL))0)return-1;DisplayPanel(panelHandle);RunUserInterface();DiscardPanel(panelHandle);return0;}intCVICALLBACKQINGPINGCallback(intpanel,intcontrol,intevent,void*callbackData,inteventData1,inteventData2){3switch(event){caseEVENT_COMMIT:DeleteGraphPlot(panelHandle,PANEL_GRAPH_2,-1,VAL_IMMEDIATE_DRAW);break;}return0;}intCVICALLBACKFANGBOCallback(intpanel,intcontrol,intevent,void*callbackData,inteventData1,inteventData2){doublewave[512];doublephase=120,*p;p=&phase;switch(event){caseEVENT_COMMIT:SquareWave(512,c,7.8125e-3,p,50.0,wave);PlotWaveform(panelHandle,PANEL_GRAPH,wave,512,4VAL_DOUBLE,1.0,0.0,0.0,d,VAL_THIN_LINE,VAL_EMPTY_SQUARE,VAL_SOLID,1,VAL_RED);break;}return0;}intCVICALLBACKQINGPING2Callback(intpanel,intcontrol,intevent,void*callbackData,inteventData1,inteventData2){switch(event){caseEVENT_COMMIT:DeleteGraphPlot(panelHandle,PANEL_GRAPH,-1,VAL_IMMEDIATE_DRAW);break;}return0;}5intCVICALLBACKTUICHUCallback(intpanel,intcontrol,intevent,void*callbackData,inteventData1,inteventData2){switch(event){caseEVENT_COMMIT:QuitUserInterface(0);break;}return0;}intCVICALLBACKFTCallback(intpanel,intcontrol,intevent,void*callbackData,inteventData1,inteventData2){switch(event){caseEVENT_COMMIT:GetCtrlVal(panelHandle,PANEL_FT,&a);break;6}return0;}intCVICALLBACKZQCallback(intpanel,intcontrol,intevent,void*callbackData,inteventData1,inteventData2){switch(event){caseEVENT_COMMIT:GetCtrlVal(panelHandle,PANEL_ZQ,&b);break;}return0;}intCVICALLBACKFZCallback(intpanel,intcontrol,intevent,void*callbackData,inteventData1,inteventData2){switch(event)7{caseEVENT_COMMIT:GetCtrlVal(panelHandle,PANEL_FZ,&c);break;}return0;}intCVICALLBACKZKBCallback(intpanel,intcontrol,intevent,void*callbackData,inteventData1,inteventData2){switch(event){caseEVENT_COMMIT:GetCtrlVal(panelHandle,PANEL_ZKB,&d);break;}return0;}intCVICALLBACKZHENGXIANBOCallback(intpanel,intcontrol,intevent,8void*callbackData,inteventData1,inteventData2){doubleWaves[512];switch(event){caseEVENT_COMMIT:SinePattern(512,a,0.0,b,Waves);PlotWaveform(panelHandle,PANEL_GRAPH_2,Waves,512,VAL_DOUBLE,1.0,0.0,0.0,1.0,VAL_THIN_LINE,VAL_EMPTY_SQUARE,VAL_SOLID,1,VAL_RED);break;}return0;}四、思考题1.简述PanelHandle和ControlID参数的作用;答:PanelHandle这一参数由LoadPanel库函数设置,存入的是已存储的面板文件这一对象。ControlID对应面板文件上的各个控件,由PANEL_xxx表示,PANEL为面板名,xxx为控件对应的常量名称。92.简述DeleteGraphPlot函数的调用和设置过程;答:选择Library→UserInterface→Controls/Graphs/StripCharts→GraphsandStripCharts→GraphPlottingandDeleting→DeleteGraphPlot,调用DeleteGraphPlot函数。设置DeleteGraphPlot函数:PanelHandle栏输入panelHandle,ControlID栏输入PANEL_GRAPH,PlotHandle栏输入默认值-1。3.简述GetCtrlVal函数的调用和设置过程;答:选择Library→UserInterface→Controls/Graphs/StripCharts→GeneralFunctions→GetControlValue,调用GetCtrlVal函数。设置GetCtrlVal函数:PanelHandle栏输入panelHandle,ControlID栏输入PANEL_NUM或者PANEL_AMP即对应的数字控件的常量名称,Value栏输入对应赋值的指针的调用&或&num。4.简述SquareWave函数的调用和设置过程;答:选择Library→AdvancedAnalysisLibrary→SignalGeneration→SquareWave,调用SquareWave函数。设置SquareWave函数:NumberofElements栏输入需要显示的点数,这里取1000,Amplitude栏输入幅值的值即变量amp,Frequency栏输入频率值在这里为1.0/1000*num,Phase栏输入相移量&phase,DutyCycle栏输入占空比,这里取50%即50.0,SquareWave中填入需要赋值的数组变量名,这里取为a。10
本文标题:LabWindowsCVI库函数的使用
链接地址:https://www.777doc.com/doc-2883436 .html