虚拟仪器FAQ集锦.doc

上传人:夏** 文档编号:558392534 上传时间:2023-08-24 格式:DOC 页数:7 大小:57.01KB
返回 下载 相关 举报
虚拟仪器FAQ集锦.doc_第1页
第1页 / 共7页
虚拟仪器FAQ集锦.doc_第2页
第2页 / 共7页
虚拟仪器FAQ集锦.doc_第3页
第3页 / 共7页
虚拟仪器FAQ集锦.doc_第4页
第4页 / 共7页
虚拟仪器FAQ集锦.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《虚拟仪器FAQ集锦.doc》由会员分享,可在线阅读,更多相关《虚拟仪器FAQ集锦.doc(7页珍藏版)》请在金锄头文库上搜索。

1、虚拟仪器问题集锦1.如何减少CVI程序的CPU占用率?回答=可以在OptionsEnviroment中进行设置,将Sleep Policy设置为Sleep More。或者在程序中进行设置,设置函数为:SetSleepPolicy (VAL_SLEEP_MORE)。2.在CVI中如何实现将这次面板参数作为下次的缺省值使用?回答=一般情况下可以使用文件将各参数保存下来,在下次调用面板时再调用这些参数。也可以使用CVI自带的函数SavePanelState和RecallPanelState。3.CVI中如何实现进度条功能?回答=CVI中可以使用slide控件实现进度条功能。也可以使用Programm

2、ers Toolbox里带的函数来创建进度条。4.CVI中的TUI文件?回答=TUI文件实际上是UIR文件的文本版本,在使用时同UIR文件的调用方式相同。5.CVI中使用控件的Tab顺序功能时如何略过某些控件?回答=将控件改变为Indicator控件,在CVI中Tab顺序是略过显示控件的;2、将控件灰掉,CVI会略过灰掉的控件;3、将下一个控件作为活动控件,从而略过一个控件。6.在LabWindows/CVI中如何用多个安全队列(SafeQueue)来实现对多个采集任务的数据保护?回答=一般来说,在编写一个多线程程序时,我们会在默认的线程池(DefaultThreadPool)中建立一个或多个

3、SafeQueue;然后再建立2个新的线程池(NewThreadPool),分别用于数据的采集和处理;在用于采集的线程池中建立多个线程(Thread),分别对应各个板卡或通道;在用于数据处理的线程池(ThreadPool)中建立一个或多个线程来对进行相应的操作。7.在安装NI软件的过程中(包括LabVIEW, CVI, hardware drivers, 或使用了MSI installer进行安装的其它NI软件),出现错误2894致使安装程序被迫中止,如何解决该问题?回答=该问题是微软网站上已经公布的Microsoft Installer常出现的问题之一。已知有两个原因可能导致出现该问题:其一

4、就是错误的或者被破坏了的Riched20.dll存在于用户的计算机上,或用户计算机上的的Riched20.dll文件丢失。其二就是用户的计算机被诸如W32.Nimda.Amm的病毒感染。针对第一种情况,用户需要从其他机器上拷贝正确版本的Riched20.dll文件或者重新安装MSI installer。如果用户的操作系统为Windows95,98或者ME,那么必须下载并安装Instmsi.exe,如果用户使用Windows NT4.0, 2000或者Xp,那么必须下载安装InstMsiW.exe。该执行文件将会修复用户系统里的所有损坏文件。针对第二种情况,用户则需要杀毒并重新安装上述文件。8.

5、LabWindows/CVI中的堆栈大小?回答=LabWindows/CVI中的堆栈大小直接影响可以分配的数组大小。如果数组的大小超过堆栈大小,则会报告错误。该值可以在Options-Build Options中设置。缺省值为:250000。建议使用动态内存分配。9.CVI中如何画极坐标?回答=CVI中没有专门提供画极坐标的控件。可以使用Picture控件自己画,或者使用绘图软件绘制出极坐标图,然后保存为图片再使用canvas控件将图片导入。10.如何在启动CVS之后立即启动下载到CVS上的执行程序?一般有两种方式,其中一种你可以使用LV的工程项来把程序下载到CVS中,那么RTTarget.A

6、pplicationPath=c:ni-rtstartupstartup.rtexe,RTTarget.LaunchAppAtBoot=True这两个设置就会自动被LV设置。如果你是通过FTP把程序下载到CVS上,上述两个标签就得手动设置。 11.CVI中如何进行二维指针的内存分配?回答=具体例子代码如下: p=(ComplexNum*)malloc(3*sizeof(int); for(i=0;i配置通道-设置采样率-设置触发-采集数据-停止任务-清除任务这样的基本顺序。15.CVI中如何使用UDP协议?回答=CVI中没有带有关于UDP协议的fp文件,需要使用winsock来写。16.CVI

7、下如何编写多线程程序?回答=可以使用函数模版中的Utility Library目录下的函数,首先用CmtNewThreadPool (int Maximum_Number_of_Threads, int *Pool_Handle)函数创建一个线程池(也可以使用程序默认的线程池),然后使用CmtScheduleThreadPoolFunction (int Pool_Handle, ThreadFunctionPtr Thread_Function, void *Thread_Function_Data, int *Thread_Function_ID)函数来指定每个线程的回调函数,以实现不同的

8、操作。最后,记住一定要在结束程序的时候调用CmtDiscardThreadPool (int Pool_Handle)函数释放这些线程的系统资源。17.在LabWindows/CVI中如何将自己编写的函数放在函数模版中,使它可以像函数模版中原有的函数那样使用?回答=先新建一个Function Tree,然后在这个Function Tree下新建一个Instrument,并在这个Instrument下建立函数分类(将函数分类管理),再建立一个Function Panel,在上面添加输入输出控件和帮助信息,(如果这个函数没有使用到数采硬件,那么在Option下面将IVI/VXIplug&play

9、Style前的勾去掉)然后选择Tools下的Generate New Source for Fuction Tree,最后只要在自动生成的*.c文件中添加函数的代码并保存,然后就可以像函数面板中的其他函数一样调用了。(下次使用LabWindows/CVI时需要重新载入)18.在没有.LIB和.H文件时,CVI怎么调用DLL??回答=使用SDK中的LoadLibary和GetProcAddress以及FreeLibrary可以实现动态DLL的调用。19.CVI可以做不规则界面吗?回答=这是可以的,可以使用SDK函数实现,VC等编程语言实际上是使用SDK封装后的函数,使用SDK函数编程比较麻烦。2

10、0.如何处理PANEL的最大化和最小化问题?回答=有EVENT_PANEL_SIZE事件可以获得,然后可以读取当前panel的大小来确定区分MAXIMIZE盒MINIMIZE事件.21.如何在CVI中编写DLL?回答=首先建立一个新工程,然后创建一个源程序文件,作为dll主程序。利用CVI提供的编辑器功能插入DllMain,这时在源程序文件中就有dll的框架程序。生成的两个函数不能修改。这时就可以在该程序中编写自己的DLL程序。注意函数格式:int _stdcall Function()。创建头文件用于声明dll函数。在Build菜单的TargetSettings中设置dll输出路径,在Exports中选择要输出函数所在的头文件。22.如何在CVI中使用task来自动生成代码?回答=首先,在MAX中配置好你的task,然后在CVI中创建一个空程序,然后使用Daqmx load task函数,配置好handle,然后在程序中,选中该函数,右键选择gennerate cvi example code,就可以自动生成代码了。23.如何在CVI中调试用CVI编写的DLL由VC调用?回答=首先应有VC写的调用程序。在CVI中需要进行的设置:在Specify External Process中选择调用dll的可执行文件。配置Target Settings为Debug,选择dll的目录为可

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

当前位置:首页 > 生活休闲 > 社会民生

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