labwindowscvi2第三章图形用户界面设计39页
labwindows-CVI-教程
l a b w i n d o w s-C V I-教程本页仅作为文档封面,使用时可以删除This document is for reference only-rar21year.MarchLabWindows/CVI基础教程序言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编程环境,思想及步骤有一初步的认识。
matlab中图形用户界面的教程
创建GUI应用程序
case 'Peaks' % User selects peaks handles.current_data = handles.peaks; case 'Membrane' % User selects membrane handles.current_data = handles.membrane; case 'Sinc' % User selects sinc handles.current_data = handles.sinc; end % Save the handles structure. guidata(hObject,handles) % Hints: contents = get(hObject,'String') returns data_pop_up contents as cell array % contents{get(hObject,'Value')} returns selected item from data_pop_up
GUI代码说明
– M 文件扩展名为 .m, 其中包含 GUI 的初始代 码及相关响应函数的模 板。用户需要在该文件 中添加响应函数的具体 内容。 – M 文件通常包含一个与 文件同名的主函数,各 个控件对应的响应函数, 这些响应函数为主函数 的子函数。其内容如表 所示。
内容 描述
注释
程序注释。当在命令行调用 help 时显 示
创建GUI应用程序
• 创建一个 GUI,实现三维图形绘制。 界面中应包含一个绘图区域; 一个面板,其中包含三个绘图按钮,分 别实现表面图、网格图和等值线的绘制; 一个弹出菜单,用以选择数据类型,并 且用静态文本进行说明。其草图如图所示。
cvi教程汇总
5/38
HidePanel 隐藏面板 int HidePanel (int Panel_Handle); HidePanel (testPanelHandle); GetPanelAttribute 获取面板属性 int GetPanelAttribute (int Panel_Handle, int Panel_Attribute, void *Attribute_Value); GetPanelAttribute (testPanelHandle, ATTR_BACKCOLOR, &color); SetPanelAttribute 设置面板属性 int SetPanelAttribute (int Panel_Handle, int Panel_Attribute, ...); SetPanelAttribute (testPanelHandle, ATTR_BACKCOLOR, VAL_RED); SavePanelState RacallPanelState …
int PromptPopup (char Title[], char Message[], char Response_Buffer[], int Max_Response_Length); PromptPopup ("输入信息", "请输入姓名", &name, 20); 9/38
2019/4/21
RemovePopup
删除弹出式面板
int RemovePopup (int Remove_Popup); RemovePopup (0);
MessagePopup
输出信息对话框
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提供的函数库来完成各种操作,如数据采集、图形绘制等。
除了事件处理函数,我们还可以创建其他类型的函数来实现更复杂的功能。
CVI实验——精选推荐
LabWindows/CVI实验说明LabWindows/CVI是National Instruments公司推出的一套面向测控领域的软件开发平台。
它以ANSI C为核心,将功能强大,使用灵活的C语言平台与数据采集,分析和表达的测控专业工具有机地结合起来。
它的集成化开发平台,交互式编程方法,丰富的控件和库函数大大增强了C语言的功能,为熟悉C语言的开发人员建立检测系统,自动测量环境,数据采集系统,过程监控系统等提供了一个理想的软件开发环境。
实验中用到的函数及其函数原型LabWindos/CVI 编程的步骤基本如下:第一步:第二步:第三步:第四步:LabWindows/CVI 编程环境用户接口编辑窗(User Interface Edit window)图形用户接口编辑窗是用来创建,编辑GUI(Graph User Interface)的。
一个用户接口至少要有一个面板(Panel)以及在面板上的各种控件元素(Control Element)。
图形用户接口编辑窗为你提供了非常快捷的创建、编辑这些面板和控件元素的方法,可以让你在短时间里创建出符合你要求的图形界面。
一个图形用户接口编辑窗就如下页图所示,下面详细介绍:图形用户接口编辑窗中还有四个模式选择按扭::当该按扭被按下后,你可以操作面板上的控件,同时在图形用户接口编辑窗的右上角上来观察面板上的事件消息。
:在这种模式下你可以创建、编辑面板和控件元素以及修改它们的属性。
:在这种模式下你可以直接修改控件元素的名字、标签等文字相关方面的东西。
:在这种模式下你可以直接修改面板,控件元素的颜色。
先把鼠标放在你所想修改颜色的对象上,点击右键便会弹出一个选色对话框,选择你所想要的颜色后点击后即可。
在图形用户接口编辑窗中Panel 的灰色区域中单击鼠标右键,便会弹出一个快捷菜单如上所示:源代码编辑窗(Sourse window)你可以在源代码编辑窗中开发你的C 语言代码文件。
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函数,实在是值得一读的一本书.。
最新labwindowscvi2第三章图形用户界面设计
response = ConfirmPopup ("测试信息", "测量错误,是否继续?");
PromptPopup
等待输入字符信息对话框
int PromptPopup (char Title[], char Message[], char Response_Buffer[], int Max_Response_Length);
i = DirSelectPopup ("c:\\vxipnp", "Select Directory", 1, 1, &pathname);
WaveformGraphPopup
int WaveformGraphPopup (char Title[], void *Y_Array, int Number_of_Points, int Y_Data_Type, double Y_Gain, double Y_Offset, double Initial_X, double X_Increment);
InstallPopup
载入弹出式面板
int InstallPopup (int Panel_Handle);
InstallPopup (testPanelHandle);
RemovePopup
删除弹出式面板
int RemovePopup (int Remove_Popup);
RemovePopup (0);
SavePanelState
保存面板状态
RacallPanelState 调出面板状态
labwindowscvi图形用户界面设计
GetPanelAttribute 获取面板属性
int GetPanelAttribute (int Panel_Handle, int Panel_Attribute, void *Attribute_Value);
GetPanelAttribute (testPanelHandle, ATTR_BACKCOLOR, &color);
PromptPopup ("输入信息", "请输入姓名", &name, 20);
2020/2/7
8/38
FileSelectPopup
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[]);
MessagePopup
输出信息对话框
int MessagePopup (char Title[], char Message[]);
MessagePopup ("提示信息", "测试结束,全部合格");
ConfirmPopup
等待确认对话框 Yes or No
int ConfirmPopup (char Title[], char Message[]);
testPanelHandle = LoadPanel (0, "test.uir",
cvi教程
c. 将 Label 项改为 Acquire
说明:通过这种方法可以修改按扭名字,Acquire 中 A 字母前有下画线,是指可
以通过 Alt + A 即可达到按下该按扭的效果(即热键)。
从该菜单中选择:Command Button>>Square Command Button
泛华测控
电话:010-62628052 至 62628055(共四线),传真:010-62628056
第6页便会创建一个方形的按扭。 由于本程序总共需要三个按扭,所以按照上面的步骤再创建两个方形按
或者直接从桌面起动 CVI 的快捷方式,双击桌面 National Instrument CVI 图标
当 LabWindows/CVI 打开后你就会见到如下所示的一个空的项目(Project) 窗:
第一步:创建用户界面
创建控件元素: 从 Project 窗中选择:File>>New>>User Interface(*.uir)…创建一个用户
File 菜单,然后选择 Page Setup 项,最后从弹出的对话框中选择 Options 项。
“说明:通过这种方式你可以修改 Panel 顶端所显示的名字。”
该种字体所写的文字是值得读者注意并记忆的内容。
“
”
该椭圆形框所框住的内容是读者需修改的地方。
泛华测控
电话:010-62628052 至 62628055(共四线),传真:010-62628056
第 10 页
北京中科泛华测控技术有限公司
a. 将 Constant Name 项改为 ACQUIRE
LabWindows/CVI集成开发环境下虚拟汽车仪表盘的设计
双击 U tldP nl 弹 出 E iPn l 口。本设计 中, n t ae , ie dt ae 窗 仪器面板需要设 置的属性 为标题文 字的设置 。在 “ ae Tt ” P nl ie 属 l
第2 3卷 第 l期 21 0 0年 3月
阼窑口口 技术 玎业 学院学挥 -
Ju a o hnj kuV ct nl n eh i l o ee orl f ag ao oa oa adT cnc l g n Z i i aC l
Vo . 3 No 1 12 . Ma c 2 0 rh, 01
() 4 如果车速超过 一个限定 值 ( 限定值 可调节 ) 则发 出警报 。 , () 5 油量低于某一 限定值 ( 限定 值可调节 ) 则发 出报 警。 , 当仪器 运行 时 , 通过 函数 产生数据 流 , 运行结 果在仪器面板 上显示 当关闭仪器 时 , 择“ 闭 ” 钮将 结束操作 , 闭仪器 , 退 出该程序 。 选 关 按 关 并
2 实 日期 :00—0 —2 21 1 0 作者简介 : 陈淑敏 ( 9 8一) 女 , 西忻 州人 , 16 , 山 张家 口职 业技 术 学院信 息工程 系副教授 , 学士。研 究方 向: 计算机软
硬 件教 学 。
・
5 3・
用户界面编辑 窗 口。需要 在用户 界面编辑窗 口中 , 择 Cet— ae建立仪器 面板 。 选 r e Pnl a 根据设计所要 实现的功 能在仪器 面板中逐个创建 控件 , 鼠标把它们拖 到相应 的位置 , 用 建立好 虚拟面板 。
( ) 改用户界 面中各控件元 素的属性 2修
LabWindowsCVI教程用户图形界面设计
带状图控件( )
数字图控件( )
图片控件()
树形控件()
定时器控件() 画布控件()
表格控件()
分隔控件()
分页控件()
定制控件( )
通用控件操作函数:
( , , *); (, , );
( , , ...); (, , 5.0);
பைடு நூலகம்
控件
技术简介 技术是指宽松定义的、基于组件对象模型()的
技术集合。它是基于已经存在的(对象链接与 嵌入)技术,通过把桌面系统“对象共享”的 范围扩展到整个,以使得构造这类新应用程序 成为可能。 定义了创建、配置和使用应用程序的规则。它 是一个二进制标准,包含了一系列规则,目的 是构建与语言无关的,面向对象的应用程序。
文档——在容器中(如的面板)查看文档。例如,可以把 一个 文档或电子表格放在的面板中显示。
控件
控件是的外部组件,可以象的内部控件一样使 用。
设计带有控件的程序
选择控件 :在窗口选择>> ,选择 选项,在控 件列表中选择需要的控件,单击按钮。
设置控件属性:双击控件,也可以点击编辑控 件对话框中的“ ”按钮,编辑控件特性页。
( ); ();
( ); = ();
( , [], ); = (, "文件", -1);
(, ,
[], , , , *);
= (, , "打开...", -1, 0, , 0);
( , ); = (, );
……
4. 控件设计 5. 控件种类: 6. 数值型():数值控件,颜色选择控件,数值滑动条
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
WaveformGraphPopup
int WaveformGraphPopup (char Title[], void *Y_Array, int Number_of_Points, int Y_Data_Type, double Y_Gain, double Y_Offset, double Initial_X, double X_Increment);
i = FileSelectPopup ("c:\\vxipnp", "*.txt", "*.*", "选择数据文件", VAL_LOAD_BUTTON, 0, 0, 1, 0, filename);
DirSelectPopup
int DirSelectPopup (char Default_Directory[], char Title[], int Allow_Cancel?, int Allow_Make_Directory?, char Path_Name[]);
testPanelHandle = LoadPanel (0, "test.uir", PANEL_TEST);
DisplayPanel
显示面板
int DisplayPanel (int Panel_Handle);
DisplayPanel (testPanelHandle);
DiscardPanel
Panel_Height, int Panel_Width);
testPanelHandle = NewPanel (0, "新面板", 10, 10, 200,
300);
LoadPanel
载入面板
int LoadPanel (int Parent_Panel_Handle, char Filename[], int Panel_Resource_ID);
MessagePopup
输出信息对话框
int MessagePopup (char Title[], char Message[]);
MessagePopup ("提示信息", "测试结束,全部合格");
ConfirmPopup
等待确认对话框 Yes or No
int ConfirmPopup (char Title[], char Message[]);
释放面板
int DiscardPanel (int Panel_Handle)
DiscardPanel (testPanelHandle);
19.05.2020
4/38
HidePanel
隐藏面板
int HidePanel (int Panel_Handle);
ቤተ መጻሕፍቲ ባይዱ
HidePanel (testPanelHandle);
SavePanelState
保存面板状态
RacallPanelState 调出面板状态
… …
19.05.2020
5/38
弹出式面板(Pop-up Panel)
19.05.2020
6/38
弹出式面板(Pop-up Panel)
19.05.2020
7/38
弹出式面板函数(Pop-up Panel)
图形用户界面设计
1. 图形用户界面(Graphical User Interface)
面板(panel) 菜单条(menu bar) 控件(control) LabWindows/CVI自定义的资源格式
2. 面板设计
其它资源的容器 面板属性编辑器 使用用户界面设计函数创建面板和改变面板属性
19.05.2020
1/38
面板(panel)
19.05.2020
2/38
面板编辑窗口
19.05.2020
3/38
面板操作函数:
NewPanel
创建面板
int NewPanel (int Parent_Panel_Handle, char
Panel_Title[], int Panel_Top, int Panel_Left, int
InstallPopup
载入弹出式面板
int InstallPopup (int Panel_Handle);
InstallPopup (testPanelHandle);
RemovePopup
删除弹出式面板
int RemovePopup (int Remove_Popup);
RemovePopup (0);
SetPanelAttribute 设置面板属性
int SetPanelAttribute (int Panel_Handle, int Panel_Attribute, ...);
SetPanelAttribute (testPanelHandle, ATTR_BACKCOLOR, VAL_RED);
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);
PromptPopup ("输入信息", "请输入姓名", &name, 20);
19.05.2020
8/38
FileSelectPopup
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[]);