LabCVI常见问题及解决方法

合集下载

初学LabVIEW数据采集中常见的问题

初学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 传输速率与使用的系统设备相关,如处理器速度等。

LABVIEW学习中常遇到的50个问题及解答

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-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 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文件,该文件可以直接使用,就可以达到使用硬件的目的了。

CVI编程常见问题与错误-2012.9

CVI编程常见问题与错误-2012.9
3根据实验指导书内容做出来的窗口每一种形态学处理都只能处理一次多点几次该按钮也无法在前一次的基础上进行再一次地处理那么如果要在该实验基础上实现这一功能可以吗
CVI 编程常见Байду номын сангаас题或错误
1. CVI编程时,在程序中插入函数的方法?如何了解该函数隶属那个函数库? ..................................... 3 2. 如何查看或者找到一个CVI或IMAQ Vision的函数? ............................................................................... 4 3. 实验一不能显示曲线—采用了错误的显示控件 ....................................................................................... 5 4. 实验一不能显示正弦曲线 ........................................................................................................................... 5 5. 实验一显示不了任何信号波形曲线? ....................................................................................................... 6 6. 实验 1.2 出现的显示问题 .....................................................................................................

一些CVI问题的解决方法

一些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的接口函数。

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 ⾯板的设计,准备了许多专业控件,如:曲线图控件、带状图控件、表头、旋钮和指⽰灯等,以适应测控系统软件开发的需求,利⽤这些控件可以设计出专业的测控程序界⾯。

LabWindowsCVI基础教程


第 16 页
K 按扭,便会弹出如下图所示的源代码(Code)窗:
其窗中的程序代码如下所示:
#include <cvirte.h> #include <userint.h> #include "FirstSample.h" static int panelHandle; int main (int argc, char *argv[ ] ) {
或者直接从桌面起动 CVI 的快捷方式,双击桌面 National Instrument CVI 图标
当 LabWindows/CVI 打开后你就会见到如下所示的一个空的项目(Project) 窗:
第一步:创建用户界面
创建控件元素: 从 Project 窗中选择:File>>New>>User Interface(*.uir)…创建一个用户
{ switch (event) { case EVENT_COMMIT:
break; } return 0; }
本教程面向的是那些从未使用过 LabWindows/CVI 的读者,但是假设读者以有了 C 语言的基础并且熟悉 Windows 2000/9x/NT 操作系统。在每一章节的学习中,作者都是通 过一个具体的实例让读者迅速的掌握本章的知识点;而不是长篇大论,述及边枝细叶, 反而使读者望而却步,只见树木,不见森林。

第 17 页
LabWindows/CVI 基 础 教 程
DiscardPanel (panelHandle); return 0; }
int CVICALLBACK AcquireCallback (int panel, int control, int event, void *callbackData, int eventData1, int eventData2)

常见CVI编程错误-2011.3.11

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。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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文件,该文件可以直接使用,就可以达到使用硬件的目的了。

在使用前,可以直接将该文件添加入项目中,也可以在Library中定制fp文件的加载。

6. CVI中如何使用非NI公司的硬件产品?该公司提供了一个fp文件。

答:一般来说通常可以调用产品销售商提供的动态链接库,有些大公司也提供fp文件,该文件可以直接使用,就可以达到使用硬件的目的了。

在使用前,可以直接将该文件添加入项目中,也可以在Library中定制fp文件的加载。

7. CVI中如何实现多窗口显示?
答:在创建窗口面板时需要设置窗口属性为浮动型窗口,使用LoadPanel和DisplayPanel函数加载和显示窗口,窗口使用完成后需要使用DiscardPanel销毁。

8. CVI中如何实现让程序只运行一个实例?
答:需要使用WindowsSDK函数:hWnd = FindWindow(NULL,"TestForSingle");
if(hWnd != NULL)
{
MessagePopup("Warnning","程序已经运行");
return 0;
}
9. CVI中如何实现打印表格功能(输出到打印机)?
答:利用CVI中的工具包Report Generation将表格转换Word文档后,使用NIReport_Print 函数直接打印就可以了,如果需要设置打印机则需要使用函数:ConfigurePrinter来配置打印机
10. CVI中如何实现自动识别系统中的NI数据采集产品?
答:首先使用DAQmxGetSystemInfoAttribute (DAQmx_Sys_DevNames, DeviceName, 10240);获得系统中的所有设备,具体的设备型号需要使用:DAQmxGetDeviceAttribute (string[i], DAQmx_Dev_ProductType, ProductType, 100);
6. 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++中的类相近的概念可以理解为各种面板!。

相关文档
最新文档