Labwindows扫盲+技巧贴,CVI学习必看
[labwindows cvi教程]LabWindows试用版入门指南
![[labwindows cvi教程]LabWindows试用版入门指南](https://img.taocdn.com/s3/m/9294a4f3910ef12d2af9e721.png)
[labwindows cvi教程]LabWindows™/CVI™试用版入门指南最低系统要求想运行LabWindows/CVI,须具备以下配置:∙采用Pentium 1 GHz或更高性能微处理器的个人计算∙Microsoft操作系统:o Windows 7 (32位和64位)o Windows Vista (32位和64位)o Windows XP (32位)o Windows Server 2008 R2 (64位)o Windows Server 2003 R2 (32位)注:LabWindows/CVI仅支持Windows Server R2版本。
∙1024 × 768分辨率(或者更高) 视频适配器∙至少128 MB RAM, 推荐采用512 MB∙ 1.1 GB可用硬盘空间适合完整安装∙兼容Microsoft的鼠标安装指南完成下列步骤,从而安装LabWindows/CVI试用版软件包:1. 下载源自 的LabWindows/CVI试用版软件包并依照屏幕指南解压缩文件2. 解压缩文件后,安装自动开始,同时NI LabWindows/CVI窗口出现。
单击安装LabWindows/CVI 版本,其中的版本是您在试用的LabWindows/CVI版本3. 单击下一步4. 在用户信息面板上,选择安装NI LabWindows/CVI 版本试用版-不需要序列号5. 根据屏幕上的指示操作6. 安装LabWindows/CVI后,LabWindows/CVI安装程序提示您插入NI设备驱动盘。
评估LabWindows/CVI,无需通过安装设备驱动程序。
单击稍后安装(Later),完成LabWindows/CVI的安装。
LabWindows/CVI试用版在下载后,可安装LabWindows/CVI试用版软件包;该试用版软件包能在之后作为具有许可证的LabWindows/CVI版本被激活。
当您在试用期内启用LabWindows/CVI或是您购买合法许可证前,LabWindows/CVI会展现下图中出现的对话框。
LabWindows CVI教程

第一章 : LabWindows/CVI1.1 LabWindows/CVI1.1.1 LabWindows/CVI概述LabWindows/CVI是美国NI(National Instruments)公司开发的面向计算机测控领域的虚拟仪器软件开发平台,可以在多种操作系统(WindowsXP/Vista/7、Mac OS和Unix)下运行。
LabWindows/CVI 是为C 语言程序员提供的集成开发环境(IDE),在此开发环境中可以利用C语言及其提供的库函数来实现程序的设计、编辑、编译、链接、调试。
使用LabWindows/CVI 可以完成以下但不限于以下工作:·交互式的程序开发;·具有功能强大的函数库,用来创建数据采集和仪器控制的应用程序;·充分利用完备的软件工具进行数据采集、分析和显示;·利用向导开发IVI 仪器驱动程序和创建ActiveX 服务器;·为其它程序开发C 目标模块、动态连接库(DLL)、C 语言库。
图 1‐1 LabWindows/CVI界面LabWindows/CVI 的功能强大在于它提供了丰富的函数库。
利用这些库函数除可实现常规的程序设计外,还可实现更加复杂的数据采集和仪器控制系统的开发。
数据采集。
IVI库、GPIB/GPIB 488.2库、NI-DAQmx库、传统的NI-DAQ库、RS-232库、VISA库、VXI库以及NI-CAN库。
数据分析。
格式化IO库、分析库以及可选的高级分析库。
GUI库。
使用LabWindows/CVI 的用户界面编辑器可以创建并编辑图形用户界面(GUI),而使用LabWindows/CVI 的用户界面库函数可以在程序中创建并控制GUI。
此外,LabWindows/CVI为GUI 面板的设计,准备了许多专业控件,如:曲线图控件、带状图控件、表头、旋钮和指示灯等,以适应测控系统软件开发的需求,利用这些控件可以设计出专业的测控程序界面。
LabWindowsCVI扫盲技巧贴

LabWindows/CVI 扫盲+技巧贴(CVI 学习必看)字体: 小 中 大 | 打印 发表于: 2008-6-11 13:15 作者: LAVA 来源: TestDevelop1、什么是LabWindows/CVI ?NI LabWindows/CVI 是一类久经验证的ANSI C 集成开发环境,为工程师和科学家提供用于创建测试和控制应用的全套编程工具。
NI LabWindows/CVI 兼有ANSI C 的耐用性、复用性和特定的工程性能,适用于仪器控制、数据采集、分析和用户界面开发。
2、CVI 适合什么人使用?CVI 是基于ANSI C 的快速开发环境,适用于有C,C++基础。
使用VB ,VC ,BC 运用控件式组织用户界面的工程师。
3、CVI 有几种版本?基本版RMB10220∙ ANSI C 开发环境 ∙ 用户界面设计 ∙ 数据采集和仪器控制∙IVI 驱动连接完整版RMB21305∙ 首选的自动化测试软件包 ∙300多个数学/分析函数∙ 因特网连接 ∙ Windows SDK ∙.NET 开发工具目前最新的是8.5版,下图是CVI 的版本历史:TimeLine545px.png4、CVI开发的程序能否独立运行?可以。
和所有的开发工具一样,CVI编写的程序只要提供CVI运行支持库(CVI runtime)即可。
5、CVI的运行支持库在哪里下载?LabWindows/CVI Run-Time Engine 8.5.1 - Windows 2000/Vista x64/Vista x86/XP/apps/utf8/niup.ni?ap=GB_NIDU&ip=209&loc=en-US&du=/nidu/cds/view/p/id/907/lang/zhsLabWindows/CVI Run-Time Engine 8.1.1 for Windows 2000/Vista x64/Vista x86/XP/support/softlib/labwindows/cvi/Run-Time%20Engines/8.1.1/NILWCVIRTE811.exe6、是否要每次手动安装支持库?否,CVI程序带有发布功能。
LabWindowsCVI基础指导教程

LabWindows/CVI基础指导教程1. 简介LabWindows/CVI是一种基于C语言的集成开发环境(IDE),广泛应用于数据采集、实验控制和测试自动化等领域。
本教程旨在为初学者提供关于LabWindows/CVI的基础指导,包括环境安装、项目创建、界面设计和编程等方面的内容。
2. 环境安装在开始使用LabWindows/CVI之前,我们首先需要安装LabWindows/CVI的运行环境。
按照以下步骤进行安装:1.下载LabWindows/CVI安装程序,并运行安装程序。
2.在安装程序中选择安装路径,并点击“下一步”进行安装。
3.根据提示完成安装过程。
安装完成后,我们就可以开始创建LabWindows/CVI项目了。
3. 项目创建LabWindows/CVI使用项目(Project)的方式来组织和管理代码。
下面是创建新项目的步骤:1.打开LabWindows/CVI IDE。
2.点击“文件”菜单,并选择“新建项目”。
3.在弹出的对话框中选择项目类型和保存路径,然后点击“确定”。
4.在新建项目的基础上,可以添加文件、配置编译选项等。
4. 界面设计LabWindows/CVI提供了UI工具箱,可以通过拖拽控件来设计界面。
下面是界面设计的基本步骤:1.打开项目。
2.点击“窗体”菜单,并选择“添加窗体”。
3.在窗体设计器中,可以拖拽控件到窗体中,并调整位置和大小。
4.可以通过属性编辑器来设置控件的属性和事件。
界面设计完成后,我们可以进行程序的编程。
5. 编程LabWindows/CVI使用C语言进行编程。
下面是编程的基本步骤:1.打开窗体设计器,选择需要编写代码的控件。
2.双击控件,进入控件的事件处理函数。
3.在事件处理函数中编写代码,实现相应的功能。
4.可以使用LabWindows/CVI提供的函数库来完成各种操作,如数据采集、图形绘制等。
除了事件处理函数,我们还可以创建其他类型的函数来实现更复杂的功能。
LabWindowsCVI教程用户图形界面设计.ppt

int FileSelectPopup (char Default_Directory[], char Default_File_Spec[], char File_Type_List[], char Title[], int Button_Label, int Restrict_Directory?, int Restrict_Extension?, int Allow_Cancel?, int Allow_Make_Directory?, char Path_Name[]);
GetPanelAttribute 获取面板属性
int GetPanelAttribute (int Panel_Handle, int Panel_Attribute, void *Attribute_Value);
GetPanelAttribute (testPanelHandle, ATTR_BACKCOLOR, &color);
response = ConfirmPopup ("测试信息", "测量错误,是否继续?");
PromptPopup
等待输入字符信息对话框
int PromptPopup (char Title[], char Message[], char Response_Buffer[], int Max_Response_Length);
i = FileSelectPopup ("c:\\vxipnp", "*.txt", "*.*", "选择数据文件", VAL_LOAD_BUTTON, 0, 0, 1, 0, filename);
CVI学习资料

第三章LabWindows/CVI 编程环境LabWindows/CVI开发环境有以下三个最主要的窗(window)与函数面板(Function Panel):·项目工程窗(Project Window)·用户接口编辑窗(User Interface Editor window)·源代码窗(Source window)下面就会对以上三个窗及函数面板作详细的介绍.项目工程窗(Project Window)一个项目工程窗(Project Window)如下图所示:在项目工程窗中列出了组成该项目工程所有的文件,项目工程窗中的个菜单项功能如下:File : 创建,保存或打开文件.可以打开以下文件:项目工程文件(*.Prj)源代码文件(*.c),头文件(*.h)以及用户接口文件(*.uir).Edit: 在项目工程中添加或移去文件.Build: 使用LabWindows/CVI 编译链接器.Run: 运行一个项目工程.Windows: 用来访问某个已经打开的窗,例如:用户接口编辑窗,源代码窗… .Tools: 运行向导(wizard)或者你添加到Tools菜单中的一些工具.Options: 设置LabWindows/CVI 的编程环境.Help: LabWindows/CVI 在线帮助及Windows SDK 的函数帮助.工程项目文件显示了所列文件的状态,其各项的含义如下图所示:文件名这个标志是指源代码最后修改该文件文件是否是打开的的日期时间S是指该文件已经修C是指运行该文件之O是指你可以让该文件I 是指这是一个改过了,请保存该文件前必须先经过编译编译而无需debugging 仪器驱动程序如果你想进一步了解项目工程窗(Project window)细节请使用在线帮助.请选择:Help>>CVI Library>>Related Help…Online Manuals For LabWindows/CVI请查阅LabWindows/CVI User Manual Chapter 3 Project window. 第二节用户接口编辑窗(User Interface Edit window)图形用户接口编辑窗是用来创建,编辑GUI(Graph Uer Interface)的.一个用户接口至少要有一个面板(Panel)以及在面板上的各种控件元素(Control Element).图形用户接口编辑窗为你提供了非常快捷的创建,编辑这些面板和控件元素的方法,可以让你在短时间里创建出符合你要求的图形界面.一个图形用户接口编辑窗就如下图所示,下面我们就详细讲讲图形用户接口编辑窗各菜单项的功能:File: 创建,保存或打开文件.Edit: 可用来编辑面板或控件元素.说明:其实我们直接用鼠标双击我们想要编辑对象即可(就象编制FisrtSample5 [资料1]LabWindows/CVI基础教程中修改面板和四个按扭那样).Creat: 可用来创建面板和各种控件元素.说明:其实我们只需在Panel上点击鼠标右键,便会弹出一个快捷菜单,选择你所想创建的对象即可(就象编制FisrtSample 时创建Graph和四个Button 那样). View: 当创建多个面板后就可用该项来查看想要看的面板.Arrange: 用来调节各个控件元素的位置与大小.Code: 产生源代码,以及选择你所需的事件消息类型.Run: 运行程序.Library: 函数库.说明:我们将在后面详细的介绍LabWindows/CVI的函数库. Tools: 一些你可使用的工具项.Windows: 用来访问某个已经打开的窗,例如:项目工程窗,用户接口编辑窗,源代码窗… .Options: 设置用接口编辑窗的编辑环境.Help: LabWindows/CVI 在线帮助及Windows SDK 的函数帮助.说明:在用户接口编辑窗中有一快捷菜单是非常有用的,当你把鼠标指在某一控件元素上点击右键后便弹出一快捷菜单,通过该菜单你可以生成回调函数以及查看回调函数,而无须你再切换到源代码窗后再查看.这是一个大家以后在编程中要常用到的技巧,请掌握.图形用户接口编辑窗中还有四个模式选择按扭,现介绍如下:当该按扭被按下后,你可以操作面板上的控件,同时在图形用户接口编辑窗的右上角上来观察面板上的事件消息.在这种模式下你可以创建,编辑面板和控件元素以及修改它们的属性. 在这种模式下你可以直接修改控件元素的名字,标签等文字相关方面的东西. 在这种模式下你可以直接修改面板,控件元素的颜色.先把鼠标方在你所想修改颜色的对象上,点击右键便会弹出一个选色对话框,选择你所想要的颜色后点击后即可. 在图形用户接口编辑窗中Panel 的灰色区域中单击鼠标右键,便会弹出一个快捷菜单如下所示:说明:请读者用鼠标点击各项自己看一看,在这里就无须作者多言.如果你想进一步了解用户接口编辑窗(User Interface Edit window)细节请使用在线帮助.请选择:Help>>CVI Library>>Related Help…Online Manuals For LabWindows/CVI请查阅LabWindows/CVI User Manual Chapter 4 User Interface Edit window源代码编辑窗(Sourse window)你可以在源代码编辑窗中开发你的C 语言代码文件.例如:添加,删除,插入函数等编程所需的基本编辑操作.但是LabWindows/CVI 又有其独特的简捷快速的开发,编辑工具,可以让你在短时间内完成一个较复杂的C程序代码的开发.一个源代码编辑窗(Source window)就如下图所示,下面我们就详细讲讲源代码编辑窗中各菜单项的功能:File: 创建,保存或打开文件.Edit: 可用来编辑源代码文件.View: 设置源代码编辑窗的风格等功能.Build: 编译文件以及编译设置.Run: 运行程序.Instrument: 装入仪器驱动程序.Library: 函数库.Tools: 一些你可使用的工具项.Windows: 用来访问某个已经打开的窗,例如:项目工程窗,用接口编辑窗,源代码窗… .Options: 设置用接口编辑窗的编辑环境.Help: LabWindows/CVI 在线帮助及Windows SDK 的函数帮助.说明:在编程中有一快捷菜单是非常有用的,当你把鼠标指在某一函数上点击右键后便弹出一快捷菜单,通过该菜单你可以查看回调函数以及与该函数对应控件元素.这是一个大家以后在编程中要常用到的技巧,请掌握.第四节函数面板(Fuction Panel)在LabWindows/CVI 编程环境下,当你想在源程序某处插入函数时,你只需从函数所在的库中选择该函数后便会弹出一个与之对应的函数面板,你所做的就是:填入该函数所需的参数后完成插入即可.而且更为方便的是:若参数是一你以有的常量或变量,你只需点击常量或变量工具按扭后选择你所需的量即可;若参数是一变量,你直接可声明该变量而无须再切换至源代码窗.下面我们就谈谈这些在LabWindows/CVI中可以加快你编程的技巧. 一个函数面板如下图所示:这是FirstSample中产生一个正弦波的函数其中SinePattern项是用来装正弦波的数组,我们在程序中使用数组Wave[512] 来装正弦波的.当我们在SinePattern项填入Wave后,由于Wave是一变量,所以我们需要声明该变量:让鼠标指在Wave上然后点击工具条中的声明变量按扭后, 便弹出一个声明变量对话框即可声明该变量为局域变量或为全局变量.作者:立士心 2005-10-4 15:29 回复此发言--------------------------------------------------------------------------------6 [资料1]LabWindows/CVI基础教程当你所填参数是一以有的常量或变量,你只需点击选择常量或变量工具按扭后选择你所需的量即可,下面就介绍该技巧:上图是FirstSample中把数组Wave中的正弦波画到Graph上去的PlotWaveform函数.其中,Control ID 项所填的是程序中用来标识GUI 中控件元素的常量,该常量是由LabWindows/CVI自动在头文件中预定义的(你可以打开头文件看看).故当我们填入该常量时只需将鼠标放在Control ID项的文本框中然后用鼠标点击工具条中的选择属性或UIR常量按扭后, 便弹出一个选择属性或UIR常量对话框,选择你所需的常量或属性即可.Panel Handle 是程序运行开始时UIR的句柄,是由LabWindows/CVI 自动生成的是一变量;Number of Points 项需填的是512,这正是我们在声明Wave时已用过的;Y Array 项所填的是我们已经声明过的变量——数组Wave;故当我们填入以上各项时只需将鼠标放在对应项下文本框中,然后用鼠标点击工具条中的选择变量按扭后, 便弹出一个选择变量对话框,选择你所需的变量Wave即可.当你填完函数的参数后,点击插入按扭后即可完成函数的插入,而无须再选择菜单中的插入命令.以上这些都是加快你编程的技巧,这些技巧你以后编程时是会非常频繁使用的.而这些也正是LabWindows/CVI 开发环境所独具的加快你编程速度的特色.说明:当你的鼠标落在工具条按扭上时,计算机会自动的显示该工具按扭的功能.请你使用上面所讲技巧重新编制FirstSample,我相信你将会有新的收获.当你对函数中的某个参数有不明白的时候,你只须将鼠标置于该项的文本框中点击鼠标右键后便会出现对此参数说明的在线帮助,这一技巧在编程中是非常有帮助的.如果你想进一步了函数面板(Function Panel )细节请使用在线帮助.请选择:Help>>CVI Library>>Related Help…Online Manuals For LabWindows/CVI请查阅LabWindows/CVI User Manual Chapter 6 Using Function Panels第四章LabWindows/CVI 的函数库(Library)LabWindows/CVI 其强大功能的所在就是基于其非常丰富的库函数.LabWindows/CVI 所提供的库函数从用户图形界面,数据采集,数据分析,仪器控制… 到现在Internet时代的TCP.所以说LabWindows/CVI 在测量领域成为先锋的同时又与当前时代的新科技保持了同步.下面我们就来谈谈LabWindows/CVI 的函数库,我们把LabWindows/CVI 的函数库分为了五个大的方面,各个方面又分成了不同的小类:·数据采集方面(Data Acquisition),7个库:Instrument Library: 仪器驱动库GPIB/GPIB 488.2 Library: 仪器控制函数库Data Acquisition Library: 数据采集函数库Easy I/O for DAQ : 易用的数据采集函数库RS 232 Library : RS 232 库VISA Library : VISA 库VXI Library : VXI库·数据分析方面,两个库:Formatting and I/O Library : 格式化以及输入输出库Analysis Library: 分析库或者Advanced Analysis Library: 高级分析库·数据显示方面:User Interface Library : 用户接口库说明: 用户接口库中提供了许多用于与面板上各种控件元素打交道的函数,通过这些函数你可以非常容易的把一个采集来的波形画到Panel 的Graph上或删除Graph 上已画的图形;得到Panel上某个控件元素的数值以及把某个数值写到Panel上的某个控件元素上去(亦就是改变该控件元素的值);修该Panel上控件元素的属性.总之,你只有熟练掌握了用户接口库函数后才能使你创建的用户图形界面正正的动起来,该库是初学者应迅速熟悉的库.·网络,通信与数据交换方面,四个库:DDE Library : 动态数据交换库TCP Library: TCP库Active X Automation Library: Active X自动化库DataSocket Library: DataSocket库·其它方面:ANSI C Library: 标准C 库如果你想进一步了解LabWindows/CVI 函数库(Library)细节请使用在线帮助.请选择:Help>>CVI Library>> Library Help中你感兴趣的库作者:立士心 2005-10-4 15:29 回复此发言-------------------------------------------------------------------------------- 7 [资料1]LabWindows/CVI基础教程通过本部分的学习,你是否已经掌握□LabWindows/CVI 程序设计步骤及程序的运行机制.三个主要窗的基本操作.在用户接口编辑窗中用快捷方式生成或查看回调函数,在源代码窗中用快捷方式返回到函数面板或对应控件元素等编程中所需的快捷操作.在函数面板上声明变量,选择变量或常量,插入函数等快捷操作.LabWindows/CVI 库的构成及其在编程中适用的方向.第四部分CVI 中数据采集的应用通过前两部分的学习,读者应该已掌握了LabWindows/CVI程序设计的基本步骤,思路以及编程环境.本部分将在前两部分的基础上讲解LabWindows/CVI中的数据采集,并在讲解的过程中编制一个程序:EeasyIOSample .请读者确保自己已经安装了Daq驱动,否则你会找不到例子中要用到的函数.Easy IO 库中数采函数的应用本章我们将使用Easy IO 库中的数采函数来编制一个真正能用于实际工作中的数据采集程序EasyIOSample.我们程序运行时的界面如下图所示:其中各控件元素的功能说明如下:ChannelSrting 项是一字符串控件,我们通过该项来设置采集数据的通道(数采路径).我们把该项缺省设置为:daq::1!(0)其意思是指:采集设备(device)1的0通道(channel).其中设备号正是你在Measurement &Automation 中所看到的对应于数采板的编号.在数采停止时,该项是可以修改的.daq::1!(0) 这段字符串是NI 数采通道的语法表示,具体说明如下: daq::1!(0,2,5) 是指采集设备1的通道0,2,5.daq::1!(2:6)是指采集设备1的通道2,3,4,5,6.ScanRate项是一数字控件,我们通过该项来设置扫描速率,其缺省设置为1000Acquire/Stop项是一开关控件,我们通过该开关来控制数据采集的开始与停止.Clear项是一按扭,当我们按下该按扭后即可清除Acquire Wave上所画的波形.Quit项是一按扭,当我们按下该按扭后,退出程序.Acquire Wave项是一波形显示控件,我们所采集的数据正是通过该控件来显示的.现在我们就开使创建该程序.首先按下面步骤起动CVI:开始>>程序>>National Instrument CVI>>CVI IDE或者直接从桌面起动CVI 的快捷方式,双击桌面National Instrument CVI 图标当LabWindows/CVI打开后你就会见到如下所示的项目(Project)窗,里面装的正是我们上次创建的FirstSample.prj:选择:File>>New>>Project(*.prj)…便会弹出一个对话框,如下所示:询问你是否移走当前的项目工程,点击OK按扭,确定移走后又会弹出一个对话框如下所示:询问你转移该项目的选项,全选之后点击OK按扭后,便会弹出一个新的项目工程窗.第一节创建图形用户界面从Project窗中选择:File>>New>>User Interface(*.uir)…创建一个用户图形接口文件(*.uir).下图就是本程序应该创建的UIR界面:请按下面步骤创建下列控件元素以及修改其属性:创建一个string ,修改其属性如下图所示:创建一个Numeric, 修改其属性如下图所示:创建一个BinarySwitch, 修改其属性如下图所示:创建一个Timer控件, 修改其属性如下图所示:请你确保Control Settings中Enable项前的矩形框是空的,因为我们将AI Timer的初始状态设置为非运行状态.说明:Timer控件是一我们在编程时常用到的控件,当程序运行时图形用户界面上是看不到Timer控件的.当你设置Timer有回调函数时,计算机会每隔固定的时间调用一次Timer的回调函数.该时间间隔你是可以在Edit Timer 窗中Contro Settings的Inteval(seconds)项中设定的.本程序设定时间间隔为0.1秒,也就是说:当程序运行时,每隔0.1 秒AITimerCallback( )函数就会被调用一次.创建一个Graph控件, 修改其属性如下图所示:创建两个Command控件, 修改它们属性分别如下两图所示:最后修改Panel的属性如下图所示:创建好各控件元素后,将它们按下图所示排放好各自的位置:说明:由于程序运行时,AI Timer 控件并不在界面中显示,故AI Timer 的位置你可以随作者:立士心 2005-10-4 15:29 回复此发言--------------------------------------------------------------------------------8 [资料1]LabWindows/CVI基础教程意放置.选择:File>>Save 保存UIR文件,命名为EasyIOSample.uir.第二节产生程序代码与添加函数代码从用户图形界面窗口中选择:Code>>Generate>>All Code…产生源程序框架.其源程序代码中需要你注意的如下:当某一行字符是蓝色时是指该行代码是需要我们添加上去的.为了作者讲解函数功用的方便,作者按照顺序把插入的函数编了号,标注在该函数的顶头.#include#include#include#include "EasyIOSample.h"static int panelHandle;static long AiTask;int main (int argc, char *argv[]){if (InitCVIRTE (0, argv, 0) == 0)return -1; /* out of memory */if ((panelHandle = LoadPanel (0, "EasyIOSample.uir", PANEL)) >User Interface>>Controls/Graph/Strip Chart>>General Functions>>Get Control Value.GetCtrlVal (panelHandle, PANEL_CHANNEL_STRING, ChanString) 使用该函数我们可以得到字符串ChannelString的值(请在该函数面板中声明局部字符串变量ChanString).插入该函数时请选择:Library>>User Interface>> Controls/Graph/Strip Chart>>General Functions>>Get Control Value.GetCtrlVal (panelHandle, PANEL_SCANRATE, &ScanRate) 使用该函数我们可以得到数字量ScanRate的值(请在该函数面板中声明局部双精度变量ScanRate).插入该函数时请选择:Library>>User Interface>> Controls/Graph/Strip Chart>>General Functions>>Get Control Value.nidaqAICreateTask (ChanString, kNidaqWaveformCapture, &NumChan, &AiTask) 使用该函数我们可以创建一个模入采样任务AITask(请在该函数面板中声明全局整型变量AITask), 同时该函数根据ChanString可以返回一个表示该采样任务共有多少个通道的值NumChan(请在该函数面板中声明局部整型变量NumChan).插入该函数时请选择:Library>>EasyIO For DAQ>>Analog Input >>Intermediate Analog Input>>AI Creat Task(Required).nidaqAIConfigScanClockRate (AiTask, ScanRate, &ActScanRate) 使用该函数我们可以设置采样的扫描速度ScanRate并且通过ActScanRate返回采样的实际扫描速度(请在该函数面板中声明局部双精度变量ActScanRate).插入该函数时请选择:Library>>EasyIO For DAQ>>Analog Input >>Intermediate Analog Input>>AI Config Timing…>>AI Config Scan Clock Rate…nidaqAIConfigBuffer (AiTask, 2000000, kNidaqContinuous) 使用该函数我们可以设置采样缓冲为2M(即2000000).插入该函数时请选择:Library>>EasyIO For DAQ>>Analog Input >>Intermediate Analog Input>>AI Config Buffer…nidaqAIStart(AiTask)使用该函数我们可以启动数据采集任务.插入该函数时请选择:Library>>EasyIO For DAQ>>Analog Input >>Intermediate Analog Input>>AI Start (Required)…SetCtrlAttribute (panelHandle, PANEL_TIMER, ATTR_ENABLED, 1) 我们在UIR 中将AI Timer的属性设置为非运行状态,现在通过该函数将AI Timer 属性设置为Enable 即从现在开始AI Timer 开始运行,每隔固定的时间间隔调用一次AITimerCallBack( )函数.插入该函数时请选择:Library>>User Interface>> Controls/Graph/Strip Chart>>General Functions>>Set Control Attribute...SetCtrlAttribute (panelHandle, PANEL_TIMER, ATTR_ENABLED, 0) 使用该函数我们可以让控件AI Timer停止工作.插入该函数时请选择:Library>>User Interface>> Controls/Graph/Strip Chart>>General Functions>>Set Control Attribute...nidaqAIStop (AiTask) 使用该函数我们可以停止采样任务.插入该函数时请选择:Library>>EasyIO For DAQ>>Analog Input >>Intermediate Analog Input>>AI Stop (Required)…nidaqAIDestroyTask (AiTask) 使用该函数我们可以取消采样任务.插入该函数时请选择:Library>>EasyIO For DAQ>>Analog Input >>Intermediate Analog Input>>AI Destroy Task(Required)…作者:立士心 2005-10-4 15:29 回复此发言--------------------------------------------------------------------------------9 [资料1]LabWindows/CVI基础教程DeleteGraphPlot(panelHandle,PANEL_GRAPH,-1,VAL_IMMEDIATE_DRAW)使用该函数我们可以清除Graph控件上所画的图形.插入该函数时请选择:Library>>User Interface>>Control/Graph/Strip Chart>>Graph and Strip Chart>>Graph Plotting and Deleting>>Delete Graph Plot…nidaqAICheck (AiTask, &AcqState, &AcqBacklog)使用该函数我们通过返回AcqState参数的值可得知采样过程的状态;通过返回AcqBacklog参数的值可得知所采样以放在缓冲中的有多少个点我们未读取(请在该函数面板中声明局部长整型变量AcqState与AcqBacklog).插入该函数时请选择:Library>>EasyIO For DAQ>>Analog Input >>Intermediate Analog Input>>AI Destroy Task(Required)…nidaqAIRead (AiTask, ChanString, AcqBacklog, -1.0, AcqData) 使用该函数我们可以将缓冲中未读的数据读到数组AcqData中(请在该函数面板中声明局部双精度数组变量AcqData[10000]).插入该函数时请选择:Library>>EasyIO For DAQ>>Analog Input >>Intermediate Analog Input>>AI Read (Required)…DeleteGraphPlot(panelHandle,PANEL_GRAPH,-1,VAL_IMMEDIATE_DRAW)使用该函数我们可以清除Graph控件上所画的图形.插入该函数时请选择:Library>>User Interface>>Control/Graph/Strip Chart>>Graph and Strip Chart>>Graph Plotting and Deleting>>Delete Graph Plot…PlotWaveform(panelHandle,PANEL_GRAPH,AcqData,AcqBacklog,VA L_DOUBLE, 1.0, 0.0, 0.0, 1.0, VAL_THIN_LINE, VAL_EMPTY_SQUARE, VAL_SOLID, 1, VAL_RED) 使用该函数我们可以将读到数组AcqData中的数据(AcqBacklog个数据)画到控件Graph 上.插入该函数时请选择:Library>>UserInterface>>Control/Graph/Strip Chart>>Graph and Strip Chart>>Graph Plotting and Deleting>>Plot Waveform ..下面我们将仔细讲解当Acquire/Stop开关被扳上(下)去后程序的运行过程.程序流程图如下:GetCtrlVal (panelHandle, PANEL_ACQUIRE, &Value)// 得到Acquire/Stop二进制开关的值Value= 0 SetCtrlAttribute ( )Value // 让AITimer 停止工作=1GetCtrlVal (panelHandle, PANEL_CHANNEL_STRING, ChanString) // 从UIR上字符串控件ChannelString得到采样通道设置GetCtrlVal (panelHandle, PANEL_SCANRATE, &ScanRate)// 从UIR上数字量控件ScanRate得到采样扫描速率设置nidaqAICreateTask ( ) // 创建采样任务nidaqAIConfigScanClockRate ( ) // 设置扫描速率nidaqAIConfigBuffer ( ) // 设置缓冲区大小nidaqAIStart( ) // 采样任务开始SetCtrlAttribute ( ) // 让AITimer 开始工作注意:让AITimer开始工作其实也就是每隔一定的时间间隔调用一次AITimerCallback( )函数每隔0.1秒AITimerCallback( ){nidaqAICheck ( ) // 检查采样过程中缓冲的状态nidaqAIRead ( ) // 从缓冲中读取数据DeleteGraphPlot( ) // 先清除Graph上已有的图形PlotWaveform( ) // 把从缓冲中读到的数据画到Graph上}AITimer 是No否停止工作YesnidaqAIStop ( ) // 停止采样任务nidaqAIDestroyTask ( ) // 取消采样任务到此为止我们已经完成本章的学习,有些内容需要读者反复研读以理解LabWindows/CVI在数据采集中的应用,该程序亦可作为读者进一步学习LabWindows/CVI的敲门砖.通过本部分的学习,你是否已经掌握□ LabWindows/CVI 中数采程序设计步骤及程序的运行机制.巩固在用户接口编辑窗中用快捷方式生成或查看回调函数,在源代码窗中用快捷方式返回到函数面板或对应控件元素等编程中所需的快捷操作.巩固在函数面板上声明变量,选择变量或常量,插入函数等快捷操作.后记通过对本书的学习,相信读者已经基本掌握了LabWindows/CVI编程基本操作.希望读者在初学时一定要注意程序设计的思想,而不必要过多的去抠一些细节问题.下面谈谈如何进一步学习与使用LabWindows/CVI的一些捷径.在LabWindows/CVI安装目录下的Samples文件夹下有非常多的例程,请读者选择自己感兴趣类别的例子打开后看看,并且读者在开发项目时直接将这些例子中的一些程序拷贝到自己的程序中去.这样做,不但能减少开发时间并且减少程序的出错机率,这是一项实在值得读者注意的技巧.怎么看懂例程当读者打开一个例子后,通过查看控件对应回调函数,返回函数对应的函数面板以及查看函数参数在线帮助,你就可以通过这些方法看懂例程.从而即可以学习函数的使用也能够明白编制某类别程序的基本思想.下面所列的是在使用LabWindows/CVI开发程序时值得一看的书目:bWindows/CVI在线帮助中CVI Library>>Online Manuals For LabWindows/CVI 中的一些程序设计参考书.2 .读者若装有NI公司的数采卡,则在装DAQ驱动后读者会在在开始>>程序>>National Instruments DAQ>>Documents中找到下面这本书:NI-DAQ User Manual for PC Compatibles 该书详细得介绍了怎样使用DAQ函数,实在是值得一读的一本书.。
LabwindowsCVI学习技巧与资料

LabwindowsCVI学习技巧与资料测控软件一般包括:用户界面、程序控制、数据采集和数据分析4部分。
CVI文件一般包括:工程文件(Pr)、源文件(.C)、头文件(h)和用户界面文件(.uir).Labwindows技巧学习必看(摘录)CVICVI是基于ANSI C的快速开发环境,适用于有C,C++基础。
使用VB,VC,BC运用控件式组织用户界面的工程师Build--Target Type--Dynamic Link LibraryCVI 是事件驱动式的运行方法,排除响应各个事件,造成显示滞后。
需要强制在函数中加入“Process system event()CVI对多线程的支持(1)概念篇每个进程至少有一人上基本线程(主线程)线程与数据一起隔离在某一物理区域,在进程中声明的数据可通过该线程进行访问。
如何实现CVI窗体的全屏?GetMonitorFromPanel(Main,&montior);//获得显示器IDGetMonitorAttribute(monitor,ATTR_HEIGHT,&height);//得到高度GetMonitorAttribute(monitor,ATTR)WIDTH,&width);//得到宽度SetPanelSize(Main,height-25,width);//设置窗口高宽度(高度需要去除任务栏的部分)SetPanelPos(Main,25,0);//设置窗口位置如何在LABWINDOWS中调用MATLAB程序?CVI和Matlab混合编程,必须要行安装Matlab在CVI中,建立ActiveX控制服务器,选择MatlabAutomatin Server type Library(Matlab必须在CVI之前安装才能看到这个选项),创建后将生成三个文件,XXX.FPxxx.C和XXX.h,将.C和.H文件包含在CVI工程中就可以了。
.C文件中包含着CVI和 Matlab的接口函数。
labwindowscvi实例

labwindowscvi实例LabWindows/CVI是一款适合工程师和科学家开发数据采集、控制和分析应用的视窗程序编程环境。
它提供了高效的开发工具和广泛的函数库,让用户可以快速开发出高质量的应用程序。
在本文中,我们将介绍LabWindows/CVI的一些常见功能和实例。
希望本文能够帮助初学者更好地理解和学习这款软件。
LabWindows/CVI的环境LabWindows/CVI是一个Windows环境下的程序,它提供了一个类似于C语言的集成开发环境。
用户可以使用它来创建GUI应用、控制器和数据采集应用。
用户也可以使用它来运行时的调试和测试等操作。
创建GUI应用1. 创建一个新项目:选择文件、新拉,选中创建一个新的项目。
在创建新项目的对话框中,选择GUI应用程序,并指定项目名称和所需的其他信息。
2. 设计应用程序界面:在LabWindows/CVI中开发GUI应用程序时通常使用模板来加速开发。
模板包括经典的样板应用程序、菜单、对话框、工具栏等。
3. 添加控件:将各种工具添加到在步骤2中创建的界面中。
在LabWindows/CVI中,可以使用Ctrl和Shift键选择一个或多个控件或元素。
4. 定义控件属性:对于每个添加的控件,您需要定义它的属性。
例如,如果您添加一个按钮,则需要定义它的外观、行为和代码。
您可以通过代码或LabWindows/CVI屏幕上的属性列表来定义这些属性。
5. 添加源码:在定义应用程序界面和控件之后,您需要添加与应用程序功能相关联的代码。
LabWindows/CVI使用C语言进行编程。
这是一个简单的实例,它创建了一个命令窗口并显示一条“Hello, World!”消息:```c#include <cvirte.h> // 使用CVI运行时引擎库#include <userint.h> // 使用C编写图形窗口用户界面if (InitCVIRTE (0, argv, 0) == 0) // 加载CVI引擎return -1;// 创建一个新的用户界面窗口panelHandle = LoadPanel (0, "example.uir", 1, PANEL);// 将消息更新到文本框对象SetCtrlVal (panelHandle, PANEL_TEXTBOX, message);// 显示窗口DisplayPanel (panelHandle);// 退出程序RunUserInterface ();// 释放资源DiscardPanel (panelHandle);return 0;}```数据采集应用在数据采集应用中,可以使用设备接口板或直接与计算机的串行或USB接口通信。
@+labwindows+cvi测试技术及工程应用 2-1

LabWindowsCVI基础教程

序言LabWindows/CVI是National Instruments公司推出的一套面向测控领域的软件开发平台.它以ANSI C为核心,将功能强大,使用灵活的C语言平台与数据采集,分析和表达的测控专业工具有机地接和起来.它的集成化开发平台,交互式编程方法,丰富的控件和库函数大大增强了C 语言的功能,为熟悉C语言的开发人员建立检测系统,自动测量环境,数据采集系统,过程监控系统等提供了一个理想的软件开发环境.本教程面向的是那些从未使用过LabWindows/CVI的读者,但是假设读者以有了C语言的基础并且熟悉Windows 2000/9x/NT操作系统.在每一章节的学习中,作者都是通过一个具体的实例让读者迅速的掌握本章的知识点;而不是长篇大论,述及边枝细叶,反而使读者望而却步,只见树木,不见森林.想信通过对本教程的学习,读者可迅速掌握LabWindows/CVI编程思想及步骤,为读者日后进一步学习打下基础.本书约定:"File>>Page Setup>>Options"File 这一种黑色斜体字是指多级菜单名,按扭名,窗口名或者是关键性词汇.">>"是指打开一个多级菜单或对话框.如:File>>Page Setup>>Options是指你首先打开File 菜单,然后选择Page Setup项,最后从弹出的对话框中选择Options项."说明:通过这种方式你可以修改Panel 顶端所显示的名字."该种字体所写的文字是值得读者注意并记忆的内容." "该椭圆形框所框住的内容是读者需修改的地方.第一部分 CVI快速入门本部分通过编制一个简单的LabWindows/CVI程序,使读者对CVI编程环境,思想及步骤有一初步的认识.第一章初步认识CVI程序设计——从一个例子开始我们的第一个示例将很简单,我们所要做的是创建一个如下的图形用户界面(User Interface). 当我们按下Acquire按扭,计算机会自动产生一个正弦波形并画在图形显示区中;当按下Clear 按扭后则清除正弦波形;当按下Quit按扭后退出该程序.现在我们就开使创建该程序.首先按下面步骤起动CVI:开始>>程序>>National Instrument CVI>>CVI IDE或者直接从桌面起动CVI 的快捷方式,双击桌面National Instrument CVI 图标当LabWindows/CVI打开后你就会见到如下所示的一个空的项目(Project)窗:第一步:创建用户界面创建控件元素:从Project窗中选择:File>>New>>User Interface(*.uir)…创建一个用户接口文件(*.uir),CVI会自动弹出如下所示的窗口:在该窗中Untitled Panel 的灰色区域中单击鼠标右键,变会弹出一个快捷菜单如下所示:从该菜单中选择:Command Button>>Square Command Button点击左键后便会创建一个方形的按扭.由于本程序总共需要三个按扭,所以按照上面的步骤再创建两个方形按扭.从该菜单中选择:Graph>>Graph ,创建一个用于图形显示的Graph.现在我们已经建好了用户界面所需的控件元素,请使用鼠标把它们拖到如下图所示的位置. 修改用户界面中各控件元素的属性:修改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 应如下图所示:点击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是程序中用来标识该控件元素的常量,在后面的编程中会用到.将Callback Function项改为AcquireCallback说明:Callback Function(回调函数)是程序中用来响应界面中的Windows消息,也就是说:当该按扭被点击之后,程序会调用AcquireCallback函数来作为对按扭被按下这一消息的响应.将Label项改为 Acquire说明:通过这种方法可以修改按扭名字,Acquire中A字母前有下画线,是指可以通过 Alt + A即可达到按下该按扭的效果(即热键).修改后的Edit Command Button窗应如下图所示:点击OK按扭,完成对Command Button属性的修改.(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项改为QuitCallbackc. 将Label项改为 Quit修改后的Edit Command Button窗应如下图所示:点击OK按扭,完成Command Button属性的修改.当完成以上工作后,Panel应该如下图所示:选择:File>>Save 保存UIR文件,命名为FirstSample.uir.到目前为止我们已经完成了用户界面(user interface)的设计,当程序运行时所显示的界面就是我们刚才上图看到的那样.下面我们要做的就是真正的程序编制工作,其实CVI可以自动生成许多的代码以及缺省消息的处理函数,你只需添加一些你自己所需的一些代码.第二步:完成程序的编制产生程序代码:现在请你让图形用户界面窗口为当前响应状态,如下图所示:从用户图形界面窗口中选择:Code>>Generate>>All Code…然后会显示出如下的界面:请用你的鼠标点击Select QuituserInterface 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 QuituserInterface Callback 项是指你选择那一个函数作为退出程序的终止函数.本程序是让QuitCallback作为退出函数的.点击OK按扭,便会弹出如下图所示的源代码(Code)窗:其窗中的程序代码如下所示:#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…在弹出的对话框中选择:Signal Generation>>Sine Pattern便会弹出如下图所示的一个函数面板:请在Number of Elements项中填上512;把Number of Cycles 项改为3;Sine Pattern 项中填上用来装正弦信号的数组Wave,由于Wave是一个数组变量,故我门需要声明该变量:选择Code>>Declare Variable会弹出一个如下图所示的对话框:请在Number of Elements 项中填上512,并选择了最下面的矩形框,然后点击OK按扭完成.返回到函数面板后,选择Code>>Insert Function Call完成函数的插入,这时Code 窗中的AcquireCallback( )函数应如下所示:int CVICALLBACK AcquireCallback (int panel, int control, int event,void *callbackData, int eventData1, int eventData2){double Wave[512];switch (event){case EVENT_COMMIT:SinePattern (512, 1.0, 0.0, 3.0, Wave);|break;}return 0;}我们已经的得到了正弦信号,现在需要将该信号画到Graph上去:1).请将鼠标放在SinePattern( )函数下面的空白行上,如上面所示那样.. 请选择:Library>>User Interface在弹出的对话框中选择:Controls/Graph/Strip Chart>>Graph and Strip Chart>>Graph Plotting and Deleting>>Plot Wavefo rm把函数面板中的对应各项填写成如下所示:PanelHandle: panelHandeleControl ID : PANEL_GRAPHY Array: WaveNumber of Points: 512选择Code>>Insert Function Call完成函数的插入,这时Code 窗中的AcquireCallback( )函数应如下所示:CVICALLBACK AcquireCallback (int panel, int control, int event,void *callbackData, int eventData1, int eventData2){double Wave[512];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, V AL_THIN_LINE, V AL_EMPTY_SQUARE,V AL_SOLID, 1, V AL_RED);break;}return 0;到现在为止我们已经完成了AcquireCallback( )函数的的程序代码.添加ClearCallback( )函数的程序代码:ClearCallback( )函数完成以下功能:当Clear按扭按下后,计算机会清除Graph上所画的正弦图形.现在请将鼠标放在ClearCallback( )函数Event_Commit:下面的空白行上,如下图所示:请选择:Library>>User Interface在弹出的对话框中选择:Control/Graph/Strip Chart>>Graph and Strip Chart>>Graph Plotting and Deleting>>Delete Graph Plot把函数面板中的对应各项填写成如下所示:PanelHandle: panelHandeleControl ID : PANEL_GRAPHPlotHandle: -1选择Code>>Insert Function Call完成函数的插入,这时Code 窗中的ClearCallback( )函数应如下所示: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, V AL_IMMEDIATE_DRAW);break;}return 0;}到目前为止我们已经完成了程序的编制任务.这一个看起来不算简单的程序,我们编起来并没有写多少源代码,这正是体现了LabWindows/CVI的强大功能所在.第四步运行程序完成项目文件现在请你让源代码(Code)窗为当前响应状态,选择:Run>>Debug FirstSample_dbg.exe便会弹出一个对话框,询问你是否在编译前为该文件命名并添加到工程文件中去.点击yes按扭,把该文件命名为FirstSample.c.然后计算机询问你是否把 "analysis.h"包含到FirstSample.c 中去(因为,我们的程序中用到了高级分析库),点击yes按扭,同意该选项.运行后的程序正如我们预期要求的那样.退出程序后,从源代码(Code)窗中选择: Window>>Project现在项目 (Project)窗为当前响应状态,请选择:Edit>>Add Files to Project…>>All Files(*.*)便会弹出如下图所示的对话框:请你按住键,点击FirstSample.h ,FirstSample.c ,FirstSample.uir.然后点击Add按扭把这些文件方到Selected Files框中.点击OK按扭,把以上文件添加到工程文件中去.至此为止我们已经完成了第一个程序的编制工作,想必大家对LabWindows/CVI编程已经有了一个初步的了解,头脑里已建起程序编制的基本框架.通过本部分的学习,你是否已经掌握LabWindows/CVI 程序编制的基本步骤.简单的用户图形界面(*.uir)的创建.能使用函数面板完成函数的插入,构建源代码程序.项目工程文件的基本构成.第二部分 CVI环境下程序设计通过编制第一章的FirstSample程序,读者已对LabWindows/CVI编程有一定了解.本部分就是在第一部分的基础上进一步讲述LabWindows/CVI程序设计及其编程环境等细节问题.这一章所讲内容请大家都务必动手实际操作一下,只有这样才能使你真正的掌握本章的内容.看完本章后请大家结合第一章把FirstSample重新编制一遍,以巩固本章所讲的加速LabWindows/CVI编程的技巧.第二章 LabWindows/CVI 程序剖析通过例程FirstSample的编制,大家已对LabWindows/CVI编程有了初步的认识.本章是作者从总体上来谈谈自己对LabWindows/CVI程序的理解与认识.LabWindos/CVI 编程的步骤基本如下:制定程序设计的基本方案第一步根据任务确定程序的基本框架如:程序界面,程序中所需的函数等.创建用户图形界面第二步根据第一步制定的方案创建用户图形界面及回调函数名.程序源代码的编制第三步让计算机生成程序代码及回调函数的基本框架.添加函数代码,完成源代码的编制工作.工程项目的完成第四步编译,调试程序.把头文件,用户图形界面文件,源代码文件添加到项目文件中去,完成整个程序的编制程序框架及文件间的相互关系如下图所示(以FirstSample.prj为例):项目工程文件(FirstSample.prj)用户图形界面文件源代码文件头文件(FirstSample.uir) (FirstSample.c) (FirstSample.h)panel include "FirstSample.h" 定义了程序中所需的常事件消息量以及函数原形.Acquire按扭 AcquireCallback( )事件消息 Wave[512]Clear按扭 ClearCallback( )事件消息Quit按扭 QuitCallback( )ShowWave上图所画的构成一项目工程文件的各文件之间的关系是非常重要的.如果你能理解上图所示的内容,那么你就基本理解了LabWindos/CVI 程序的运作过程.请读者仔细阅读以上内容并理解,这些都有助于读者从整体上去把握LabWindows/CVI 程序设计的核心思想,有益于读者进一步学习LabWindows/CVI.第三章 LabWindows/CVI 编程环境LabWindows/CVI开发环境有以下三个最主要的窗(window)与函数面板(Function Panel): ·项目工程窗(Project Window)·用户接口编辑窗(User Interface Editor window)·源代码窗(Source window)下面就会对以上三个窗及函数面板作详细的介绍.项目工程窗(Project Window)一个项目工程窗(Project Window)如下图所示:在项目工程窗中列出了组成该项目工程所有的文件,项目工程窗中的个菜单项功能如下: File : 创建,保存或打开文件.可以打开以下文件:项目工程文件(*.Prj)源代码文件(*.c),头文件(*.h)以及用户接口文件(*.uir).Edit: 在项目工程中添加或移去文件.Build: 使用LabWindows/CVI 编译链接器.Run: 运行一个项目工程.Windows: 用来访问某个已经打开的窗,例如:用户接口编辑窗,源代码窗… .Tools: 运行向导(wizard)或者你添加到Tools菜单中的一些工具.Options: 设置LabWindows/CVI 的编程环境.Help: LabWindows/CVI 在线帮助及Windows SDK 的函数帮助.工程项目文件显示了所列文件的状态,其各项的含义如下图所示:文件名这个标志是指源代码最后修改该文件文件是否是打开的的日期时间S是指该文件已经修 C是指运行该文件之 O是指你可以让该文件 I是指这是一个改过了,请保存该文件前必须先经过编译编译而无需debugging 仪器驱动程序如果你想进一步了解项目工程窗(Project window)细节请使用在线帮助.请选择:Help>>CVI Library>>Related Help…Online Manuals For LabWindows/CVI请查阅 LabWindows/CVI User Manual Chapter 3 Project window.第二节用户接口编辑窗(User Interface Edit window)图形用户接口编辑窗是用来创建,编辑GUI(Graph Uer Interface)的.一个用户接口至少要有一个面板(Panel)以及在面板上的各种控件元素(Control Element).图形用户接口编辑窗为你提供了非常快捷的创建,编辑这些面板和控件元素的方法,可以让你在短时间里创建出符合你要求的图形界面.一个图形用户接口编辑窗就如下图所示,下面我们就详细讲讲图形用户接口编辑窗各菜单项的功能:File: 创建,保存或打开文件.Edit: 可用来编辑面板或控件元素.说明:其实我们直接用鼠标双击我们想要编辑对象即可(就象编制FisrtSample中修改面板和四个按扭那样).Creat: 可用来创建面板和各种控件元素.说明:其实我们只需在 Panel上点击鼠标右键,便会弹出一个快捷菜单,选择你所想创建的对象即可(就象编制FisrtSample 时创建Graph和四个Button那样).View: 当创建多个面板后就可用该项来查看想要看的面板.Arrange: 用来调节各个控件元素的位置与大小.Code: 产生源代码,以及选择你所需的事件消息类型.Run: 运行程序.Library: 函数库.说明:我们将在后面详细的介绍LabWindows/CVI的函数库.Tools: 一些你可使用的工具项.Windows: 用来访问某个已经打开的窗,例如:项目工程窗,用户接口编辑窗,源代码窗… .Options: 设置用接口编辑窗的编辑环境.Help: LabWindows/CVI 在线帮助及Windows SDK 的函数帮助.说明:在用户接口编辑窗中有一快捷菜单是非常有用的,当你把鼠标指在某一控件元素上点击右键后便弹出一快捷菜单,通过该菜单你可以生成回调函数以及查看回调函数,而无须你再切换到源代码窗后再查看.这是一个大家以后在编程中要常用到的技巧,请掌握.图形用户接口编辑窗中还有四个模式选择按扭,现介绍如下:当该按扭被按下后,你可以操作面板上的控件,同时在图形用户接口编辑窗的右上角上来观察面板上的事件消息.在这种模式下你可以创建,编辑面板和控件元素以及修改它们的属性.在这种模式下你可以直接修改控件元素的名字,标签等文字相关方面的东西.在这种模式下你可以直接修改面板,控件元素的颜色.先把鼠标方在你所想修改颜色的对象上,点击右键便会弹出一个选色对话框,选择你所想要的颜色后点击后即可.在图形用户接口编辑窗中Panel 的灰色区域中单击鼠标右键,便会弹出一个快捷菜单如下所示:说明:请读者用鼠标点击各项自己看一看,在这里就无须作者多言.如果你想进一步了解用户接口编辑窗(User Interface Edit window)细节请使用在线帮助.请选择:Help>>CVI Library>>Related Help…Online Manuals For LabWindows/CVI请查阅 LabWindows/CVI User Manual Chapter 4 User Interface Edit window源代码编辑窗(Sourse window)你可以在源代码编辑窗中开发你的C 语言代码文件.例如:添加,删除,插入函数等编程所需的基本编辑操作.但是LabWindows/CVI 又有其独特的简捷快速的开发,编辑工具,可以让你在短时间内完成一个较复杂的C程序代码的开发.一个源代码编辑窗(Source window)就如下图所示,下面我们就详细讲讲源代码编辑窗中各菜单项的功能:File: 创建,保存或打开文件.Edit: 可用来编辑源代码文件.View: 设置源代码编辑窗的风格等功能.Build: 编译文件以及编译设置.Run: 运行程序.Instrument: 装入仪器驱动程序.Library: 函数库.Tools: 一些你可使用的工具项.Windows: 用来访问某个已经打开的窗,例如:项目工程窗,用接口编辑窗,源代码窗… .Options: 设置用接口编辑窗的编辑环境.Help: LabWindows/CVI 在线帮助及Windows SDK 的函数帮助.说明:在编程中有一快捷菜单是非常有用的,当你把鼠标指在某一函数上点击右键后便弹出一快捷菜单,通过该菜单你可以查看回调函数以及与该函数对应控件元素.这是一个大家以后在编程中要常用到的技巧,请掌握.第四节函数面板(Fuction Panel)在LabWindows/CVI 编程环境下,当你想在源程序某处插入函数时,你只需从函数所在的库中选择该函数后便会弹出一个与之对应的函数面板,你所做的就是:填入该函数所需的参数后完成插入即可.而且更为方便的是:若参数是一你以有的常量或变量,你只需点击常量或变量工具按扭后选择你所需的量即可;若参数是一变量,你直接可声明该变量而无须再切换至源代码窗.下面我们就谈谈这些在LabWindows/CVI中可以加快你编程的技巧.一个函数面板如下图所示:这是FirstSample中产生一个正弦波的函数其中SinePattern项是用来装正弦波的数组,我们在程序中使用数组Wave[512] 来装正弦波的.当我们在SinePattern项填入Wave后,由于Wave 是一变量,所以我们需要声明该变量:让鼠标指在Wave上然后点击工具条中的声明变量按扭后, 便弹出一个声明变量对话框即可声明该变量为局域变量或为全局变量.当你所填参数是一以有的常量或变量,你只需点击选择常量或变量工具按扭后选择你所需的量即可,下面就介绍该技巧:上图是FirstSample中把数组Wave中的正弦波画到Graph上去的PlotWaveform函数.其中,Control ID 项所填的是程序中用来标识GUI中控件元素的常量,该常量是由LabWindows/CVI自动在头文件中预定义的(你可以打开头文件看看).故当我们填入该常量时只需将鼠标放在Control ID项的文本框中然后用鼠标点击工具条中的选择属性或UIR常量按扭后, 便弹出一个选择属性或UIR常量对话框,选择你所需的常量或属性即可.Panel Handle 是程序运行开始时UIR的句柄,是由LabWindows/CVI 自动生成的是一变量;Number of Points 项需填的是512,这正是我们在声明Wave时已用过的;Y Array 项所填的是我们已经声明过的变量——数组Wave;故当我们填入以上各项时只需将鼠标放在对应项下文本框中,然后用鼠标点击工具条中的选择变量按扭后, 便弹出一个选择变量对话框,选择你所需的变量Wave即可.当你填完函数的参数后,点击插入按扭后即可完成函数的插入,而无须再选择菜单中的插入命令.以上这些都是加快你编程的技巧,这些技巧你以后编程时是会非常频繁使用的.而这些也正是LabWindows/CVI 开发环境所独具的加快你编程速度的特色.说明:当你的鼠标落在工具条按扭上时,计算机会自动的显示该工具按扭的功能.请你使用上面所讲技巧重新编制FirstSample,我相信你将会有新的收获.当你对函数中的某个参数有不明白的时候,你只须将鼠标置于该项的文本框中点击鼠标右键后便会出现对此参数说明的在线帮助,这一技巧在编程中是非常有帮助的.如果你想进一步了函数面板(Function Panel )细节请使用在线帮助.请选择:Help>>CVI Library>>Related Help…Online Manuals For LabWindows/CVI请查阅 LabWindows/CVI User Manual Chapter 6 Using Function Panels第四章 LabWindows/CVI 的函数库(Library)LabWindows/CVI 其强大功能的所在就是基于其非常丰富的库函数.LabWindows/CVI 所提供的库函数从用户图形界面,数据采集,数据分析,仪器控制…到现在Internet时代的TCP.所以说LabWindows/CVI 在测量领域成为先锋的同时又与当前时代的新科技保持了同步.下面我们就来谈谈LabWindows/CVI 的函数库,我们把LabWindows/CVI 的函数库分为了五个大的方面,各个方面又分成了不同的小类:·数据采集方面(Data Acquisition),7个库:Instrument Library: 仪器驱动库GPIB/GPIB 488.2 Library: 仪器控制函数库Data Acquisition Library: 数据采集函数库Easy I/O for DAQ : 易用的数据采集函数库RS 232 Library : RS 232 库VISA Library : VISA 库VXI Library : VXI库·数据分析方面,两个库:Formatting and I/O Library : 格式化以及输入输出库Analysis Library: 分析库或者Advanced Analysis Library: 高级分析库·数据显示方面:User Interface Library : 用户接口库说明: 用户接口库中提供了许多用于与面板上各种控件元素打交道的函数,通过这些函数你可以非常容易的把一个采集来的波形画到Panel 的Graph上或删除Graph 上已画的图形;得到Panel上某个控件元素的数值以及把某个数值写到Panel上的某个控件元素上去(亦就是改变该控件元素的值);修该Panel上控件元素的属性.总之,你只有熟练掌握了用户接口库函数后才能使你创建的用户图形界面正正的动起来,该库是初学者应迅速熟悉的库.·网络,通信与数据交换方面,四个库:DDE Library : 动态数据交换库TCP Library: TCP库Active X Automation Library: Active X自动化库DataSocket Library: DataSocket库·其它方面:ANSI C Library: 标准C 库如果你想进一步了解LabWindows/CVI 函数库(Library)细节请使用在线帮助.请选择:Help>>CVI Library>> Library Help中你感兴趣的库通过本部分的学习,你是否已经掌握□LabWindows/CVI程序设计步骤及程序的运行机制.三个主要窗的基本操作.在用户接口编辑窗中用快捷方式生成或查看回调函数,在源代码窗中用快捷方式返回到函数面板或对应控件元素等编程中所需的快捷操作.在函数面板上声明变量,选择变量或常量,插入函数等快捷操作.LabWindows/CVI 库的构成及其在编程中适用的方向.第四部分 CVI 中数据采集的应用通过前两部分的学习,读者应该已掌握了LabWindows/CVI程序设计的基本步骤,思路以及编程环境.本部分将在前两部分的基础上讲解LabWindows/CVI中的数据采集,并在讲解的过程中编制一个程序:EeasyIOSample .请读者确保自己已经安装了Daq驱动,否则你会找不到例子中要用到的函数.Easy IO 库中数采函数的应用本章我们将使用Easy IO 库中的数采函数来编制一个真正能用于实际工作中的数据采集程序 EasyIOSample.我们程序运行时的界面如下图所示:其中各控件元素的功能说明如下:ChannelSrting 项是一字符串控件,我们通过该项来设置采集数据的通道(数采路径).我们把该项缺省设置为:daq::1!(0)其意思是指:采集设备(device)1的0通道(channel).其中设备号正是你在Measurement &Automation 中所看到的对应于数采板的编号.在数采停止时,该项是可以修改的.daq::1!(0) 这段字符串是NI 数采通道的语法表示,具体说明如下: daq::1!(0,2,5) 是指采集设备1的通道0,2,5.daq::1!(2:6)是指采集设备1的通道2,3,4,5,6.ScanRate项是一数字控件,我们通过该项来设置扫描速率,其缺省设置为1000Acquire/Stop项是一开关控件,我们通过该开关来控制数据采集的开始与停止.Clear项是一按扭,当我们按下该按扭后即可清除Acquire Wave上所画的波形.Quit项是一按扭,当我们按下该按扭后,退出程序.Acquire Wave项是一波形显示控件,我们所采集的数据正是通过该控件来显示的.现在我们就开使创建该程序.首先按下面步骤起动CVI:开始>>程序>>National Instrument CVI>>CVI IDE或者直接从桌面起动CVI 的快捷方式,双击桌面National Instrument CVI 图标当LabWindows/CVI打开后你就会见到如下所示的项目(Project)窗,里面装的正是我们上次创建的FirstSample.prj:选择:File>>New>>Project(*.prj)…便会弹出一个对话框,如下所示:询问你是否移走当前的项目工程,点击OK按扭,确定移走后又会弹出一个对话框如下所示:。
LabWindowsCVI库函数的使用

LabWindows/CVI库函数的使用一、实验目的1、进一步熟悉CVI的集成开发环境2、进一步学习仪器面板中控键的使用3、学习CVI库函数使用方法4、学习用CVI库函数进行频谱分析的步骤二、实验内容1、编写一个波形显示程序,要求根据输入的幅值和周期数显示正弦波;根据输入的幅值和占空比显示方波。
2、制作一个简单仪器面板:要求有两个图形控件,用来显示图形;四个数字控件,分别用来输入正弦波幅值、周期以及方波的幅值、占空比;五个命令控件,分别用来启动程序产生正弦波、产生方波,清楚屏幕上显示的图像和退出程序。
3、利用CVI的代码生成工具生成你制作的一起面板的程序框架。
4、在用户程序中添加相应程序,运行后观察程序执行的结果。
三、程序源代码#include <analysis.h>#include <cvirte.h>#include <userint.h>#include "guweiming.h"static int panelHandle;double a,b,c,d;int main (int argc, char *argv[]){if (InitCVIRTE (0, argv, 0) == 0)return -1; /* out of memory */if ((panelHandle = LoadPanel (0, "guweiming", PANEL)) < 0) return -1;DisplayPanel (panelHandle);RunUserInterface ();DiscardPanel (panelHandle);return 0;}int CVICALLBACKQINGPINGCallback (int panel, int control, int event,void *callbackData, int eventData1, int eventData2){switch (event){case EVENT_COMMIT:DeleteGraphPlot (panelHandle, PANEL_GRAPH_2, -1, V AL_IMMEDIATE_DRAW);break;}return 0;}int CVICALLBACK FANGBOCallback (int panel, int control, int event,void *callbackData, int eventData1, int eventData2){ double wave[512] ;double phase=120,*p;p=&phase;switch (event){case EVENT_COMMIT:SquareWave (512, c, 7.8125e-3, p, 50.0, wave);PlotWaveform (panelHandle, PANEL_GRAPH, wave, 512,V AL_DOUBLE, 1.0, 0.0, 0.0, d, V AL_THIN_LINE, V AL_EMPTY_SQUARE, V AL_SOLID, 1, V AL_RED);break;}return 0;}int CVICALLBACK QINGPING2Callback (int panel, int control, int event,void *callbackData, int eventData1, int eventData2){switch (event){case EVENT_COMMIT:DeleteGraphPlot (panelHandle, PANEL_GRAPH, -1, V AL_IMMEDIATE_DRAW);break;}return 0;}int CVICALLBACK TUICHUCallback (int panel, int control, int event,void *callbackData, int eventData1, int eventData2){switch (event){case EVENT_COMMIT:QuitUserInterface (0);break;}return 0;}int CVICALLBACK FTCallback (int panel, int control, int event, void *callbackData, int eventData1, int eventData2){switch (event){case EVENT_COMMIT:GetCtrlVal (panelHandle, PANEL_FT, &a);break;return 0;}int CVICALLBACK ZQCallback (int panel, int control, int event, void *callbackData, int eventData1, int eventData2){switch (event){case EVENT_COMMIT:GetCtrlVal (panelHandle, PANEL_ZQ, &b);break;}return 0;}int CVICALLBACK FZCallback (int panel, int control, int event, void *callbackData, int eventData1, int eventData2){switch (event)case EVENT_COMMIT:GetCtrlVal (panelHandle, PANEL_FZ, &c);break;}return 0;}int CVICALLBACK ZKBCallback (int panel, int control, int event, void *callbackData, int eventData1, int eventData2){switch (event){case EVENT_COMMIT:GetCtrlVal (panelHandle, PANEL_ZKB, &d);break;}return 0;}int CVICALLBACK ZHENGXIANBOCallback (int panel, int control, int event,void *callbackData, int eventData1, int eventData2){ double Waves[512] ;switch (event){case EVENT_COMMIT:SinePattern (512, a, 0.0, b, Waves);PlotWaveform (panelHandle, PANEL_GRAPH_2, Waves, 512, V AL_DOUBLE, 1.0, 0.0, 0.0, 1.0, V AL_THIN_LINE, V AL_EMPTY_SQUARE, V AL_SOLID, 1, V AL_RED);break;}return 0;}四、思考题1.简述Panel Handle 和Control ID 参数的作用;答:Panel Handle 这一参数由LoadPanel 库函数设置,存入的是已存储的面板文件这一对象。
@+labwindows+cvi测试技术及工程应用

@+labwindows+cvi测试技术及工程应用第一篇基础篇本篇主要介绍虚拟仪器的基本概念、虚拟仪器开发语言LabWindows/CVI的编程环境和程序结构以及基本控件的使用方法,并通过讲解简单实例,使初学者可以迅速掌握利用LabWindows/ CVI开发平台构建一般应用程序的基本思想、方法和步骤.本书使用的是LabWindows/CVI 8.0版本。
奢侈品保养虚拟仪器虚拟仪器(virtual instrument,简称“vi")是计算机技术、仪器技术和通信技术相结合的产物奢侈品维护.虚拟仪器的目的是利用计算机强大资源使硬件技术软件化,分立元件模块化,降低程序开发的复杂程度,增强系统的功能和灵活性。
奢侈品清洗1.1.1虚拟仪器的基本概念虚拟仪器基于计算机的软硬件测试平台,它可代替传统的测量仪器,如示波器、逻辑分析仪、信号发生器、频谱分析仪等:可集成自动控制、工业控制系统:可自由构建专有仪器系统。
它由计算机、奢侈品保养应用软件和仪器硬件组成。
虚拟仪器系统是将仪器硬件搭载到计算机平台,并辅以相应软件而构成的.奢侈品护理加盟虚拟仪器通过软件将计算机硬件资源与仪器硬件有机地融合为一体,从而把计算机强大的计算处理能力和仪器硬件的测量、控制能力结合在一起,大大降低了仪器硬件的成本,并通过软件实现对数据的显示、奢侈品维护存储以及分析处理功能。
从发展史看,电子测量仪器经历了由模拟仪器、智能仪器到虚拟仪器三个阶段。
奢侈品清洗如果在计算机中插入数据采集卡,利用计算机高速计算能力完成仪器信号的分析与处理、结果的输出,就可以把传统仪器的所有功能模块集成在一台计算机上,软件成为仪器系统的关键.在此基础上,美国国家仪器公司(National Instrument,简称“NI")提出了“软件就是仪器”的观点。
奢侈品保养奢侈品护理加盟虚拟仪器技术的优势在于可由用户自己定义通用仪器系统,且功能灵活,很容易构建,所以应用面极为广泛,尤其在科研、开发、.测量、检测、计量、控制等领域,更是不可多得的优秀开发工具。
cvi培训讲义资料

21/78
1、基本控件的使用及编程
数字图控件(Digital Chart)
22/78
1、基本控件的使用及编程
定时器控件(Timer)
画布控件(Canvas)
23/78
1、基本控件的使用及编程
分隔栏控件(Splitter)
24/78
1、基本控件的使用及编程
分页控件(Tab)
25/78
1、基本控件的使用及编程 2、弹出式面板 3、创建菜单 4、文件的读写操作 5、常用函数
10/78
1、基本控件的使用及编程
数值型(Numeric):数值控件、颜色选择控件、 数值滑动条等。
11/78
1、基本控件的使用及编程
文本型(Text):字符串控件,文本信息,文本 框。
12/78
1、基本控件的使用及编程
3、CVI的开发环境
工作空间窗口: 工程目录区:左上角,显示工程架构 函数目录区:左下角,显示函数库和仪器库目录。双击 函数名,即可打开对应的函数面板。 窗口区:右半部分,编辑用户界面、源代码及函数面板。 输出区:右半部下方,显示编译、运行及源代码等的错误 信息。 运行区:右半部下方,显示变量、监视、内存等信息。
表格控件(Table)
18/78
1、基本控件的使用及编程
图形控件(Graph):曲线图控件、带状图控件、 数字图控件
曲线图控件(Graph)
(演示: ..\LabWindows\3\graph)
19/78
1、基本控件的使用及编程
带状图控件(Strip Chart)
20/78
1、基本控件的使用及编程
LabWindowsCVI入门之第一章:LabWindowsCVI开发环境

1.1 LabWindows/CVI1.1.1 LabWindows/CVI概述LabWindows/CVI是美国NI(National Instruments)公司开发的面向计算机测控领域的虚拟仪器软件开发平台,可以在多种操作系统(WindowsXP/Vista/7、Mac OS和Unix)下运行。
LabWindows/CVI 是为C 语言程序员提供的集成开发环境(IDE),在此开发环境中可以利用C语言及其提供的库函数来实现程序的设计、编辑、编译、链接、调试。
使用LabWindows/CVI 可以完成以下但不限于以下工作:·交互式的程序开发;·具有功能强大的函数库,用来创建数据采集和仪器控制的应用程序;·充分利用完备的软件工具进行数据采集、分析和显示;·利用向导开发IVI 仪器驱动程序和创建ActiveX 服务器;·为其它程序开发C 目标模块、动态连接库(DLL)、C 语言库。
图1-1 LabWindows/CVI界面LabWindows/CVI 的功能强大在于它提供了丰富的函数库。
利用这些库函数除可实现常规的程序设计外,还可实现更加复杂的数据采集和仪器控制系统的开发。
数据采集。
IVI库、GPIB/GPIB 488.2库、NI-DAQmx库、传统的NI-DAQ库、RS-232库、VISA库、VXI库以及NI-CAN库。
数据分析。
格式化IO库、分析库以及可选的高级分析库。
GUI库。
使用LabWindows/CVI 的用户界面编辑器可以创建并编辑图形用户界面(GUI),而使用LabWindows/CVI 的用户界面库函数可以在程序中创建并控制GUI。
此外,LabWindows/CVI为GUI 面板的设计,准备了许多专业控件,如:曲线图控件、带状图控件、表头、旋钮和指示灯等,以适应测控系统软件开发的需求,利用这些控件可以设计出专业的测控程序界面。
网络和进程间通信库。
LabWindowsCVI教程用户图形界面设计

带状图控件( )
数字图控件( )
图片控件()
树形控件()
定时器控件() 画布控件()
表格控件()
分隔控件()
分页控件()
定制控件( )
通用控件操作函数:
( , , *); (, , );
( , , ...); (, , 5.0);
பைடு நூலகம்
控件
技术简介 技术是指宽松定义的、基于组件对象模型()的
技术集合。它是基于已经存在的(对象链接与 嵌入)技术,通过把桌面系统“对象共享”的 范围扩展到整个,以使得构造这类新应用程序 成为可能。 定义了创建、配置和使用应用程序的规则。它 是一个二进制标准,包含了一系列规则,目的 是构建与语言无关的,面向对象的应用程序。
文档——在容器中(如的面板)查看文档。例如,可以把 一个 文档或电子表格放在的面板中显示。
控件
控件是的外部组件,可以象的内部控件一样使 用。
设计带有控件的程序
选择控件 :在窗口选择>> ,选择 选项,在控 件列表中选择需要的控件,单击按钮。
设置控件属性:双击控件,也可以点击编辑控 件对话框中的“ ”按钮,编辑控件特性页。
( ); ();
( ); = ();
( , [], ); = (, "文件", -1);
(, ,
[], , , , *);
= (, , "打开...", -1, 0, , 0);
( , ); = (, );
……
4. 控件设计 5. 控件种类: 6. 数值型():数值控件,颜色选择控件,数值滑动条
LabWindowsCVI教程数据库应用程序的设计主讲乔立岩精品文档17页

16.03.2020
1/15
第十讲 数据库应用程序设计
一条记录(行)
一个字段(列)
• •
16.03.2020
表里的数据本身并无顺序。在用SELECT语句从表 中回收数据时,发生排序、分组和其它数据操作。
表中每列都有一个数据类型。相对于不同的数据库 管理系统(DBMS),可用的数据类型定义也是存
在差异的。
11/15
第十讲 数据库应用程序设计
• 步骤4. 断开SQL连接
▪ SQL操作结束后,应断开SQL连接来释放系统资源。 这个步骤在任何方向上取值时都是特别重要的,它可 保证工具包适当地关闭并删除临时登记文件。
• 步骤5. 断开数据库
▪ 全部数据库操作结束时,应断开通过SQL建立的数据 库连接,以适时地释放系统资源。
• 可获取SELECT语句返回的字段名和数据类型。
• 不用SQL语句即可创建表并选择、插入、更新 和删除记录。
16.03.2020
9/15
第十讲 数据库应用程序设计
8. SQL Toolkit数据库操作基本步骤
• 步骤1. 连接数据库
执行SQL语句前,必须建立数据库连接。LabWindows/CVI SQL工具包支持单个数据库或多个数据库的多个同步连接。
▪ 使用SELECT语句必须将选择的字段绑定到程序中的 变量上。接着用取值函数获取所选记录。每次调用取 值函数,工具包将列变量拷贝到在程序中绑定的变量。 更新行或创建行时还可用绑定的变量,即更新行或创 建行时将新值拷贝到绑定的变量并随后调用适当的函 数,将程序中的数据添加到数据库对应的字段。
16.03.2020
第十讲 数据库应用程序设计
1. 数据库的基础知识
Labwindows扫盲+技巧贴,CVI学习必看

6.在LabWindows/CVI中如何将自己编写的函数放在函数模版中,使它可以像函数模版中原有的函数那样使用?
回答=先新建一个Function Tree,然后在这个Function Tree下新建一个Instrument,并在这个Instrument下建立函数分类(将函数分类管理),再建立一个Function Panel,在上面添加输入输出控件和帮助信息,(如果这个函数没有使用到数采硬件,那么在Option下面将IVI/VXIplug&playStyle前的勾去掉)然后选择Tools下的Generate New Source forFuctionTree,最后只要在自动生成的*.c文件中添加函数的代码并保存,然后就可以像函数面板中的其他函数一样调用了。(下次使用LabWindows/CVI时需要重新载入)
6.CVI中如何实现及时提示功能?
回答=在CVI中为了实现Windows中当鼠标指针放到某个按钮控件上时自动出现提示,简单说明该按钮的功能。可以使用SetCtrlToolTipAttribute函数来实现该功能。
2.如何减少CVI程序的CPU占用率?
回答=可以在Options-》Enviroment中进行设置,将Sleep Policy设置为Sleep More。或者在程序中进行设置,设置函数为:SetSleepPolicy(VAL_SLEEP_MORE)。
3.在CVI中如何实现将这次面板参数作为下次的缺省值使用?
回答=一般情况下可以使用文件将各参数保存下来,在下次调用面板时再调用这些参数。也可以使用CVI自带的函数SavePanelState和RecallPanelState。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
回答=在CVI中为了实现Windows中当鼠标指针放到某个按钮控件上时自动出现提示,简单说明该按钮的功能。可以使用SetCtrlToolTipAttribute函数来实现该功能。
2.如何减少CVI程序的CPU占用率?
回答=可以在Options-》Enviroment中进行设置,将Sleep Policy设置为Sleep More。或者在程序中进行设置,设置函数为:SetSleepPolicy(VAL_SLEEP_MORE)。
1.在没有.LIB和.H文件时,CVI怎么调用DLL??
回答=使用SDK中的LoadLibary和GetProcAddress以及FreeLibrary可以实现动态DLL的调用。
3.在CVI中如何实现将这次面板参数作为下次的缺省值使用?
回答=一般情况下可以使用文件将各参数保存下来,在下次调用面板时再调用这些参数。也可以使用CVI自带的函数SavePanelState和RecallPanelSt
回答=LabWindows/CVI中的堆栈大小直接影响可以分配的数组大小。如果数组的大小超过堆栈大小,则会报告错误。该值可以在Options->Build Options中设置。缺省值为:250000。建议使用动态内存分配。
4.CVI中如何画极坐标?
回答=CVI中没有专门提供画极坐标的控件。可以使用Picture控件自己画,或者使用绘图软件绘制出极坐标图,然后保存为图片再使用canvas控件将图片导入。
6.在LabWindows/CVI中如何将自己编写的函数放在函数模版中,使它可以像函数模版中原有的函数那样使用?
回答=先新建一个Function Tree,然后在这个Function Tree下新建一个Instrument,并在这个Instrument下建立函数分类(将函数分类管理),再建立一个Function Panel,在上面添加输入输出控件和帮助信息,(如果这个函数没有使用到数采硬件,那么在Option下面将IVI/VXIplug&playStyle前的勾去掉)然后选择Tools下的Generate New Source forFuctionTree,最后只要在自动生成的*.c文件中添加函数的代码并保存,然后就可以像函数面板中的其他函数一样调用了。(下次使用LabWindows/CVI时需要重新载入)