1、人脸识别程序以及机器视觉研究内容和发展方向4Lab Windows实验报告姓名:张旭 学号:0905104116 专业:光电信息工程实验四:LabWindows用户界面编程一、实验要求 1、熟悉仪器面板、控件的属性含义及设置; 2、在编程时,能够熟练使用仪器面板的库函数;二、实验内容编写一个如下图所示的函数发生器,也可以设计成其它应用程序界面。3、实验仪器计算机一台,装有LabWindows4、实验步骤 步骤1:根据设计要求,设计如上图所示的用户界面,其具体控件属性设置如下表所示。控件类型Constant Name属性设置面板PanelPANEL命令按钮Command ButtonQUITBU
2、TTONCallback FunctionQuitCallbackLable_Quit曲线图控件GraphGRAPH1Control ModeIndicatorData ModeRetainLable波形显示下拉列表控件RingWAVEFORMCallback FunctionWaveFormChooseCBLabel波形选择Label/Value PairsLabel无Value0正弦波1三角波2锯齿波3方波4步骤2:生成代码框架。选择CodeGenerateAll Code, 生成代码框架,接着添加自定义函数show_wave 进行显示。 /*下拉列表控件“波形选择”对应的回调函数*/in
3、t CVICALLBACK WaveFormChooseCB (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) switch (event) case EVENT_COMMIT: show_wave(); break; return 0;然后,在函数show_wave内添加如下代码。void show_wave(void) int waveForm; /*波形选择变量*/ double ample=5.0; /*幅度*/ double phase=0.0,waveDat
4、aPOINTS; /*相位和波形数据变量*/ double sampleRate=10000.0,freq=100.0; /*采样率和频率变量*/ GetCtrlVal (panelHandle, PANEL_WAVEFORM, &waveForm); switch (waveForm) case 0: /*无波形,即清除所画曲线*/ DeleteGraphPlot(panelHandle,PANEL_GRAPH1,-1,VAL_IMMEDIATE_DRAW); break; case 1: /*正弦波*/ SineWave (POINTS, ample, freq/sampleRate, &
5、phase, waveData); break; case 2: /*三角波*/ TriangleWave (POINTS, ample, freq/sampleRate, &phase, waveData); break; case 3: /*锯齿波*/ SawtoothWave (POINTS, ample, freq/sampleRate, &phase, waveData); break; case 4: /*方波*/ SquareWave (POINTS, ample, freq/sampleRate, &phase, 50.0, waveData); break; if(wavef
6、orm) /*先判断是否选择了波形*/ 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);/*画出波形*/ 代码中的函数意义及调用方法如下1、函数DeleteGraphPlot 清除所画曲线,调用
7、路径为:LibraryUer Interface LibraryControls/Graphs/Strip Charts.Graphs and Stirp ChartsDelete Graph Plot其参数设置见图1。图1 DeleteGraphPlot函数面板2、函数SineWave,TriangleWave,SawtoothWave,SquareWave分别为正弦波,三角波,锯齿波和方波生成函数。它们都在Library Advanced Analysis Library Signal Generation 目录下获得,其参数设置如图2图5所示。3、函数PlotWaveform,画曲线图函
8、数,调用路径为:LibraryUer Interface LibraryControls/Graphs/Strip Charts.Graphs and Stirp ChartsPlotWaveform,其参数设置见图6。图2 正弦波生成函数面板图3 三角波生成函数面板图4 锯齿波生成函数面板图5 方波生成函数面板图6 PlotWaveform函数面板步骤3:运行程序。选择RunDebug ex1_dbg.exe。5、关键代码及注释#include #include #include #include myhanshu.h#define POINTS 512static int panelHan
9、dle;int main (int argc, char *argv) if (InitCVIRTE (0, argv, 0) = 0) return -1; /* out of memory */ if (panelHandle = LoadPanel (0, myhanshu.uir, PANEL) 0) return -1; DisplayPanel (panelHandle); RunUserInterface (); DiscardPanel (panelHandle); return 0;void show_wave(void) int waveForm;/*波形选择变量*/ do
10、uble ample=5.0; /*幅度*/ double phase=0.0,waveDataPOINTS; /*相位和波形数据变量*/ double sampleRate=10000.0,freq=100.0; /*采样率和频率变量*/ GetCtrlVal (panelHandle, PANEL_WAVEFORM, &waveForm); switch (waveForm) case 0: DeleteGraphPlot (panelHandle, PANEL_GRAPH1, -1, VAL_IMMEDIATE_DRAW); break; case 1: SineWave (POINTS
11、, ample, freq/sampleRate, &phase, waveData); break;case 2: TriangleWave (POINTS, ample, freq/sampleRate, &phase, waveData); break;case 3: SawtoothWave (POINTS, ample, freq/sampleRate, &phase, waveData); break;case 4: SquareWave (POINTS, ample, freq/sampleRate, &phase, 50.0, waveData);break; if(waveF
12、orm) /*先判断是否选择了波形*/ 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);/*画出波形*/ int CVICALLBACK QuitCallback (int panel, int
13、 control, int event, void *callbackData, int eventData1, int eventData2) switch (event) case EVENT_COMMIT: QuitUserInterface (0); break; return 0;/“波形选择”对应的回调函数int CVICALLBACK WaveFormChooseCB (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) switch (event) case EVENT_COMMIT: show_wave(); break; return 0;6、实验结果
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1