LabWindowsCVI基础教程.pdf
《LabWindowsCVI基础教程.pdf》由会员分享,可在线阅读,更多相关《LabWindowsCVI基础教程.pdf(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、序 言LabWindows/CVI是National Instruments公司推出的一套面向测控领域的软件开发平台.它以ANSI C 为核心,将功能强大,使用灵活的 C 语言平台与数据采集,分析和表达的测控专业工具有机地接和起来.它的集成化开发平台,交互式编程方法,丰富的控件和库函数大大增强了 C语言的功能,为熟悉 C 语言的开发人员建立检测系统,自动测量环境,数据采集系统,过程监控系统等提供了一个理想的软件开发环境.本教程面向的是那些从未使用过 LabWindows/CVI 的读者,但是假设读者以有了 C 语言的基础并且熟悉 Windows 2000/9x/NT 操作系统.在每一章节的学习
2、中,作者都是通过一个具体的实例让读者迅速的掌握本章的知识点;而不是长篇大论,述及边枝细叶,反而使读者望而却步,只见树木,不见森林.想信通过对本教程的学习,读者可迅速掌握 LabWindows/CVI 编程思想及步骤,为读者日后进一步学习打下基础.本书约定:FilePage SetupOptionsFile 这一种黑色斜体字是指多级菜单名,按扭名,窗口名或者是关键性词汇.是指打开一个多级菜单或对话框.如:FilePage SetupOptions是指你首先打开 File 菜单,然后选择 Page Setup 项,最后从弹出的对话框中选择Options 项.说明:通过这种方式你可以修改Panel
3、顶端所显示的名字.该种字体所写的文字是值得读者注意并记忆的内容.该椭圆形框所框住的内容是读者需修改的地方.第一部分 CVI 快速入门本部分通过编制一个简单的LabWindows/CVI程序,使读者对 CVI 编程环境,思想及步骤有一初步的认识.第一章 初步认识 CVI 程序设计 从一个例子开始我们的第一个示例将很简单,我们所要做的是创建一个如下的图形用户界面(User Interface).当我们按下Acquire 按扭,计算机会自动产生一个正弦波形并画在图形显示区中;当按下Clear按扭后则清除正弦波形;当按下 Quit 按扭后退出该程序.现在我们就开使创建该程序.首先按下面步骤起动CVI:
4、开始程序National Instrument CVICVI IDE或者直接从桌面起动 CVI 的快捷方式,双击桌面National Instrument CVI图标当 LabWindows/CVI打开后你就会见到如下所示的一个空的项目(Project)窗:第一步:创建用户界面创建控件元素:从 Project 窗中选择:FileNewUser Interface(*.uir)创建一个用户接口文件(*.uir),CVI 会自动弹出如下所示的窗口:在该窗中 Untitled Panel 的灰色区域中单击鼠标右键,变会弹出一个快捷菜单如下所示:从该菜单中选择:Command ButtonSquare
5、 Command Button点击左键后便会创建一个方形的按扭.由于本程序总共需要三个按扭,所以按照上面的步骤再创建两个方形按扭.从该菜单中选择:GraphGraph,创建一个用于图形显示的Graph.1现在我们已经建好了用户界面所需的控件元素,请使用鼠标把它们拖到如下图所示的位置.修改用户界面中各控件元素的属性:修改 Panel 的属性:在 Untitled Panel 中双击一下,便会弹出 Panel 的一个 Edit Panel 窗,如下图所示:将 Panel Title项中的 Untitled Panel 改为 Demo Panel.说明:通过这种方式你可以修改Panel 顶端所显示的
6、名字.将 Auto-Center Vertically(when loaded)项与 Auto-Center Horizontally(when loaded)项前的矩形框选中.说明:当选中后,程序运行时,面板会自动居中.修改后的 Edit Panel 应如下图所示:点击 OK 按扭,完成对 Panel 属性的修改.修改 Graph 的属性:在 Untitled Control的蓝色区域中双击一下,便会弹出Graph 的一个Edit Graph窗,如下图所示:将 Label 项中的 Untitled Control 改为 ShowWave.说明:通过这种方法可以修改Graph 的标签名.点击
7、OK 按扭,完成对 Graph 属性的修改.3.修改 Command 按扭的属性:(1)Acquire 按扭:双击左上方的 OK 按扭,便会弹出 Command 的一个 Edit Command 窗,如下图所示:将 Constant Name 项改为 ACQUIRE说明:Constant Name 是程序中用来标识该控件元素的常量,在后面的编程中会用到.将 Callback Function项改为 AcquireCallback说明:Callback Function(回调函数)是程序中用来响应界面中的Windows消息,也就是说:当 该按扭被点击之后,程序会调用 AcquireCallbac
8、k 函数来作为对按扭被按下这一消息的响应.将 Label 项改为 Acquire说明:通过这种方法可以修改按扭名字,Acquire 中 A 字母前有下画线,是指可以通过 Alt+A即可达到按下该按扭的效果(即热键).修改后的 Edit Command Button窗应如下图所示:点击 OK 按扭,完成对 Command Button 属性的修改.(2)Clear 按扭:与以上步骤相同,双击左下方的 OK 按扭,弹出 Command 的一个 Edit Command 窗.将其 Constant Name 改为 CLEAR将 Callback Function项改为 ClearCallback将
9、Label 项改为 Clear修改后的 Edit Command Button窗应如下图所示:点击 OK 按扭,完成 Command Button 属性的修改.(3)Quit 按扭:与以上步骤相同,双击右方的 OK 按扭,弹出 Command 的一个 Edit Command 窗.a.将其 Constant Name 改为 QUITb.将 Callback Function 项改为 QuitCallbackc.将 Label 项改为 Quit2修改后的 Edit Command Button窗应如下图所示:点击 OK 按扭,完成 Command Button 属性的修改.当完成以上工作后,Pa
10、nel 应该如下图所示:选择:FileSave 保存 UIR 文件,命名为 FirstSample.uir.到目前为止我们已经完成了用户界面(user interface)的设计,当程序运行时所显示的界面就是我们刚才上图看到的那样.下面我们要做的就是真正的程序编制工作,其实 CVI 可以自动生成许多的代码以及缺省消息的处理函数,你只需添加一些你自己所需的一些代码.第二步:完成程序的编制产生程序代码:现在请你让图形用户界面窗口为当前响应状态,如下图所示:从用户图形界面窗口中选择:CodeGenerateAllCode然后会显示出如下的界面:请用你的鼠标点击Select QuituserInter
11、face Callback中的QuitCallk项,确保其前面出现一个小钩.说明:1.当你想让你的程序的主函数为Win Main而不是 Main 时你可以选择Generate WinMian()instead of Main()项前的矩形框.2.Select panels to load and display at startup项是指你选择那一个 Panel 作为最初装入并显示的 Panel,当你创建多个 Panel 时你就需要选择一个Panel 作为最初显示的面板.由于本程序只有一个Panel 所以该 Panel 就被缺省的作为最初显示的面板而不再需要你去选择.3.Select Quit
12、userInterface Callback项是指你选择那一个函数作为退出程序的终止函数.本程序是让 QuitCallback 作为退出函数的.点击 OK 按扭,便会弹出如下图所示的源代码(Code)窗:其窗中的程序代码如下所示:#include#include#include FirstSample.hstatic 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,
13、PANEL)AdvancedAnalysis在弹出的对话框中选择:Signal GenerationSine Pattern便会弹出如下图所示的一个函数面板:请在Number of Elements项中填上512;把Number of Cycles 项改为3;Sine Pattern 项中填上用来装正弦信号的数组 Wave,由于 Wave是一个数组变量,故我门需要声明该变量:选择 CodeDeclare Variable会弹出一个如下图所示的对话框:请在 Number of Elements 项中填上 512,并选择了最下面的矩形框,然后点击 OK 按扭完成.3返回到函数面板后,选择 Code
14、Insert 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;我们已经的得到了正弦信号,现在需要将该信号画到Grap
15、h 上去: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完成函数的插入
16、,这时 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,V AL_DOUBLE,1.0,0.0,0.0,1.0,
17、VAL_THIN_LINE,VAL_EMPTY_SQUARE,VAL_SOLID,1,VAL_RED);break;return 0;到现在为止我们已经完成了AcquireCallback()函数的的程序代码.4添加 ClearCallback()函数的程序代码:ClearCallback()函数完成以下功能:当Clear按扭按下后,计算机会清除Graph上所画的正弦图形.现在请将鼠标放在 ClearCallback()函数 Event_Commit:下面的空白行上,如下图所示:请选择:LibraryUser Interface在弹出的对话框中选择:Control/Graph/Strip Ch
18、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
19、eventData1,int eventData2)switch(event)case EVENT_COMMIT:DeleteGraphPlot(panelHandle,PANEL_GRAPH,-1,V AL_IMMEDIATE_DRAW);break;return 0;到目前为止我们已经完成了程序的编制任务.这一个看起来不算简单的程序,我们编起来并没有写多少源代码,这正是体现了 LabWindows/CVI的强大功能所在.第四步 运行程序完成项目文件现在请你让源代码(Code)窗为当前响应状态,选择:RunDebug FirstSample_dbg.exe便会弹出一个对话框,询问你是否在编译
20、前为该文件命名并添加到工程文件中去.点击 yes 按扭,把该文件命名为 FirstSample.c.然后计算机询问你是否把 analysis.h包含到 FirstSample.c中去(因为,我们的程序中用到了高级分析库),点击 yes 按扭,同意该选项.运行后的程序正如我们预期要求的那样.退出程序后,从源代码(Code)窗中选择:WindowProject现在项目(Project)窗为当前响应状态,请选择:EditAdd Files toProjectAll Files(*.*)便会弹出如下图所示的对话框:请你按住键,点击 FirstSample.h,FirstSample.c,FirstSa
21、mple.uir.然后点击 Add 按扭把这些文件方到Selected Files 框中.点击 OK 按扭,把以上文件添加到工程文件中去.至此为止我们已经完成了第一个程序的编制工作,想必大家对5LabWindows/CVI编程已经有了一个初步的了解,头脑里已建起程序编制的基本框架.通过本部分的学习,你是否已经掌握LabWindows/CVI程序编制的基本步骤.简单的用户图形界面(*.uir)的创建.能使用函数面板完成函数的插入,构建源代码程序.项目工程文件的基本构成.第二部分 CVI 环境下程序设计通过编制第一章的FirstSample程序,读者已对 LabWindows/CVI编程有一定了解
22、.本部分就是在第一部分的基础上进一步讲述 LabWindows/CVI 程序设计及其编程环境等细节问题.这一章所讲内容请大家都务必动手实际操作一下,只有这样才能使你真正的掌握本章的内容.看完本章后请大家结合第一章把 FirstSample 重新编制一遍,以巩固本章所讲的加速LabWindows/CVI编程的技巧.第二章 LabWindows/CVI程序剖析通过例程 FirstSample的编制,大家已对LabWindows/CVI编程有了初步的认识.本章是作者从总体上来谈谈自己对 LabWindows/CVI程序的理解与认识.LabWindos/CVI编程的步骤基本如下:制定程序设计的基本方案
23、第一步 根据任务确定程序的基本框架如:程序界面,程序中所需的函数等.创建用户图形界面第二步 根据第一步制定的方案创建用户图形界面及回调函数名.程序源代码的编制第三步 让计算机生成程序代码及回调函数的基本框架.添加函数代码,完成源代码的编制工作.工程项目的完成第四步 编译,调试程序.把头文件,用户图形界面文件,源代码文件添加到项目文件中去,完成整个程序的编制程序框架及文件间的相互关系如下图所示(以 FirstSample.prj为例):项目工程文件(FirstSample.prj)用户图形界面文件 源代码文件 头文件(FirstSample.uir)(FirstSample.c)(FirstSa
24、mple.h)panel include FirstSample.h定义了程序中所需的常事件消息 量以及函数原形.Acquire 按扭 AcquireCallback()事件消息 Wave512Clear 按扭 ClearCallback()事件消息6Quit 按扭 QuitCallback()ShowWave上图所画的构成一项目工程文件的各文件之间的关系是非常重要的.如果你能理解上图所示的内容,那么你就基本理解了LabWindos/CVI程序的运作过程.请读者仔细阅读以上内容并理解,这些都有助于读者从整体上去把握 LabWindows/CVI程序设计的核心思想,有益于读者进一步学习LabWi
25、ndows/CVI.第三章 LabWindows/CVI编程环境LabWindows/CVI开发环境有以下三个最主要的窗(window)与函数面板(Function Panel):项目工程窗(Project Window)用户接口编辑窗(User Interface Editor window)源代码窗(Source window)下面就会对以上三个窗及函数面板作详细的介绍.项目工程窗(Project Window)一个项目工程窗(Project Window)如下图所示:在项目工程窗中列出了组成该项目工程所有的文件,项目工程窗中的个菜单项功能如下:File:创建,保存或打开文件.可以打开以下
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LabWindowsCVI 基础教程
限制150内