您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > LabWindowsCVI基础教程
LabWindows/CVI基础教程LabWindows/CVI基础教程znyq.jlu.edu.cn第2页序言LabWindows/CVI是NationalInstruments公司推出的一套面向测控领域的软件开发平台。它以ANSIC为核心,将功能强大,使用灵活的C语言平台与数据采集,分析和表达的测控专业工具有机地接和起来。它的集成化开发平台,交互式编程方法,丰富的控件和库函数大大增强了C语言的功能,为熟悉C语言的开发人员建立检测系统,自动测量环境,数据采集系统,过程监控系统等提供了一个理想的软件开发环境。本教程面向的是那些从未使用过LabWindows/CVI的读者,但是假设读者以有了C语言的基础并且熟悉Windows2000/9x/NT操作系统。在每一章节的学习中,作者都是通过一个具体的实例让读者迅速的掌握本章的知识点;而不是长篇大论,述及边枝细叶,反而使读者望而却步,只见树木,不见森林。想信通过对本教程的学习,读者可迅速掌握LabWindows/CVI编程思想及步骤,为读者日后进一步学习打下基础。本书约定:“FilePageSetupOptions”File这一种黑色斜体字是指多级菜单名,按扭名,窗口名或者是关键性词汇。“”是指打开一个多级菜单或对话框。如:FilePageSetupOptions是指你首先打开File菜单,然后选择PageSetup项,最后从弹出的对话框中选择Options项。“说明:通过这种方式你可以修改Panel顶端所显示的名字。”该种字体所写的文字是值得读者注意并记忆的内容。“”该椭圆形框所框住的内容是读者需修改的地方。LabWindows/CVI基础教程znyq.jlu.edu.cn第3页第一部分CVI快速入门本部分通过编制一个简单的LabWindows/CVI程序,使读者对CVI编程环境,思想及步骤有一初步的认识。LabWindows/CVI基础教程znyq.jlu.edu.cn第4页第一章初步认识CVI程序设计——从一个例子开始我们的第一个示例将很简单,我们所要做的是创建一个如下的图形用户界面(UserInterface)。当我们按下Acquire按扭,计算机会自动产生一个正弦波形并画在图形显示区中;当按下Clear按扭后则清除正弦波形;当按下Quit按扭后退出该程序。LabWindows/CVI基础教程znyq.jlu.edu.cn第5页现在我们就开使创建该程序。首先按下面步骤起动CVI:开始程序NationalInstrumentCVICVIIDE或者直接从桌面起动CVI的快捷方式,双击桌面NationalInstrumentCVI图标当LabWindows/CVI打开后你就会见到如下所示的一个空的项目(Project)窗:第一步:创建用户界面创建控件元素:从Project窗中选择:FileNewUserInterface(*.uir)…创建一个用户接口文件(*.uir),CVI会自动弹出如下所示的窗口:LabWindows/CVI基础教程znyq.jlu.edu.cn第6页在该窗中UntitledPanel的灰色区域中单击鼠标右键,变会弹出一个快捷菜单如下所示:从该菜单中选择:CommandButtonSquareCommandButtonLabWindows/CVI基础教程znyq.jlu.edu.cn第7页点击左键后便会创建一个方形的按扭。由于本程序总共需要三个按扭,所以按照上面的步骤再创建两个方形按扭。从该菜单中选择:GraphGraph,创建一个用于图形显示的Graph。现在我们已经建好了用户界面所需的控件元素,请使用鼠标把它们拖到如下图所示的位置。修改用户界面中各控件元素的属性:1.修改Panel的属性:在UntitledPanel中双击一下,便会弹出Panel的一个EditPanel窗,如下图所示:LabWindows/CVI基础教程znyq.jlu.edu.cn第8页a.将PanelTitle项中的UntitledPanel改为DemoPanel.说明:通过这种方式你可以修改Panel顶端所显示的名字。b.将AutoCenterVertically(whenloaded)项与AutoCenterHorizontally(whenloaded)项前的矩形框选中。说明:当选中后,程序运行时,面板会自动居中。修改后的EditPanel应如下图所示:LabWindows/CVI基础教程znyq.jlu.edu.cn第9页点击OK按扭,完成对Panel属性的修改。2.修改Graph的属性:在UntitledControl的蓝色区域中双击一下,便会弹出Graph的一个EditGraph窗,如下图所示:LabWindows/CVI基础教程znyq.jlu.edu.cn第10页a.将Label项中的UntitledControl改为ShowWave.说明:通过这种方法可以修改Graph的标签名。点击OK按扭,完成对Graph属性的修改。3.修改Command按扭的属性:(1)Acquire按扭:双击左上方的OK按扭,便会弹出Command的一个EditCommand窗,如下图所示:LabWindows/CVI基础教程znyq.jlu.edu.cn第11页a.将ConstantName项改为ACQUIRE说明:ConstantName是程序中用来标识该控件元素的常量,在后面的编程中会用到。b.将CallbackFunction项改为AcquireCallback说明:CallbackFunction(回调函数)是程序中用来响应界面中的Windows消息,也就是说:当该按扭被点击之后,程序会调用AcquireCallback函数来作为对按扭被按下这一消息的响应。c.将Label项改为Acquire说明:通过这种方法可以修改按扭名字,Acquire中A字母前有下画线,是指可以通过Alt+A即可达到按下该按扭的效果(即热键)。修改后的EditCommandButton窗应如下图所示:LabWindows/CVI基础教程znyq.jlu.edu.cn第12页点击OK按扭,完成对CommandButton属性的修改。(2)Clear按扭:与以上步骤相同,双击左下方的OK按扭,弹出Command的一个EditCommand窗。a.将其ConstantName改为CLEARb.将CallbackFunction项改为ClearCallbackc.将Label项改为Clear修改后的EditCommandButton窗应如下图所示:LabWindows/CVI基础教程znyq.jlu.edu.cn第13页点击OK按扭,完成CommandButton属性的修改。(3)Quit按扭:与以上步骤相同,双击右方的OK按扭,弹出Command的一个EditCommand窗。a.将其ConstantName改为QUITb.将CallbackFunction项改为QuitCallbackc.将Label项改为Quit修改后的EditCommandButton窗应如下图所示:LabWindows/CVI基础教程znyq.jlu.edu.cn第14页点击OK按扭,完成CommandButton属性的修改。当完成以上工作后,Panel应该如下图所示:LabWindows/CVI基础教程znyq.jlu.edu.cn第15页选择:FileSave保存UIR文件,命名为FirstSample.uir。到目前为止我们已经完成了用户界面(userinterface)的设计,当程序运行时所显示的界面就是我们刚才上图看到的那样。下面我们要做的就是真正的程序编制工作,其实CVI可以自动生成许多的代码以及缺省消息的处理函数,你只需添加一些你自己所需的一些代码。第二步:完成程序的编制产生程序代码:现在请你让图形用户界面窗口为当前响应状态,如下图所示:从用户图形界面窗口中选择:CodeGenerateAllCode…然后会显示出如下的界面:LabWindows/CVI基础教程znyq.jlu.edu.cn第16页请用你的鼠标点击SelectQuituserInterfaceCallback中的QuitCallk项,确保其前面出现一个小钩。说明:1。当你想让你的程序的主函数为WinMain而不是Main时你可以选择GenerateWinMian()insteadofMain()项前的矩形框。2.Selectpanelstoloadanddisplayatstartup项是指你选择那一个Panel作为最初装入并显示的Panel,当你创建多个Panel时你就需要选择一个Panel作为最初显示的面板。由于本程序只有一个Panel所以该Panel就被缺省的作为最初显示的面板而不再需要你去选择。3.SelectQuituserInterfaceCallback项是指你选择那一个函数作为退出程序的终止函数。本程序是让QuitCallback作为退出函数的。LabWindows/CVI基础教程znyq.jlu.edu.cn第17页点击OK按扭,便会弹出如下图所示的源代码(Code)窗:其窗中的程序代码如下所示:#includecvirte.h#includeuserint.h#includeFirstSample.hstaticintpanelHandle;intmain(intargc,char*argv[]){if(InitCVIRTE(0,argv,0)==0)return1;/*outofmemory*/if((panelHandle=LoadPanel(0,FirstSample.uir,PANEL))0)return1;DisplayPanel(panelHandle);RunUserInterface();LabWindows/CVI基础教程znyq.jlu.edu.cn第18页DiscardPanel(panelHandle);return0;}intCVICALLBACKAcquireCallback(intpanel,intcontrol,intevent,void*callbackData,inteventData1,inteventData2){switch(event){caseEVENT_COMMIT:break;}return0;}intCVICALLBACKClearCallback(intpanel,intcontrol,intevent,void*callbackData,inteventData1,inteventData2){switch(event){caseEVENT_COMMIT:break;}return0;}intCVICALLBACKQuitCallback(intpanel,intcontrol,intevent,void*callbackData,inteventData1,inteventData2){switch(event){caseEVENT_COMMIT:QuitUserInterface(0);break;}return0;}LabWindows/CVI基础教程znyq.jlu.edu.cn第19页该程序代码共有4个函数:1.main()函数,是程序的入口,它的功能是初始化程序,装载用户界面面板,并显示。2.AcquireCallback()函数,当Acquire按扭被点击之后,该函数就是响应该消息的函数。3.ClearCallback()函数,当Clear按扭被点击之后,该函数就是响应该消息的函数。4.QuitCallback()函数,当Quit按扭被点击之后,该函数就是响应该消息的函数。main()与QuitCallback()函数中的代码是计算机自动生成的,而计算机只生成AcquireCallback()与ClearCallback()函数的框架,其内部的用来响应并处理消息的代码是需要你自己
本文标题:LabWindowsCVI基础教程
链接地址:https://www.777doc.com/doc-4602543 .html