LabCVI常见问题及解决方法
初学LabVIEW数据采集中常见的问题
初学数据采集中常见的问题经常在论坛上会碰到一些会员朋友发贴提问数据采集的问题,其中很大一部分是初学者刚接触数据采集,对其中的一些基本概念还没有太多的了解,这里将这些问题集中一下,做个总结。
由于个人接触的板卡以NI的为主,这里的内容只针对NI的数据采集卡,不保证适用于其它公司的数据采集卡。
1,数据采集的时候数据会不会丢失?——这是最常见的一个问题,刚开始学数据采集的时候都会在考虑,如果软件上读取数据的循环运行得不够快时,比如100K采样率的时候,软件上循环肯定没这么快,数据是不是就丢失了?首先我们要清楚的是,数据采集功能是由数据采集卡来完成的,软件只是将采集到的数据接收到电脑上面过来,数据采集卡有自身的办法来解决硬件采集速度快过于软件读取速度的问题。
这需要对数据采集过程中数据的传输作一个介绍:外部的信号进入数据采集卡后,经过各种处理转换,先进入数据采集卡自身的缓冲区里面,缓冲区是先进先出(FIFO,First In First Out)的,NI的数据采集卡应该是都有板载的缓冲区,区别在于缓冲区的大小而已。
然后当板载缓冲区中的数据量到了一定的条件时,数据采集卡将缓冲区的数据上传到计算机内存中,一般是以DMA(直接内存访问)方式传入的,但也可以设置为其它方式,比如中断等。
上传数据的方式和时机可以通过DAQmx的属性节点进行设置或查看,DAQmx中默认是使用DMA传输方式,传输条件是板载内存非空。
以下蓝色部分摘自NI网站:数据传输方式包括直接内存访问(DMA),中断请求(IRQ)和可编程I/O。
DMA是一种DAQ板卡和PC内存间直接通讯的传输方式,不再需要处理器的干预。
NI "MITE"芯片可以处理与PCI总线间的所有总线协议。
IRQ传输方式会置高信号并中断处理器,然后由处理器处理数据传输。
IRQ 传输通常很低,只有150 kb/s,而DMA可以高达20 Mb/s。
IRQ 传输速率与使用的系统设备相关,如处理器速度等。
LabWindowsCVI 帮助文件翻译
LabWindows/CVI的组件LabWindows/CVI是一个程序环境,用于开发仪器控制、自动测试和数据采集,以ANSI C.为核心的应用软件。
LabWindows/CVI包括下面特征:为下面组件提供标准函数库和交互式的函数面板:通用接口总线采用串行二进制数据交换的数据终端设备与数据通信设备之间的接口虚拟仪器软件体系结构数据采集数据分析数据格式化传输控制协议动态数据交换通信网络通信数字输入适配器连通性输入/输出美国国家标准化组织C语言用户交互式图形编辑,编码程序范例,内附和显示的数据库,用户图形交互式控制。
网络化多媒体对象技术范例和数据库。
IVI仪器控制范例和数据库一套仪器驱动包括高水平的函数和控制特殊仪器的交互式函数面板。
管理工程,源程序,调试,用户保护的windows开发环境。
新建和编辑NI-DAQmx任务的工具。
新建和编辑仪器控制任务的工具。
在完整开发系统中,还可以利用附加函数库,高级函数分析库,网络函数库。
如何新建LabWindows/CVI应用程序在整个程序中把LabWindows/CVI当作一个文本编辑器。
通过使用功能面板执行LabWindows/CVI功能和自动在程序中插入代码,你可以简单开发。
功能面板包含完整的在线帮助。
一个工程包含你应用的所有组件文件。
最简单的例子就是一个源文件。
当然,一个典型的工程包含复杂代码和用户交互式源文件。
你可以包含代码模型作为源文件或者编译文件。
你可以调试源文件。
当你在源文件中执行代码,LabWindows/CVI可以检查运行时间错误。
包含库文件或者目标文件等编译文件在你的工程中,你必须编译LabWindows/CVI主题或者可并立的外部编译。
编译/联接主题提供更多的可并立的外部编译的信息。
编译文件消耗较少的内存,运行比源文件快。
当然,你不能调试它们,它们也没有运行时间错误检查。
你可以在工程中标记原文件,没有除错,编译使用较少内存。
你可以平衡开始启动时间,实行速度, 内存消耗和调试代码模型能力,通过改变你工程中的代码模型的类型。
MATLAB深度学习中常见问题与解决方法
MATLAB深度学习中常见问题与解决方法深度学习在计算机科学领域中扮演着重要角色,而在深度学习的实践中,MATLAB是一个常用的工具。
然而,即便是有经验的MATLAB用户,也会在深度学习过程中遇到各种问题。
本文将讨论一些常见的问题,并提供相应的解决方法,以帮助读者更好地应对这些困扰。
## 数据准备问题在进行深度学习之前,数据准备是必不可少的步骤。
数据必须经过预处理、特征提取等步骤,以使其适合作为深度学习模型的输入。
然而,在这个过程中,可能会遇到一些问题。
首先,数据的质量是一个关键问题。
数据必须是准确、完整、无噪声的,才能得到可靠的模型。
解决这个问题的方法是使用数据清理技术,如去除异常值、填充缺失值等。
其次,数据集的大小也是一个常见的问题。
深度学习需要大量的数据来训练模型。
如果数据集太小,可能会导致模型过拟合,即在训练集上表现出很高的准确率,但在测试集上表现较差。
解决这个问题的方法是扩充数据集,可以通过数据增强技术来实现,如旋转、翻转、裁剪等。
另一个值得关注的问题是类别不平衡。
在某些任务中,不同类别的样本数量可能差异很大,这会导致模型对多数类别过于偏向,而对少数类别不够敏感。
解决这个问题的方法是使用各种采样技术,如过采样、欠采样、SMOTE等,以平衡不同类别的样本。
## 模型选择问题选择适合的模型是深度学习的关键步骤之一。
在选择模型时,需要考虑问题的复杂度、数据集的大小和特征等因素。
然而,有时候会遇到一些困扰。
首先,过拟合是一个常见的问题。
过拟合指的是模型在训练集上表现良好,但在测试集上表现较差。
这可能是因为模型过于复杂,导致学习到了训练集中的噪声。
解决这个问题的方法是通过正则化技术,如L1正则化、L2正则化等,来限制模型的复杂度。
其次,欠拟合也是一个常见的问题。
欠拟合指的是模型无法很好地拟合训练集,导致训练集和测试集的表现都较差。
这可能是因为模型过于简单,无法捕捉到数据中的复杂模式。
解决这个问题的方法是使用更复杂的模型,如增加模型的层数、增加神经元的个数等。
LABVIEW学习中常遇到的50个问题及解答
Labview初学者常见问题以及解答1、Labview如何实现由一个事件引发其他三个事件的顺序发生,且这三次事件间的时间间隔为50ms?回答:可以引用状态机来设计程序,将触发事件作为状态机的状态控制参数,后面发生的三个事件依次作为状态机的三个顺序状态,设置状态切换时间间隔为500ms.2、labview在主程序通过局部变量不能实时看子vi的参数回答:通过局部变量只能得到子vi运行完之后的结果。
可以用control reference 方式,在子vi加一个属性节点引出一个reference。
主程序里把需要显示的控件创建一个reference连到子vi的reference输入端口。
另外也可以用vi server方式实现。
3、如何在一个graph或chart显示多个Y轴刻度,并且使每个通道对应每个刻度?回答:在前面板上,右键点击刻度,然后选择duplicate scales,就会创建一个新的刻度。
然后再点击右键,选择swap sides,就可以让刻度显示在图的左边或右边。
然后右键右上角的plot legend上的曲线plot,选择Y scales然后就可以选择与该曲线相应的Y轴SCALES。
多条曲线对应多条Y轴的刻度时,是同样的方法。
4、如何从labview中打开一个pdf文件?回答:最简单的方法:用system exec.vi实现,在system exec.vi的command line 端口创建一个常量,输入adobe reader 的路径,再加上文件名等几个参数就可以实现上述要求。
举例如下:如果要拉开位于c盘的1234.pdf文件可以这样写“C:\Program files\Acrobt 7.0\Acrobat\Acrobat.exe”/t“C:\1234.pdf” “username”其中C:\Program files\Adobe\Acrobt7.0\Acrobat\Acrobat.exe是Adobe Reader 的安装路径,/t是命令参数,C:\1234.pdf则是要打开的文件名,最后的username是用户的名字5、采集数据在graph如何显示系统时间,并且随着采集点数时间不断刷新。
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 面板的设计,准备了许多专业控件,如:曲线图控件、带状图控件、表头、旋钮和指示灯等,以适应测控系统软件开发的需求,利用这些控件可以设计出专业的测控程序界面。
matlab常见错误以及解决办法
matlab常见错误以及解决办法1.Subscript indices must either be real positive integers or logicals 中文解释:下标索引必须是正整数类型或者逻辑类型出错原因:在访问矩阵(包括向量、二维矩阵、多维数组,下同)的过程中,下标索引要么从0 开始,要么出现了负数。
注:matlab 的语法规定矩阵的索引从1 开始,这与C 等编程语言的习惯不一样。
解决办法:自己调试一下程序,把下标为0 或者负数的地方修正。
2.2.Undefined function or variable "U" 中文解释:函数或变量U 没有定义 .出错原因及解决办法:可能变量名输入错误,仔细检查 33..Matrix dimensions must agree 中文解释:矩阵的维数必须一致出错原因:这是由于运算符(= + - / * 等)两边的运算对象维数不匹配造成的,典型的出错原因是错用了矩阵运算符。
matlab 通过“.”来区分矩阵运算和元素运算。
解决办法:自己调试一下程序,保证运算符两边的运算对象维数一致。
4.4.Function definitions are not permitted at the prompt or in scripts 中文解释:不能在命令窗口或者脚本文件中定义函数出错原因:一旦在命令窗口写function c = myPlus(a,b),此错误就会出现,因为函数只能定义在m 文件中。
关于脚本文件和m 文件的区别请查阅matlab 基础书。
简言之: 1) 如果你写成function 的形式,那么必须写在m 文件中,且以function 开头(即function 语句前不能包含其他语句,所有语句必须放在function 中,当然,function 的定义可以有多个,各function 之间是并列关系,不能嵌套);2) 如果你写成脚本的形式,则既可以写在命令窗口中,也可以写在m 文件中,但两者均不能包含function 语句(即不能进行函数的定义)解决办法:新建一个m 文件,然后再进行函数的定义5. 5.One or more output arguments not assigned during call to '...' 中文解释:在调用...函数过程中,一个或多个输出变量没有被赋值出错原因:函数如果带有输出变量,则每个输出在返回的时候都必须被赋值。
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编程环境,思想及步骤有一初步的认识。
LabCVI常见问题及解决方法
LabCVI常见问题及解决方法LabCVI常见问题及解决方法(一)1. 使用CVI9.0调用由VC++6.0编写的DLL,该DLL在VC中调用是可以的,输出方式也是C语言的。
但是在CVI中调用该DLL时,总是提示missing prototype,如何解决?答:设置BUILD OPTION在options->Build options | c language options中取消Require function prototypes的检测2. CVI中如何向设计好的word表格中添加文字和数据?答:先在表格中需要添加文字和数据的地方做一个“书签”,在CVI中打开该文档后,使用Word_GetProperty (currSelHandle, NULL, Word_SelectionBookmarks, CAVT_OBJHANDLE, &rangeHandle);获得“书签”信息,然后再向该“书签”处添加文字。
3. CVI中如何将波形图控件的图片放到剪贴板中?答:首先使用GetCtrlDisplayBitmap (panel, FORCEPANEL_GRAPH, 1, &bitmap);获得波形图控件的图片,然后使用ClipboardPutBitmap (bitmap);将图片放入到剪贴板中。
4. CVI中是否支持指向函数的指针,如何实现?答:可以实现,如下例:int(*pmax)(int a, int b);int x,y,z;pmax=max;printf("input two numbers:\n");scanf("%d%d",&x,&y);z=(*pmax)(x,y);5. CVI中如何使用非NI公司的硬件产品?该公司提供了一个fp文件。
答:一般来说通常可以调用产品销售商提供的动态链接库,有些大公司也提供fp文件,该文件可以直接使用,就可以达到使用硬件的目的了。
CVI编程常见问题与错误-2012.9
CVI 编程常见Байду номын сангаас题或错误
1. CVI编程时,在程序中插入函数的方法?如何了解该函数隶属那个函数库? ..................................... 3 2. 如何查看或者找到一个CVI或IMAQ Vision的函数? ............................................................................... 4 3. 实验一不能显示曲线—采用了错误的显示控件 ....................................................................................... 5 4. 实验一不能显示正弦曲线 ........................................................................................................................... 5 5. 实验一显示不了任何信号波形曲线? ....................................................................................................... 6 6. 实验 1.2 出现的显示问题 .....................................................................................................
一些CVI问题的解决方法
一些CVI问题的解决方法(转贴)(2007-05-28 08:57:33)转载▼分类:CVI1.在安装NI软件的过程中(包括LabVIEW, CVI, hardware drivers, 或使用了MSIinstaller进行安装的其它NI软件),出现错误2894致使安装程序被迫中止,如何解决该问题?回答=该问题是微软网站上已经公布的Microsoft Installer常出现的问题之一。
已知有两个原因可能导致出现该问题:其一就是错误的或者被破坏了的Riched20.dll存在于用户的计算机上,或用户计算机上的的Riched20.dll文件丢失。
其二就是用户的计算机被诸如W32.Nimda.A@mm的病毒感染。
针对第一种情况,用户需要从其他机器上拷贝正确版本的Riched20.dll文件或者重新安装MSI installer。
如果用户的操作系统为Windows95,98或者ME,那么必须下载并安装Instmsi.exe,如果用户使用Windows NT4.0, 2000或者Xp,那么必须下载安装InstMsiW.exe。
该执行文件将会修复用户系统里的所有损坏文件。
针对第二种情况,用户则需要杀毒并重新安装上述文件。
bWindows/CVI中的堆栈大小?回答=LabWindows/CVI中的堆栈大小直接影响可以分配的数组大小。
如果数组的大小超过堆栈大小,则会报告错误。
该值可以在Options->Build Options中设置。
缺省值为:250000。
建议使用动态内存分配。
3.CVI中如何画极坐标?回答=CVI中没有专门提供画极坐标的控件。
可以使用Picture控件自己画,或者使用绘图软件绘制出极坐标图,然后保存为图片再使用canvas控件将图片导入。
4.如何在启动CVS之后立即启动下载到CVS上的执行程序?一般有两种方式,其中一种你可以使用LV的工程项来把程序下载到CVS中,那么RTTarget.ApplicationPath=c:\ni-rt\startup\startup.rtexe,unchAppAtBoot=True这两个设置就会自动被LV设置。
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的接口函数。
LabWindowCVI安装方法
LabWindows/CVI 2009你下载完成后,你看到的下载文件,如下图所示!需要解压缩这个文件,在该文件上点击右键,选择加“压缩到NILWCVI2009SP1”,这样你在你的电脑上多了一个叫“NILWCVI2009SP1”的文件夹!如下图所示打开“NILWCVI2009SP1”文件夹,选择文件夹下的setup.exe,双击打开该文件,这个时候会出现LabWindows的安装界面!如下图所示点击next按钮,进行下一步安装!这是会出现让你输入软件的序列号,这个没有怎么获取呢?如下图所示关于序列号的获取方法可以参看我的另外一篇经验文章!里面有详细的描述,这里就不在赘述了!文章链接为:/article/597035521808e98fc0074031.html根据上一步的操作获取到序列号之后,将序列号粘贴到对应的框中,点击next按钮,会出现亲切的选择安装路径的界面了!注意:这时候不要关闭序列号生成器,因为后边的激活操作还需要它生成Lic文件!一直点击next按钮,直到出现下图所示的界面,这个时候注意:你需要取消掉这个勾,取消更新检测!因为更新检测的时间挺长的,没有必要检测!!然后点击next按钮执行安装下一步,这个时候就可以真正的进行安装了,这时你会看到如下图的安装进度条,看到这个,说明你的软件正在安装过程中了,这个时候你可以去喝口茶,等安装完之后,只差最后的一步就可以完美激活你的软件了!O(∩_∩)O哈哈~END注意事项序列号生成之后,这时不要关闭序列号生成器,因为后边的激活操作还需要它生成Lic文件!如果你已经关闭了序列号生成器,那也不要紧,这时候你执行激活的时候,就要非常认真的看我写的经验了哦!要不接下来的激活会很费劲!LabWindows/CVI2009 激活1浏览:3842|3更新:2013-04-12 15:291),安装CVI_FDS_2009 ,到需要注册号时暂停。
2),运行注册机,选择“Full Development System”,点击“生成”得到系列号。
LabView常见问题及解答
LabView常见问题及解答LabView常见问题及解答1、如何用LabView与可编程仪器通信,该仪器没有GPIB接口,但有COM口,能否用LabView操作?A:可以通过LV的串口通信来解决仪器控制问题,参看FIND EXAMPLE的BASIC2PORT SERIAL WRITE AND READ.VI2、如何将EVENTSTRUCT中捕获的时间传递到STATE DIAGRAM?A:使用VENTSTRUCT捕获面板事件后,将不同的事件对应于不同的字符串和其他,再通过QUEUE将VENTSTRUCT中的字符串传递到STATEDIAGRAM中,再根据得到的字符串进行相应的处理。
3、使用WRITE TO BINARY FILE函数向二进制文件中写入一个1D数组,为什么在READ FROM BIANRY FILE读取时,会多出4个字节数据呢?A:写入时加入了头信息,多出的4个字节就是头信息,代表了数组或字符串的长度。
在WRITE TO BINARY FILE中的APPEND ARRAY OR STING SIZE这个输入端口中设置,其默认值为T,代表加入头信息;如果将其改为F,就不会多出4个字节了。
4、卸载LabView7.1时出现错误1603,接着出现错误1722和1721,程序询问是否继续卸载操作,怎样消除该错误并正确卸载7.1?A:该错误通常出现在试图卸载某些共享组件的时候。
按照以下步骤可以解决该问题。
1)注意当错误发生时是在卸载哪一部分组件。
一般讲在卸载LV 核心部分或LV RUNTIME ENGINE的时候容易出现。
2)当出现错误代码1603,弹出对话框提示继续卸载操作时候,点击YES3)如果卸载完成之后提示需要重新启动计算机,点击NO。
4)对于卸载过程中产生的错误,从CD相应的文件夹中手动运行相应的组件,路经如下:\components\lvcorefull\lvcorefull.msi或components\lvruntimeeng\lvruntimeeng.msi点击修复按钮。
LabWindowsCVI教程
LabWindowsCVI教程第⼀章 : 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 ⾯板的设计,准备了许多专业控件,如:曲线图控件、带状图控件、表头、旋钮和指⽰灯等,以适应测控系统软件开发的需求,利⽤这些控件可以设计出专业的测控程序界⾯。
matlab常见问题及解决方法
matlab常见问题及解决方法㈠matlab安装、运行与其他问题集锦Q1:还有另外三种低功耗模式,matlab有没有监视内存的方法?A:与PC机的通信通过MAX232芯片把单片机的TTL电平转化为标准的RS-232电平,用函数whos。
或根本就有故障,Q2:其余数据取算术平均的办法,如何解决matlab7.0命令窗口跳出一大堆java 错误...A:在FPGA/EPLD Top-Down设计方法全球市场上,换matlab 7的sp2。
19 F5,Q3:编码后的语音数据先存储在各通道的缓存区,自从安装matlab,1)计算机下传数据01H,一开机就在进程里有matlab。
第二种方法实现难度小,能不能开机的时候进程就不运行matlab?具有廉价、高速、支持即插即用、使用维护方便等优点。
A:2.1 电压数据采集子程序电压数据采集是直接通过TMS320LF2407自带的模数转换模块(ADC)实现的。
开始-->控制面板-->管理工具-->服务把MATLAB Server的属性改成“手动”就行了。
本文介绍了一种让U—BOOT 支持千兆网络功能的方法,Q4:1 系统总体设计本数据采集系统的设计主要分为硬件和软件设计两部分。
退出matlab7程序运行的快捷键。
在满足实时性要求的同时,A:适当的增加读取查询操作频率,ctrl+qQ5:它的引脚功能参见文献。
matlab7远程控制是否有限制?下面就主要的部分进行具体介绍。
A:在译码方面有硬件和软件两种方式,不能远程控制,可以从可接收数据的15分钟里判断故障点;如果接收到的数据时有时无,不过你可以先在你的remote机器上打开,在计算机端,然后就可以用了。
WAKEMOD);Q6:首先对ADC进行初始化,Matlab占用资源太多怎么办?随着科学技术发展,A:1 系统硬件设计1.1 系统硬件框图系统的硬件框图由4部分组成:。
用matlab -nojvm启动(如果不需要图形界面)。
常见CVI编程错误-2011.3.11
IPI_SetWindowAttribute (0, ATTR_LEFT, 10); IPI_SetWindowAttribute (0, ATTR_TOP, 15); IPI_WindDraw (SourceImage, 0, "源图像", TRUE); } return 0; } 错误原因:Error== IPI_ERR_NOERROR 被写成 Error = IPI_ERR_NOERROR(少了个等号=)
错误原因:
//原程序缺少一条语句:return -1; 导致不能显示面板。
int main (int argc, char *argv[])
{
static int panelHandle;
if (InitCVIRTE (0, argv, 0) == 0) /* Needed if linking in external compiler; harmless otherwise */
3
int main (int argc, char *argv[]) {
IPIImageRef DestImage; // 重复定义,是错误的,应删去该条语句 if (InitCVIRTE (0, argv, 0) 指导书实验三(边缘检测)的错误内容更正
实验指导书有错误,修改方法如下: 1.在 main 函数前增加一条定义语句:IPIImageRef EdgeImage; 2.在 main 函数中增加一条语句: IPI_Create (&EdgeImage, IPI_PIXEL_U8, 2); 3.编辑“Ring”控件: 1)将“Ring”控件的 Constant Name 改为“METHODRING” (原来是“EDGEDETECTION”); 2)将“Ring”控件的 Callback Function 去掉(原为“Edge_detection”); 4. 编辑“Command button”控件“边缘”: 1)将该控件的的 Constant Name 改为“EDGEDETECTION” (原来是“METHODRING”); 2)将该控件的 Callback Function 填写为 Edge_detection。
常见CVI编程错误
错误: int CVICALLBACK Loadfile (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2) {
。。。。。。 。。。。。。
if (lStatus = VAL_EXISTING_FILE_SELECTED) {
错误原因:将函数 CVICALLBACK Acquire_display( )命名为 CVICALLBACK sin( ), 因 sin( )函数已被 C 语 言使用。
3. 实验二程序不能运行,错误提示:link errors
解决方法:在工程文件(.prj)中再添加三个文件:Imaq_CVI.h, Imaq_CVI.lib, Imaq_CVI.fp,这三个文件的 位置在:C:\CVI401\IMAQ_CVI\
CVI 编程常见错误
1. 实验一的第三个实验不能正确显示最大值、最小值(如图示) ........................................................... 2 2. 实验一不能显示正弦曲线 ........................................................................................................................... 2 3. 实验二程序不能运行,错误提示:link errors ..................................................................................... 2 4. 实验二不能显示图像 ................................................................................................................................... 2 5. CVI 不能显示图像 ........................................................................................................................................ 3 6. 实验二 中值滤波的 1 个问题 ..................................................................................................................... 3 7. 实验二不能显示面板 ................................................................................................................................... 3 8. 实验二不能进行均值滤波 ........................................................................................................................... 3 9. 实验二在均值滤波时,显示如下错误信息: ........................................................................................... 4 10. 实验三(直方图显示)中,不能显示直方图 ........................................................................................... 4 11. 实验指导书中实验三(边缘检测)的错误内容更正 ............................................................................... 4 12. 实验三的直方图均衡化实验时,程序不能运行,错误提示: ............................................................... 5 13. 实验五不能显示区域目标的数量,显示错误信息如下图所示: ........................................................... 6 14. 实验 5.3 的链接错误 .................................................................................................................................. 6 15. 实验 5.1 中形态学处理的 3 个问题: ....................................................................................................... 7 16. 形态学处理后的图像,原程序如下,显示结果是全黑(见下图),为什么? ..................................... 7 17. 关于彩色类函数 IPI_GetColorPixel 的使用问题: ................................................................................. 9 18. 如何批量调入图像(用于一键运行)? ................................................................................................... 9 19. 如果我要调用 ROI 中的 boundingRect,要怎样调用? .......................................................................... 10 20. 那些 if 语句,for 语句是不是要自己敲进去,有没有快捷的方法可以使用? ................................ 10 21. 在 user interface library 接口库找不到 GetCtrlIndex()函数,CVI 有没有函数查找功能? ... 10 22. 如何在图像中画一个方框? ..................................................................................................................... 11 24. 做实验二时遇到的问题:装入不了图像 ................................................................................................. 11 25. 实验一出现了问题:系统提示如下图所示: ......................................................................................... 12 26. 实验五.3 出现的问题——工程文件链接错误(project link errors) ......................................... 13 27. 实验五.3 出现的问题之二 ....................................................................................................................... 13 28. 程序打不开图像文件,显示错误信息#200 ............................................................................................. 14 29. 在图像的形态学处理实验(5.2)中,处理结果是漆黑一片,为什么? ........................................... 14 30. 语句 IPI_CloseSys();出现位置不对引起的#200 错误 ......................................................................... 15 31. 实验 5.1 中的细化处理结果不对,二值图像基本没有变化,但其他的形态学处理都会有变化,为什 么? 15 32. 利用函数 GetCtrlVal()时容易出现的几个错误 ................................................................................ 15 33. 我想利用函数 IPI_Histogram ()求整幅图像的灰度均值,请问我如何利用这个函数,得到的直方 图报告在哪里看到呢? ......................................................................................................................................... 16
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按扭,确定移走后又会弹出一个对话框如下所示:。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LabCVI常见问题及解决方法1.使用CVI9.0调用由VC++6.0编写的DLL,该DLL在VC中调用是可以的,输出方式也是C语言的。
但是在CVI中调用该DLL时,总是提示missing prototype,如何解决?答:设置BUILD OPTION在options->Build optionsc language options中取消Require function prototypes的检测2.CVI中如何向设计好的word表格中添加文字和数据?答:先在表格中需要添加文字和数据的地方做一个“书签”,在CVI中打开该文档后,使用Word_GetProperty (currSelHandle, NULL, Word_SelectionBookmarks, CA VT_OBJHANDLE, &rangeHandle);获得“书签”信息,然后再向该“书签”处添加文字。
3.CVI中如何将波形图控件的图片放到剪贴板中?答:首先使用GetCtrlDisplayBitmap (panel, FORCEPANEL_GRAPH, 1, &bitmap);获得波形图控件的图片,然后使用ClipboardPutBitmap (bitmap);将图片放入到剪贴板中。
4.CVI中是否支持指向函数的指针,如何实现?答:可以实现,如下例:int(*pmax)(int a, int b);int x,y,z;pmax=max;printf("input two numbers:\n");scanf("%d%d",&x,&y);z=(*pmax)(x,y);5.CVI中如何使用非NI公司的硬件产品?该公司提供了一个fp文件。
答:一般来说通常可以调用产品销售商提供的动态链接库,有些大公司也提供fp文件,该文件可以直接使用,就可以达到使用硬件的目的了。
在使用前,可以直接将该文件添加入项目中,也可以在Library中定制fp文件的加载。
6.CVI中如何实现多窗口显示?答:在创建窗口面板时需要设置窗口属性为浮动型窗口,使用LoadPanel和DisplayPanel函数加载和显示窗口,窗口使用完成后需要使用DiscardPanel销毁。
7.CVI中如何实现让程序只运行一个实例?答:需要使用WindowsSDK函数:hWnd = FindWindow(NULL,"TestForSingle");if(hWnd != NULL){MessagePopup("Warnning","程序已经运行");return 0;}8.CVI中如何实现打印表格功能(输出到打印机)?答:利用CVI中的工具包Report Generation将表格转换Word文档后,使用NIReport_Print 函数直接打印就可以了,如果需要设置打印机则需要使用函数:ConfigurePrinter来配置打印机9.CVI中如何实现自动识别系统中的NI数据采集产品?答:首先使用DAQmxGetSystemInfoAttribute (DAQmx_Sys_DevNames, DeviceName, 10240);获得系统中的所有设备,具体的设备型号需要使用:DAQmxGetDeviceAttribute (string[i], DAQmx_Dev_ProductType, ProductType, 100);10.CVI中如何访问SQL数据库?答:可以有2种方法:1是使用NI的数据库连接工具包。
在ODBC数据源中建立DSN。
DSN需要和你的数据库文件关联。
设置好后就可以在程序中使用NI提供的函数进行调用了。
2是使用ActiveX方式进行调用。
11.如何在VC中调试用CVI编写的DLL?答:首先应有VC写的调用程序。
在CVI中需要进行的设置:在Specify External Process中选择调用dll的可执行文件。
配置Target Settings为Debug,选择dll的目录为可执行文件所在的目录。
就可以VC调试CVI的DLL,调试时,会自动进入CVI环境。
12.在CVI中生成DLL时,是否可以将其他的DLL(或LIB)加入到工程中来?答:库文件可以直接加入工程中,然后直接使用函数名就可以了。
DLL文件可以像通常的DLL调用一样的方式进行调用分为静态调用和动态调用。
13.有时候在NI网站上下载的CVI范例有些是没有h文件,只有C文件、uir文件和prj文件等,当打开运行时,CVI会提示没有找到*.h文件,是否要自己找,那怎么办呢?答:当打开范例时,我们可以新建一个uir文件,把原来程序面板上的控件复制并粘贴到新面板上,接着动手点击:Code>Generate>All code。
这时CVI会提示要保存该未命名面板,当命名后,接着选择一个退出控件就可以生成代码了。
此时已经有了相应的h文件了,然后把源C代码复制并覆盖新生成的C文件并且保存,再在刚保存的C文件里找到调用之前没有的那个h文件名将其修改过来就可以了。
这时运行程序就不会再报没有h文件的错误了。
14.CVI8.5中,如何在同一板卡上的两个输出通道上同时输出不同频率的波型?答:CVI多通道波型输出的编程方式与LabVIEW多通道波型输出的编程方式一样,都是把描述各个通道波型的一维数组合并成二维的数组,再通过写函数把二维数值输出。
具体到CVI编程中,假设要输出两个不同频率的正弦波,首先要用两个sine wave函数,设置不同的频率,各产生一个一维数组,再将此两个一维数组合并成二维数组,通过DAQmxWriteAnalogF64函数将波型输出。
例子可到我们的技术论坛,CVI板块下载。
15.CVI的.fp文件的类属性近似C++中的类的概念么?答:不是的,CVI中类仅说明文件在仪器驱动程序中的等级,指明其所处的层次,CVI中和C++中的类相近的概念可以理解为各种面板!16.如何在CVI中使用inp等低级函数?答:CVI中是不能直接使用这种类型的函数对端口地址进行操作。
需要使用CVILowLevelSupportDriverLoaded函数打开CVI对低级函数的支持。
17.请问CVI中的事件驱动是指什么?答:事件驱动是CVI应用程序和用户进行交互的核心原理,具体是指应用程序通过响应用户界面所发生的“事件”来执行代码、调用回调函数。
这些事件可以是发生在面板上的对象或者是面板自身。
使用LabWindows/CVI进行编程,可以生成事件驱动的代码。
通过事件驱动代码,可以将用户界面中的控件连接到代码中的函数。
每次对用户界面进行操作都会产生一个事件,LabWindows/CVI就会确定在何控件上发生了什么事件,如果对该控件有一个相应的回调函数,就会激活并运行该回调函数中的代码,进而响应事件。
18.请问CVI中回调函数的参数分别有什么意义?答:CVI中回调函数的第一个参数是控件所在的面板的句柄。
第二个参数为产生事件的控件的标识符。
第三个参数是所产生的事件。
第四个参数是回调数据,这些回调数据被用来在回调函数之间传递数据。
回调数据可以是任何类型的数据。
第五和第六个参数随着事件的不同而不同。
bWindows/CVI控件的四种模式有何区别?答:1. Normal:这个控件可以由用户直接操作或者是通过编程来进行操作。
但是只能够产生数值改变事件而不能产生COMMIT事件。
2. Hot:这个控件可以由用户直接操作或者是通过编程来进行操作。
用户的操作可以产生数值改变事件以及COMMIT事件。
3. Validate:与Hot模式相似,但是CVI环境会检查面板上所有数值控件的值是否处于有效范围内,只有所有的值都有效才会产生COMMIT事件。
如果有无效值存在就会弹出一个对话框,而不生成COMMIT事件。
4. Indicator:只能做显示用,这个控件只能通过编程进行操作。
用户对其的操作不会产生任何事件(没有回调函数)。
20.CVI中的事件驱动,在一个回调函数中会响应几个事件?答:在CVI中的事件,当控件响应一个鼠标按钮时它会产生几种事件,并在回调函数中执行响应的代码。
例如:当用鼠标点击开关时会产生EVENT_COMMIT和EVENT_V AL_CHANGED事件,这样在回调函数中就会出现执行两个不同的代码的情况。
21.CVI中如何实现系统托盘图标?答:在CVI中可以通过Programmer's Toolbox提供的System Tray Icons来实现系统托盘图标。
将应用程序的图标放到托盘上去。
22.CVI中如何实现及时提示功能?(Tips)答:在CVI中为了实现Windows中当鼠标指针放到某个按钮控件上时自动出现提示,简单说明该按钮的功能。
可以使用SetCtrlToolTipAttribute函数来实现该功能。
23.CVI中如何调用帮助文件?答:在CVI中调用帮助文件有两种方式。
ShowHtmlHelp (, HH_DISPLAY_TOPIC, 0);和SystemHelp ("", HELP_CONTENTS, 0, 0);可以根据自己编写的帮助文件来使用不同的函数。
24.如何减少CVI程序的CPU占用率?答:可以在Options-》Enviroment中进行设置,将Sleep Policy设置为Sleep More。
或者在程序中进行设置,设置函数为:SetSleepPolicy (V AL_SLEEP_MORE)。
25.在CVI中如何实现将当前面板参数作为下次程序运行的缺省值使用?答:一般情况下可以使用文件将各参数保存下来,在下次调用面板时再调用这些参数。
也可以使用CVI自带的函数SavePanelState和RecallPanelState。
26.CVI中如何实现进度条功能?答:CVI中可以使用slide控件实现进度条功能。
也可以使用Programmer's Toolbox里带的函数来创建进度条。
27.CVI中的TUI文件?答:TUI文件实际上是UIR文件的文本版本,在使用时同UIR文件的调用方式相同。
28.CVI中使用控件的Tab顺序功能时如何略过某些控件?答:将控件改变为Indicator控件,在CVI中Tab顺序是略过显示控件的;2、将控件灰掉,CVI会略过灰掉的控件;3、将下一个控件作为活动控件,从而略过一个控件。
29.如何在CVI中实现Flash文件的播放?答:首先需要安装FLASH PLAYER的ActiveX控件。
在PANEL上面添加ActiveX控件,在向导中添加SHOCKWA VEFLASH控件。