labview cvi 知识

上传人:小** 文档编号:89347187 上传时间:2019-05-23 格式:DOC 页数:16 大小:133.50KB
返回 下载 相关 举报
labview cvi 知识_第1页
第1页 / 共16页
labview cvi 知识_第2页
第2页 / 共16页
labview cvi 知识_第3页
第3页 / 共16页
labview cvi 知识_第4页
第4页 / 共16页
labview cvi 知识_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《labview cvi 知识》由会员分享,可在线阅读,更多相关《labview cvi 知识(16页珍藏版)》请在金锄头文库上搜索。

1、Labwindows扫盲+技巧贴,CVI学习必看1.、CVI适合什么人使用?CVI是基于ANSI C的快速开发环境,适用于有C,C+基础。使用VB,VC,BC运用控件式组织用户界面的工程师。2、CVI有几种版本?NI分为labwindows Full development system,labwindows base development system。价格分别为20450,10220RMB。完整版RMB20450 仪器控制、数据采集和自动化测试的首选 完整的分析库,包括曲线拟合和信号处理 因特网连接 调用Measurement Studio程序基本版RMB10220 集成式开发环境 完整

2、的专业用户控件组 仪器I/O和DAQ助手 IVI驱动连接 .NET和ActiveX支持目前最新的是8.11版,下图是CVI的版本历史:3、CVI开发的程序能否独立运行?可以。和所有的开发工具一样,CVI编写的程序只要提供CVI运行支持库(CVI runtime)即可。4、CVI的运行支持库在哪里下载?LabWindows/CVI Run-Time Engine 8.1.1 for Windows 2000/Vista x64/Vista x86/XPhttp:/ steps.下可以更改EXE的图标,版权信息等等。7、新手怎么开始学习CVI?新手可以先看看这些书籍和资料。http:/ (C:,

3、&totalBytes64, &freeBytes64);diskSpaceMB = (double)totalBytes64.hiBytes * 4096. +(double)totalBytes64.loBytes/1048576.;freeSpaceMB = (double)freeBytes64.hiBytes * 4096. +(double)freeBytes64.loBytes/1048576.;9、cvi中如何打开别的应用程序文件,如Doc,PDF,HLP?OpenDocumentInDefaultViewer (c:aaa.pdf, VAL_NO_ZOOM);10、怎么在CV

4、I中使用非NI公司的PCI板卡?其它厂家虽然没有NI这样的FP文件或向导,但都提供DLL动态链接库使用。VCBC,CVI通用。11、如何使用DLL?需要DLL文件和H头文件,LIB文件。#inlcude 头文件名.h加入CVI中。将*.lib文件加入工程中。工程右击add file.即可使用DLL。12、没有LIB文件如何使用DLL?在CVI菜单中打开DLL相应的.h文件。OptionGenerate DLL Import Library选择DLL文件,即可生存LIB文件。13、如何根据DLL和.H文件看到C代码?OptionGenerate DLL Import source选择DLL文件,

5、即可生存C文件。不过只有函数定义,源代码就不用想了,现在还没有DLL的破解。14、如何创建DLL程序文件?BuildTarget TypeDynamic Link Library ,即可将当前的工程生存DLL形式。同理Static Library生存Lib形式。15、运行时窗口的响应慢,显示不及时?CVI是事件驱动式的运行方法,排队响应个个事件。造成显示滞后。需要强制在函数中加入ProcessSystemEvent()。当然有效的方法是使用CVI或API的多线程技术。16、CVI中获取本地计算机的IP地址可以调用 GetTCPHostAddr 函数。需要注意的是,该函数获取的是当前程序运行的电

6、脑的默认IP地址。GetTCPHostAddr 函数会向Windows操作系统获取所有可用的IP地址的列表,但返回的只是其中的第一个。同样地,如果要获取该电脑的所有IP地址,可以调用GetAllTCPHostAddresses 函数来实现。17、CVI如何实现右键菜单功能?调用编辑好的右键菜单可以使用以下两个函数实现:menuHandle = LoadMenuBar (0, popupmenu.uir, MENUBAR);RunPopupMenu (menuHandle, MENUBAR_MENU1, panel, eventData1, eventData2, 1, 1, 1, 1); 18

7、、CVI对多线程的如何支持?CVI对多线程的支持(1)概念篇【 原帖地址:http:/ 多线程对于windows应用程序来说,并不是什么先进的技术,打开你的任务管理器,选择“进程”分页,点击菜单的在“查看”选择列,在“线程计数”前打勾,确定后你在“进程”分页里头看到现在在运行的绝大多数程序都基于2个以上的线程。那么进程线程的概念以及他们之间的关系又是什么呢? 线程技术是指开发架构将应用程序的一部分分离为“线程”,使线程与程序其余部分执行步骤不一致。线程是一种特殊的对象,是操作系统执行多任务的一部分,它允许应用程序的一部分独立于其他对象而单独运行,因此也就脱离了应用程序的常规执行顺序。 目前主流

8、的Windows系统都是基于多任务机制,即可同时运行多个应用程序(“应用程序”这个词并不恰当,恰当的说法是“进程”)。当启动应用程序时,系统就会为该应用程序分配所需的内存以及其他资源。内存和资源的物理分离叫做进程。换言之,进程是应用程序的一个运行实例,当然,应用程序可以启动多个进程。每个进程至少有一个基本线程(主线程)。线程与数据一起隔离在某一物理区域,在进程中声明的数据可通过该线程进行访问。 Windows操作系统为抢占式多任务运行机制,即采用时间片轮换的方式来执行多任务,时间片轮换的基本对象是线程。操作系统为每一个线程分配时间片,让该线程在这个时间段内运行,之后中断该线程的运行,启动另外的

9、线程执行。多线程技术的优势在于将进程分解,在主线程外产生一个或几个辅助线程,用于完成如数据采集、网络访问、数据存储等后台工作。CVI对多线程的支持(2)基本原理【原帖地址:http:/ 在典型的LabWindws/CVI多线程程序中,使用下线程创建、显示并运行用户界面,在次线程中,运行其它的对时间要求很高的操作3。LabWindows/CVI提供了两种设计辅助线程的机制,分别为线程池(thread pools)和异步定时器(asynchronous timers),线程池适用于需要不连续地执行多次或在循环中执行的任务,而异步定时器适用于在固定时间间隔内执行的任务(只支持一个辅助线程),若要使用

10、多个辅助线程,只能采用线程池技术。 多线程的创建 线程池机制中辅助线程的创建是通过调用实用库(Utility Library)的CmtScheduleThreadPoolFunction Adv函数,把想要在次线程中运行的函数名传递给它,线程池调用这个函数在它的其中一个线程中运行。根据线程池的设置和当前状态,线程池创建一个新的辅助线程,使用一个已经存在的空闲线程,或等待一个活动的线程空闲来执行需要调度的函数。 多线程间的数据安全 数据保护是在使用辅助线程时必须要解决的关键问题,防止多个线程同时操作某一变量,导致逻辑错误,是多线程协调运行的重要内容。在CVI中,系统提供了线程锁(blocked)

11、、线程安全变量(thread safe variables)和线程安全队列(thread safe queues)三种机制来保护共享数据,实现线程间安全的数据传输。其中线程安全队列保护机制传输数据量大;且读取数据和写数据互不影响;数据传输基于事件模式,可以注册读取数据和写数据回调函数在队列数据达到指定数量才被调用。基于多线程监控程序的典型应用为:辅助线程采集处理大量数据并传递给主线程进行显示,线程安全队列机制是最佳的选择。写入线程把要传送给读出线程的数据打包后写入到数据队列中,数据队列采用先进先出的工作模式,每写入一个数据包,系统调用在读出线程指定的回调函数来处理数据。选择合适的队列长度后,即

12、使读出线程没有完成上一个数据包的读出,写入线程依然可以安全的写入下一个数据,对数据队列可以同时进行读写操作,线程间的数据传输是安全可靠的。监视控制辅助线程 监视控制辅助线程的运行,是多线程协调运行的另一个关键问题,CVI提供了CmtGetThreadPoolFunc- tionAttribute函数来监视辅助线程的状态。在多通道、定时数据采集的监控软件中,多个辅助线程定时处理某项任务,直到主线程通知其停止。CVI提供的异步定时器机制可以方便的实现以上功能,但异步定时器机制只能创建一个辅助线程。结合线程池机制和定时器控件成为可行的选择之一。CVI在创建面板的线程中调用该面板控件的回调函数,即要在

13、辅助线程中运行某一定时器控件的回调函数,则该定时器控件所在的面板必须在辅助线程中创建。这样,主线程就可以通过开关该定时器来控制辅助线程开始或停止某项任务,实现多个辅助线程定时处理某项任务,且每个线程定时可以不同。19、如何实现CVI窗体的全屏?GetMonitorFromPanel (Main, &monitor);/获得显示器IDGetMonitorAttribute (monitor, ATTR_HEIGHT, &height);/得到高度GetMonitorAttribute (monitor, ATTR_WIDTH, &width);/得到宽度SetPanelSize (Main, height-25,width);/设置窗口高宽度 (高度需要去处任务栏的部分)SetPanelPos (Main, 25, 0);/设置窗口位置但仍会看到状态栏,像游戏一样的全屏还没想

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号