LabWindows/CVI安装教程
1、从知识兔下载完软件资源,将其解压出来,找到软件包资源文件夹“LabWindowsCVI 2013破解版”里面一个名为“NILWCVI2013SP2”的可运行程序文件,双击打开将它运行2、弹出一个提示框,上面的大致内容就是告诉你,你接下来要做的是将软件的安装文件通过一个自解压程序解压出来,其实知识兔可以不必理会。直接点击“确认”按钮即可
3、之后就是解压之前的一些配置了,如安装文件解压的位置。这里知识兔小编要给大家科普一个小知识,知识兔小编推荐大家将所有的软件安装至D盘或者是其它盘符,因为国内大多数用户都是将系统放置在C盘的,所以C盘在作为一个系统引导的盘符情况下,知识兔小编不介意大家在C盘存放过多的软件,那样会导致你的系统盘垃圾越来越多,从而导致您电脑系统的运行速度越来越慢,所以,知识兔点击“Browse...”按钮,对安装文件的解压位置进行一下自定义吧;接下来就是安装文件路径下面的两个复选框 了,这两个复选框分别起到了什么作用呢?上面那个“Overwite files without prompting”的意思是,在解压结束后,将一些重要的提示告诉你,这里知识兔小编就不勾选了,因为大部分的功能性的一些东西,知识兔小编在下面会和大家讲到的,那还有一个复选框是什么意思呢?就是如果解压完成之后,自动运行的软件安装包,这一个知识兔小编推荐大家都勾选上,免得大家再去解压路径里手动查找嘛,一切都配置好之后呢,知识兔点击“Unzip”按钮,开始解压文件
4、然后,就请耐心等待下面那条蓝色的解压进度条走完吧!
5、走完之后呢,根据知识兔刚刚所选择的配置,它会自动开启软件安装程序,然后知识兔在软件安装程序界面可以选择好几个操作选项,分别是“Install NI LabWindows/CVI 2013 SP2”、“View Readme”、“Explore the Media”、“Exit”,分别对应的是“安装主程序”、“阅读更新”、“服务许可协议”、“退出”,知识兔选择第一个,也就是“Install NI LabWindows/CVI”(安装应用主程序)
6、之后就会加载出安装向导了,分别需要知识兔填入“Full Name”、“Oraganization”,以及选择是否提前输入注册码,知识兔当然选择下面那个,因为等一下知识兔要进行破解教程,选择好了以后点击“Next”开始下一步
7、然后还是选择软件的安装位置,还是那句话,不推荐将任何东西放在系统盘内(C盘)那样会降低系统的运行速度,点击“Browse...”改变路径,一切都配置完成之后,点击“Next”进行下一步
8、接下来是对安装组件的选择,可以在左边栏目中,左键点击一下某个组件。会弹出选择装或者不装,知识兔小编不介意大家去改变这一部分的任何东西,以免造成软件功能的不完整性,之所以知识兔小编不推荐乱动还是要告诉大家,是告诉那些专业性比较强的小伙伴们的,然后知识兔点击“Next”开始下一步
9、最后还有一个提示框,其内容大致是勾选之后会自动更新软件,知识兔小编介意各位小伙伴们把这个勾去了,毕竟知识兔等一下是要破解的,万一更新之后把知识兔的漏洞给修复了,那就白忙活了,都配置完成之后,点击“Next”进行下一步
10、关于软件协议知识兔当然选择同意了,不然无法使用这款软件,可以看出,如果知识兔不选择同意协议,Next的按钮是灰色的,即不同意将无法进行下一步的操作
11、之后就请耐心的等待安装文件释放完成吧
LabWindows/CVI破解教程
1、安装进度完成后,会弹出一个提示框,大致的意思是让你现在开始运行这款软件,知识兔暂且直接关闭,先不要运行2、然后知识兔找到之前在知识兔下载到的软件安装包资源目录下,有一个名为“NI万能注册机”的可运行程序文件,双击将它打开
3、打开运行之后,可以看到一个关于“CVI 2013””的下拉项,也就是知识兔这款软件的简称
4、然后知识兔右键点击那三个复选框,全部选择Activate...,将其全部点亮,之后就可以关闭破解软件了
5、LabWindows/CVI 2013破解版安装完成,桌面没有快捷方式,知识兔运行开始菜单快捷方式即可开始体验
LabWindows/CVI使用教程
1、在程序初始化的时候,调用CmtNewLock函数来为每个需要保护的数据集合创建线程锁。这个函数返回一个句柄,用户可以使用它在后续的函数调用中指定线程锁。在访问由锁保护的数据和代码前,线程必须调用CmtGetLock函数来获取线程锁。在访问数据后,线程必须调用CmtReleaseLock函数来释放线程锁。在同一个线程中,可以多次调用CmtGetLock(不会对后续调用产生阻塞),但是用户每一次调用CmtGetLock都需要调用一次CmtReleaseLock来释放。在程序退出时,调用CmtDiscardLock函数来释放线程锁资源。下面的代码演示了如何使用LabWindows/CVI Utility Library中的线程锁来保护全局变量。2、LabWindows/CVI Utility Library中的头文件中包含了一些宏,它们分享了配合Utility Library函数使用的类型安全的封装函数。除了分享类型安全,这些宏还帮助避免了多线程编程中的其它两个常见错误。这些错误是在访问数据后忘记释放锁对象,或者是在前面没有获取锁对象时试图释放锁对象。使用DefineThreadSafeScalarVar和DefineThreadSafeArrayVar宏来创建线程安全变量和类型安全的函数供使用和访问。如果需要从多个源文件中访问线程安全变量,请在include(.h)文件中使用DeclareThreadSafeScalarVar或者DeclareThreadSafeArrayVar宏来创建访问函数的声明。DefineThreadSafeScalarVar (datatype, VarName, maxGetPointerNestingLevel)宏创建以下访问函数:
3、如果需要对变量值进行设定而不需要考虑其当前值,那么请调用SetVarName函数。如果需要获得变量的当前值,请调用GetVarName函数。需要了解的一点是,在GetVarName从内存中读出变量值后而在其将变量值返回给你前,变量的值是有可能改变的。
4、下面的代码显示了如何使用线程安全变量作为前面例子中提到的计数变量。
5、检测对GetPointerToVarName的不匹配调用,可以通过DefineThreadSafeScalarVar和DefineThreadSafeArrayVar的最后一个参数(maxGetPointerNestingLevel),来指定最大数目的嵌套调用。通常可以把这个参数设为0,这样GetPointerToVarName在检测到同一线程中对GetPointerToVarName的两次连续调用而中间没有对ReleasePointerToVarName进行调用时,就会报出一个运行错误。例如,下面的代码在第二次执行的时候会报出run-time error的错误,因为它忘记了调用ReleasePointerToCount函数。
6、如果代码中必须对GetPointerToVarName进行嵌套调用时,那么可将maxGetPointerNestingLevel参数设为一个大于零的整数。例如,下面的代码将maxGetPointerNestingLevel参数设定为1,因此它允许对GetPointerToVarName进行一级嵌套调用。
7、使用LabWindows/CVI Utility Library的线程安全队列,可以在线程间安全地传递数据。当需要用一个线程来采集数据而用另一个线程来处理数据时,这种技术非常有用。线程安全队列在其内部处理所有的数据锁定。通常说来,应用程序中的辅助线程获取数据,而主线程在数据可用时读取数据然后分析并/或显示数据。下面的代码显示了线程如何使用线程安全队列将数据传递到另外一个线程。在数据可用时,主线程利用回调函数来读取数据。
注意事项
1、只有当表格不是面板上的活动控件(active control)时,才会产生差异。因此,如果表格是活动控件(active control),您便需要通过编程,在更新该表格之前先激活另一控件,然后再激活该表格。用此方法更新表格,直至用户在下次调用ProcessDrawEvents之后,更新才会被显示出来。这十分适合用户进行重复升级。LabWindows/CVI功能特色
1、交互式程序开发,LabWindows/CVI将源代码编程、32位ANSI C编译、链接、调试以及标准ANSI C库等集成在一个交互式开发平台中,采用简单直观图形用户界面设计,利用函数面板输入函数的参数,采用事件驱动和回调函数方式的编程技术,有效地提高了工程设计的效率和可靠性。2、功能强大的函数库,如接口函数库、信号处理函数库、Windows SDK等,利用这些库函数可以方便地实现复杂的数据采集和仪器控制系统的开发。同时LabWindows/CVI附加了各种功能的软件开发包,如数据库软件包、Internet软件包、小波分析软件包等,大大增强了LabWindows/CVI的性能。
3、灵活的程序调试手段,LabWindows/CVI分享了单步执行、断点执行、过程跟踪、参数检查、运行时内存检查等多种调试程序。
4、高效编程环境,LabWindows/CVI以其面向虚拟仪器的交互式开发环境满足了用户对软件不断变化的要求,在产品设计中,可以快速创建、配置并显示测量。LabWindows/CVI可以自动生成代码、编译和链接,省去了手工编写,更有利于系统的开发。
5、开放式的框架结构,在LabWindows/CVI环境中可以结婚使用标准的ANSI C源文件、obj文件、生动链接库(DLL)。也可以将软件中的仪器驱动库与其他标准C编译器结合使用,无需更改开发工具。同时,可以在不同的工作小组直接共享函数模块和虚拟仪器程序。
6、集成式的开发环境,LabWindows/CVI是集成式的开发环境,可用于创建基于DAQ、GPIB、PXI、VXI、串口和以太网的虚拟仪器系统。这一开发方式结合了交互式、简单易用的开发方式与ANSI C代码的强大的编写功能和灵活性。LabWindows/CVI中的交互式开发工具和函数库可以方便地四下自动化测试系统]实验室研发、数据采集监视项目、验证测试和控制系统的设计。
7、LabWindows/CVI的应用范围,LabWindows/CVI只要应用于各种测试、控制、故障分析及信息处理软件的开发中,与NI公司开发的另一个虚拟仪器开发工具LabVIEW相比,其更适合中、大型复杂测试软件的开发。基于LabWindows/CVI设计的虚拟仪器在无损检测、电力仪表系统、温控系统、凌晨控制系统、故障诊断和医疗等领域中发挥着重要作用。LabWindows/CVI已经成为测控领域最受欢迎的开发平台之一,并且已得到广泛的应用。
8、LabWindows/CVI 的功能强大在于它分享了丰富的函数库。利用这些库函数除可实现常规的程序设计外,还可实现更加复杂的数据采集和仪器控制系统的开发。
9、数据采集。IVI库、GPIB/GPIB 488.2库、NI-DAQmx库、传统的NI-DAQ库、RS-232库、VISA库、VXI库以及NI-CA
10、数据分析。格式化IO库、分析库以及可选的高级分析库。
11、GUI库。使用LabWindows/CVI 的用户界面编辑器可以创建并编辑图形用户界面(GUI),而使用LabWindows/CVI 的用户界面库函数可以在程序中创建并控制GUI。此外,LabWindows/CVI为GUI 面板的设计,准备了许多专业控件,如:曲线图控件、带状图控件、表头、旋钮和指示灯等,以适应测控系统软件开发的需求,利用这些控件可以设计出专业的测控程序界面。
12、网络和进程间通信库。动态数据交换(DDE)库、TCP库、ActiveX库、Internet库、DIAdem连接库、DataSocket库等。
13、除此之外,用户可以在CVI中使用ANSI C库中的全部标准函数。
14、通过SetTableCellRangeVals函数,尽量同时更新多个单元格。这样便能降低大批量更新单元格时的开销(overhead)。若用户希望每次更新一个单元格(例如:用户或许希望更新拥有不同数据类型的某一行),可使用SetTableCellAttribute(...,ATTR_CTRL_VAL,...)函数,而非SetTableCellVal函数。
15、PXI是业界标准的基于PC的开放式自动化测试平台,分享了高性能的模块化仪器,包括7½位直流、26 GHz射频、集成式定时和同步功能,以及适用于验证和生产测试的高吞吐量。
16、CompactRIO是高级控制与监测应用的理想选择。 借助于可重配置I/O (RIO) FPGA技术,它将坚固的嵌入式架构与实时处理和工业I/O模块相结合。
新版特性
1、由于LabWindows/CVI的异步定时器仪器驱动使用Windows多媒体定时器来实现异步定时器回调函数,所以用户可指定的最小间隔是随使用的计算机不同而变化的。如果用户指定了一个比系统可用的最大分辨率还小的时间间隔,那么可能会产生不可预知的行为。不可预知的行为通常发生在设定的时间间隔小于10ms时。同时,异步定时器仪器驱动使用一个多媒体定时器线程来运行单个程序中注册的所有异步定时器回调函数。所以,如果用户希望程序并行地执行多个函数,那么NI公司推荐使用LabWindows/CVI Utility Library中的线程池函数来代替异步定时器函数。
2、LabWindows/CVI的GPIB/GPIB 488.2库中,可以调用ibnotify来注册事件发生时GPIB/GPIB 488.2库调用的回调函数。你可以为每一个电路板或器件指定一个回调函数。可以为事件指定调用的回调函数。GPIB/GPIB 488.2库会创建用于执行回调函数的线程。
3、 在LabWindows/CVI的虚拟仪器软件构架 (VISA) 库中,你可以调用viInstallHandler函数来注册多个事件句柄(回调函数)用于在特定的ViSession 中接收VISA事件(I/O完成、服务请求等等)类型。VISA库通常创建独立的线程来执行回调函数。VISA可能会对一个进程中的所有回调函数使用同一个线程,或者对每个ViSession 使用单独的线程。你需要为某个指定的事件类型调用viEnableEvent函数以通知VISA库调用已注册的事件句柄。
4、在LabWindows/CVI VXI库中,每个中断或回调函数类型都有自己的回调注册和使能函数。例如,为了接收NI-VXI中断,你必须调用SetVXIintHandler和EnableVXIint函数。VXI库使用自己创建的独立线程来执行回调函数。对于同一进程中所有的回调函数,VXI都使用相同的线程。
下载体验