资源预览内容
第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
亲,该文档总共7页全部预览完了,如果喜欢就下载吧!
资源描述
虚拟仪器问题集锦1. 如何减少CVI程序的CPU占用率?回答二可以在Options Enviroment中进行设置,将Sleep Policy设置为Sleep More。或者在程序中进行设置,设置函数为:SetSleepPolicy (VAL_SLEEP_MORE)。2. 在CVI中如何实现将这次面板参数作为下次的缺省值使用?回答二一般情况下可以使用文件将各参数保存下来,在下次调用面板时再调用这些 参数。也可以使用CVI自带的函数SavePanelState和RecallPanelState。3. CVI中如何实现进度条功能?回答=CVI中可以使用slide控件实现进度条功能。也可以使用 Programmer,s Toolbox里带的函数来创建进度条。4. CVI中的TUI文件?回答二TUI文件实际上是UIR文件的文本版本,在使用时同UIR文件的调用方式相同。5. CVI中使用控件的Tab顺序功能时如何略过某些控件?回答二将控件改变为Indicator控件,在CVI中Tab顺序是略过显示控件的;2、将 控件灰掉,CVI会略过灰掉的控件;3、将下一个控件作为活动控件,从而略过一个控件。6. 在LabWindows/CVI中如何用多个安全队列(SafeQueue)来实现对多个采集任务的 数据保护?回答二一般来说,在编写一个多线程程序时,我们会在默认的线程池 (DefaultThreadPool)中建立一个或多个 SafeQueue ;然后再建立2个新的线程池 (NewThreadPool),分别用于数据的采集和处理;在用于采集的线程池中建立多个线程 (Thread),分别对应各个板卡或通道;在用于数据处理的线程池(ThreadPool)中建立一 个或多个线程来对进行相应的操作。7. 在安装NI软件的过程中(包括LabVIEW, CVI, hardware drivers,或使用了 MSI installer进行安装的其它NI软件),出现错误2894致使安装程序被迫中止,如何解 决该问题?回答二该问题是微软网站上已经公布的Microsoft Installer常出现的问题之一。 已知有两个原因可能导致出现该问题:其一就是错误的或者被破坏了的Riched20.dll 存在于用户的计算机上,或用户计算机上的的Riched20.dll文件丢失。其二就是用户 的计算机被诸如W32.Nimda.Amm的病毒感染。针对第一种情况,用户需要从其他机器上拷贝正确版本的Riched20.dll文件或者重新 安装MSI installer。如果用户的操作系统为Windows95,98或者ME,那么必须下载并 安装Instmsi.exe,如果用户使用Windows NT4.0, 2000或者Xp,那么必须下载安装 InstMsiW.exe。该执行文件将会修复用户系统里的所有损坏文件。针对第二种情况,用 户则需要杀毒并重新安装上述文件。8. LabWindows/CVI中的堆栈大小?回答二LabWindows/CVI中的堆栈大小直接影响可以分配的数组大小。如果数组的大 小超过堆栈大小,则会报告错误。该值可以在Options-Build Options中设置。缺省 值为:250000。建议使用动态内存分配。9. CVI中如何画极坐标?回答二CVI中没有专门提供画极坐标的控件。可以使用Picture控件自己画,或者使 用绘图软件绘制出极坐标图,然后保存为图片再使用canvas控件将图片导入。10. 如何在启动CVS之后立即启动下载到CVS上的执行程序?一般有两种方式,其中一种你可以使用LV的工程项来把程序下载到CVS中,那么 RTTarget.ApplicationPath二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下如何编写多线程程序?回答二可以使用函数模版中的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)函数来指定每个线程的回调 函数,以实现不同的操作。最后,记住一定要在结束程序的时候调用 CmtDiscardThreadPool (int Pool_Handle)函数释放这些线程的系统资源。17. 在LabWindows/CVI中如何将自己编写的函数放在函数模版中,使它可以像函数 模版中原有的函数那样使用?回答=先新 建一个Function Tree,然后在这个Function Tree下新建一个 Instrument,并在这个Instrument下建立函数分类(将函数分类管理),再建立一个 Function Panel,在上面添加输入输出控件和帮助信息,(如果这个函数没有使用到数采 硬件,那么在Option下面将IVI/VXIplug&play 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函数编程比较麻烦。20. 如何处理PANEL的最大化和最小化问题?回答二有EVENT_PANEL_SIZE事件可以获得,然后可以读取当前panel的大小来确定 区分 MAXIMIZE 盒 MINIMIZE 事件.21. 如何在CVI中编写DLL?回答二首先建立一个新工程,然后创建一个源程序文件,作为dll主程序。利用CVI 提供的编辑器功能插入DllMain,这时在源程序文件中就有dll的框架程序。生成的两 个函数不能修改。这时就可以在该程序中编写自己的DLL程序。注意函数格式:int _stdcall FunctionC)。创建头文件用于声明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的 目录为可执行文件所在的目录。就可以在CVI中进行调试工作了。24. CVI8.0如何编写dll可以使用VC调用,包括节目.回答二在编写dll时,需要注意两点:dll头文件的编写格式,由于VC使用的是C + +,在dll头文件中需加入:#ifdef _cplusplusextern C (#endif#ifdef _cplusplus#endif。在dll设置时选中Embed projecto Uir,这样不需要拷贝uir文件到相应的目 录中去。25. DAQmx模拟触发信号有噪声怎么解决?回
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号