初步认识CVI程序设计一个示例.ppt

上传人:小飞机 文档编号:6099682 上传时间:2023-09-24 格式:PPT 页数:52 大小:464.50KB
返回 下载 相关 举报
初步认识CVI程序设计一个示例.ppt_第1页
第1页 / 共52页
初步认识CVI程序设计一个示例.ppt_第2页
第2页 / 共52页
初步认识CVI程序设计一个示例.ppt_第3页
第3页 / 共52页
初步认识CVI程序设计一个示例.ppt_第4页
第4页 / 共52页
初步认识CVI程序设计一个示例.ppt_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《初步认识CVI程序设计一个示例.ppt》由会员分享,可在线阅读,更多相关《初步认识CVI程序设计一个示例.ppt(52页珍藏版)》请在三一办公上搜索。

1、初步认识CVI程序设计 从一个例子开始,我们的第一个示例将很简单,我们所要做的是创建一个如下的图形用户界面(User Interface)。,当我们按下Acquire按扭,计算机会自动产生一个正弦波形并画在图形显示区中;当按下Clear按扭后则清除正弦波形;当按下Quit按扭后退出该程序。,现在我们就开使创建该程序。首先按下面步骤起动CVI:开始程序National Instrument CVICVI IDE或者直接从桌面起动CVI 的快捷方式,双击桌面 National Instrument CVI 图标 当LabWindows/CVI打开后你就会见到如下所示的一个空的项目(Project)

2、窗口:,第一步:创建用户界面,创建控件元素:从Project窗中选择:FileNewUser Interface(*.uir)创建一个用户接口文件(*.uir),CVI会自动弹出如下所示的窗口:,在该窗中Untitled Panel 的灰色区域中单击鼠标右键,便会弹出一个快捷菜单如下所示:,该菜单中选择:Command ButtonSquare Command Button 点击左键后便会创建一个方形的按扭。由于本程序总共需要三个按扭,所以按照上面的步骤再创建两个方形按扭。从该菜单中选择:GraphGraph,创建一个用于图形显示的Graph。现在我们已经建好了用户界面所需的控件元素,请使用鼠

3、标把它们拖到如下图所示的位置。,修改用户界面中各控件元素的属性:修改Panel的属性:在Untitled Panel中双击一下,便会弹出Panel的一个Edit Panel窗,如下图所示:,将Panel Title项中的Untitled Panel 改为 Demo Panel.说明:通过这种方式你可以修改Panel 顶端所显示的名字。将Auto-Center Vertically(when loaded)项 与Auto-Center Horizontally(when loaded)项前的矩形框选中。说明:当选中后,程序运行时,面板会自动居中。修改后的Edit Panel 应如下图所示:,点击

4、OK按扭,完成对Panel属性的修改。修改Graph的属性:在Untitled Control的蓝色区域中双击一下,便会弹出Graph的一个Edit Graph窗,如下图所示:,将Label项中的Untitled Control改为ShowWave.说明:通过这种方法可以修改Graph的标签名。点击OK按扭,完成对Graph属性的修改。3.修改Command按扭的属性:(1)Acquire 按扭:双击左上方的OK按扭,便会弹出Command的一个Edit Command窗,如下图所示:,将Constant Name项改为ACQUIRE说明:Constant Name是程序中用来标识该控件元素的

5、常量,在后面的编程中会用到。将Callback Function项改为AcquireCallback 说明:Callback Function(回调函数)是程序中用来响应界面中的Windows消息,也就是说:当 该按扭被点击之后,程序会调用AcquireCallback函数来作为 对按扭被按下这一消息的响应。将Label项改为 Acquire 说明:通过这种方法可以修改按扭名字,Acquire中A字母前有下画线,是指可 以通过 Alt+A即可达到按下该按扭的效果(即热键)。修改后的Edit Command Button窗应如下图所示:,点击OK按扭,完成对Command Button属性的修改

6、。(2)Clear 按扭:与以上步骤相同,双击左下方的OK按扭,弹出Command的一个Edit Command窗。将其Constant Name改为CLEAR将Callback Function项改为ClearCallback将Label项改为 Clear 修改后的Edit Command Button窗应如下图所示:,点击OK按扭,完成Command Button属性的修改。(3)Quit 按扭:与以上步骤相同,双击右方的OK按扭,弹出Command的一个Edit Command窗。a.将其Constant Name改为QUITb.将Callback Function项改为QuitCall

7、backc.将Label项改为 Quit 修改后的Edit Command Button窗应如下图所示:,点击OK按扭,完成Command Button属性的修改。当完成以上工作后,Panel应该如下图所示:,选择:FileSave 保存UIR文件,命名为FirstSample.uir。到目前为止我们已经完成了用户界面(user interface)的设计,当程序运行时所显示的界面就是我们刚才上图看到的那样。下面我们要做的就是真正的程序编制工作,其实CVI可以自动生成许多的代码以及缺省消息的处理函数,你只需添加一些你自己所需的一些代码。,第二步:完成程序的编制,产生程序代码:现在请你让图形用户

8、界面窗口为当前响应状态,如下图所示:,从用户图形界面窗口中选择:CodeGenerateAll Code然后会显示出如下的界面:,请用你的鼠标点击Select QuituserInterface Callback 中的QuitCallk项,确保其前面出现一个小钩。说明:1。当你想让你的程序的主函数为Win Main而不是Main时你可以选择 Generate WinMian()instead of Main()项前的矩形框。2Select panels to load and display at startup 项是指你选择那一个Panel作为最初装入并显示的Panel,当你创建多个Pane

9、l时你就需要选择一个Panel作为最初显 示的面板。由于本程序只有一个Panel所以该Panel就被缺省的作为最初显示的面板而不再需要你去选择。3Select QuituserInterface Callback 项是指你选择那一个函数作为退出程序的终止函数。本程序是让QuitCallback作为退出函数的。点击OK按扭,便会弹出如下图所示的源代码(Code)窗:,其窗中的程序代码如下所示:#include#include#include FirstSample.hstatic int panelHandle;int main(int argc,char*argv)if(InitCVIRTE(

10、0,argv,0)=0)return-1;/*out of memory*/if(panelHandle=LoadPanel(0,FirstSample.uir,PANEL)0)return-1;DisplayPanel(panelHandle);RunUserInterface();DiscardPanel(panelHandle);return 0;int CVICALLBACK AcquireCallback(int panel,int control,int event,void*callbackData,int eventData1,int eventData2)switch(eve

11、nt)case EVENT_COMMIT:break;return 0;,int CVICALLBACK ClearCallback(int panel,int control,int event,void*callbackData,int eventData1,int eventData2)switch(event)case EVENT_COMMIT:break;return 0;int CVICALLBACK QuitCallback(int panel,int control,int event,void*callbackData,int eventData1,int eventData

12、2)switch(event)case EVENT_COMMIT:QuitUserInterface(0);break;return 0;,该程序代码共有4个函数:main()函数,是程序的入口,它的功能是初始化程序,装载用户界面面板,并显示。AcquireCallback()函数,当Acquire按扭被点击之后,该函数就是响应该消息的函数。ClearCallback()函数,当Clear按扭被点击之后,该函数就是响应该消息的函数。QuitCallback()函数,当Quit按扭被点击之后,该函数就是响应该消息的函数。main()与QuitCallback()函数中的代码是计算机自动生成的,而

13、计算机只生成AcquireCallback()与ClearCallback()函数的框架,其内部的用来响应并处理消息的代码是需要你自己添加上去的。,添加程序代码:1添加AcquireCallback()函数的程序代码:AcquireCallback()函数完成以下功能:从高级分析库(Advanced Ananysis)中产生一个正弦波,放在Wave数组中。现在请将鼠标放在AcquireCallback()函数Event_Commit:下面的空白行上,如下图所示:说明:你鼠标所放位置,就是函数插入的位置。LabWindows/CVI程序中所需的库函数都 是你使用函数面板,填写参数然后插入到函数所

14、需要的位置。,请选择:LibraryAdvanced Analysis在弹出的对话框中选择:Signal GenerationSine Pattern便会弹出如下图所示的一个函数面板:,请在Number of Elements项中填上512;把Number of Cycles 项改为3;Sine Pattern 项中填上用来装正弦信号的数组Wave,由于Wave是一个数组变量,故我门需要声明该变量:选择CodeDeclare Variable会弹出一个如下图所示的对话框:,请在Number of Elements 项中填上512,并选择了最下面的矩形框,然后点击OK按扭完成。返回到函数面板后,

15、选择CodeInsert Function Call完成函数的插入,这时Code 窗中的AcquireCallback()函数应如下所示: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;,我们已经的得到了正弦信号,现在需要将该信号画

16、到Graph上去:1)请将鼠标放在SinePattern()函数下面的空白行上,如上面所示那样。.请选择:LibraryUser Interface 在弹出的对话框中选择:Controls/Graph/Strip ChartGraph and Strip ChartGraph Plotting and DeletingPlot Waveform把函数面板中的对应各项填写成如下所示:PanelHandle:panelHandeleControl ID:PANEL_GRAPHY Array:WaveNumber of Points:512,选择CodeInsert Function Call完成函

17、数的插入,这时Code 窗中的AcquireCallback()函数应如下所示: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

18、,VAL_THIN_LINE,VAL_EMPTY_SQUARE,VAL_SOLID,1,VAL_RED);break;return 0;,到现在为止我们已经完成了AcquireCallback()函数的的程序代码。添加ClearCallback()函数的程序代码:ClearCallback()函数完成以下功能:当Clear按扭按下后,计算机会清除Graph上所画的正弦图形。现在请将鼠标放在ClearCallback()函数Event_Commit:下面的空白行上,如下图所示:,请选择:LibraryUser Interface 在弹出的对话框中选择:Control/Graph/Strip Ch

19、artGraph and Strip ChartGraph Plotting and DeletingDelete Graph Plot把函数面板中的对应各项填写成如下所示:PanelHandle:panelHandeleControl ID:PANEL_GRAPHPlotHandle:-1,选择CodeInsert Function Call完成函数的插入,这时Code 窗中的ClearCallback()函数应如下所示:int CVICALLBACK ClearCallback(int panel,int control,int event,void*callbackData,int ev

20、entData1,int eventData2)switch(event)case EVENT_COMMIT:DeleteGraphPlot(panelHandle,PANEL_GRAPH,-1,VAL_IMMEDIATE_DRAW);break;return 0;到目前为止我们已经完成了程序的编制任务。这一个看起来不算简单的程序,我们编起来并没有写多少源代码,这正是体现了LabWindows/CVI的强大功能所在。,第四步 运行程序完成项目文件,现在请你让源代码(Code)窗为当前响应状态,选择:RunDebug FirstSample_dbg.exe 便会弹出一个对话框,询问你是否在编译前

21、为该文件命名并添加到工程文件中去。点击yes按扭,把该文件命名为FirstSample.c。然后计算机询问你是否把“analysis.h”包含到FirstSample.c中去(因为,我们的程序中用到了高级分析库),点击yes按扭,同意该选项。,运行后的程序正如我们预期要求的那样。退出程序后,从源代码(Code)窗中选择:WindowProject 现在项目(Project)窗为当前响应状态,请选择:EditAdd Files to ProjectAll Files(*.*)便会弹出如下图所示的对话框:,请你按住键,点击FirstSample.h,FirstSample.c,FirstSample.uir。然后点击Add按扭把这些文件方到Selected Files框中。点击OK按扭,把以上文件添加到工程文件中去。,至此为止我们已经完成了第一个程序的编制工作,想必大家对LabWindows/CVI编程已经有了一个初步的了解,头脑里已建起程序编制的基本框架。,通过本部分的学习,你是否已经掌握?LabWindows/CVI 程序编制的基本步骤。简单的用户图形界面(*.uir)的创建。能使用函数面板完成函数的插入,构建源代码程序。项目工程文件的基本构成。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号