1、- 1 -Lab Windows 实验报告姓名:张旭 学号:0905104116 专业:光电信息工程实验三:分析正弦信号程序结构1、实验要求1、熟悉 labwindows程序产生过程。2、熟悉 labwindows环境下程序的分析方法。2、实验内容让图形用户界面窗口为当前响应状态,如下图所示3、实验仪器计算机一台,装有 LabWindows4、实验步骤步骤 1、用代码生成器生成程序框架从用户图形界面窗口中选择:CodeGenerateAll Code然后会显示出如下界面:- 2 -用鼠标点击 Select QuituserInterface Callback 中的 QuitCallk项,确保其
2、前面出现一个小钩。点击 OK按扭,便会弹出如下图所示的源代码(Code)窗:- 3 -其窗中的程序代码如下所示:#include #include #include “FirstSample.h“static int panelHandle;int main (int argc, char *argv )if (InitCVIRTE (0, argv, 0) = 0)return -1; /* out of memory */if (panelHandle = LoadPanel (0, “FirstSample.uir“, PANEL) Advanced Analysis在弹出的对话框中选择
3、:Signal GenerationSine Pattern便会弹出如下图所示的一个函数面板:在 Number of Elements 项中填上 512;把 Number of Cycles 项改为 3;Sine Pattern 项中填上用来装正弦信号的数组 Wave。选择 CodeDeclare Variable 会弹出一个如下图所示的对话框:- 6 -在 Number of Elements 项中填上 512,并选择了最下面的矩形框,然后点击 OK 按扭完成。返回到函数面板后,选择 CodeInsert Function Call 完成函数的插入,这时 Code 窗中的 AcquireCa
4、llback( )函数应如下所示:int CVICALLBACK AcquireCallback (int panel, int control, int event,void *callbackData, int eventData1, int eventData2)double Wave512;switch (event)case EVENT_COMMIT:SinePattern (512, 1.0, 0.0, 3.0, Wave);|break;return 0;在 Graph 上显示所生成的正弦波信号将鼠标放在 SinePattern( )函数下面的空白行上,如上面所示那样。请选择:
5、LibraryUser Interface 在弹出的对话框中选择:Controls/Graph/Strip ChartGraph and Strip ChartGraph Plotting and DeletingPlot Waveform,出现如下图所示界面:- 7 -把函数面板中的对应各项填写成如下所示:PanelHandle: panelHandleControl ID : PANEL_GRAPHY Array: WaveNumber of Points: 512 选择 CodeInsert Function Call 完成函数的插入,这时 Code 窗中的 AcquireCallbac
6、k( )函数应如下所示:CVICALLBACK AcquireCallback (int panel, int control, int event,void *callbackData, int eventData1, int eventData2)double Wave512;switch (event)case EVENT_COMMIT:SinePattern (512, 1.0, 0.0, 3.0, Wave);PlotWaveform (panelHandle, PANEL_GRAPH, Wave, 512, VAL_DOUBLE, 1.0, 0.0, 0.0, 1.0, VAL_T
7、HIN_LINE, VAL_EMPTY_SQUARE, VAL_SOLID, 1, VAL_RED);break;return 0;- 8 -2)、添加 ClearCallback( )函数的程序代码:ClearCallback( )函数完成以下功能:当 Clear 按扭按下后,计算机会清除 Graph 上所画的正弦图形。现在将鼠标放在 ClearCallback( )函数 Event_Commit 下面的空白行上,如下图所示:选择: LibraryUser Interface 在弹出的对话框中选择:Control/Graph/Strip ChartGraph and Strip ChartG
8、raph Plotting and DeletingDelete Graph Plot把函数面板中的对应各项填写成如下所示:PanelHandle: panelHandeleControl ID : PANEL_GRAPHPlotHandle: -1- 9 -选择 CodeInsert Function Call 完成函数的插入,这时 Code 窗中的 ClearCallback( )函数应如下所示:int CVICALLBACK ClearCallback (int panel, int control, int event,void *callbackData, int eventData
9、1, int eventData2)switch (event)case EVENT_COMMIT:DeleteGraphPlot (panelHandle, PANEL_GRAPH, -1, VAL_IMMEDIATE_DRAW);break;return 0;步骤 3、 运行程序完成项目文件对源代码(Code)窗为当前响应状态,选择:RunDebug FirstSample_dbg.exe便会弹出一个对话框,询问你是否在编译前为该文件命名并添加到工程文件中去。点击yes 按扭,把该文件命名为 FirstSample.c。运行程序,得出结果。退出程序后,从源代码(Code)窗中选择:Wind
10、owProject现在项目 (Project)窗为当前响应状态,选择:EditAdd Files to ProjectAll Files(*.*),便会弹出如下图所示的对话框:- 10 -按住键,点击 FirstSample.h ,FirstSample.c ,FirstSample.uir。然后点击 Add 按扭把这些文件方到 Selected Files 框中。点击 OK 按扭,把以上文件添加到工程文件中去。5、关键代码及注释#include #include #include #include “mysin.h“static int panelHandle;int main (int a
11、rgc, char *argv)if (InitCVIRTE (0, argv, 0) = 0)return -1; if (panelHandle = LoadPanel (0, “mysin.uir“, PANEL) 0)return -1;DisplayPanel (panelHandle);RunUserInterface ();- 11 -DiscardPanel (panelHandle);return 0;/生成 AcquireCallback( )函数int CVICALLBACK AcquireCallback (int panel, int control, int eve
12、nt,void *callbackData, int eventData1, int eventData2)double Wave512;switch (event)case EVENT_COMMIT:SinePattern (512, 1.0, 0.0, 3.0, Wave);PlotWaveform (panelHandle, PANEL_GRAPH, Wave, 512, VAL_DOUBLE, 1.0, 0.0, 0.0, 1.0, VAL_THIN_LINE,VAL_EMPTY_SQUARE, VAL_SOLID, 1, VAL_RED);break;return 0;/生成 Cle
13、arCallback( )函数int CVICALLBACK ClearCallback (int panel, int control, int event,void *callbackData, int eventData1, int eventData2)switch (event)case EVENT_COMMIT:DeleteGraphPlot (panelHandle, PANEL_GRAPH, -1, VAL_IMMEDIATE_DRAW);break;- 12 -return 0;int CVICALLBACK QuitCallback (int panel, int control, int event,void *callbackData, int eventData1, int eventData2)switch (event)case EVENT_COMMIT:QuitUserInterface (0);break;return 0;六、实验结果- 13 -