完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
labview常见问题及解答
1、如何用LV 与可编程仪器通信,该仪器没有GPIB 接口,但有COM 口,能否用LV 操作? A:可以通过LV 的串口通信来解决仪器控制问题,参看FIND EXAMPLE 的BASIC 2 PORT SERIAL WRITE AND READ.VI 2、如何将EVENTSTRUCT 中捕获的时间传递到STATE DIAGRAM? A:使用VENTSTRUCT 捕获面板事件后,将不同的事件对应于不同的字符串和其他,再通 过QUEUE 将VENTSTRUCT 中的字符串传递到STATEDIAGRAM 中,再根据得到的字符串进 行相应的处理。 3、使用WRITE TO BINARY FILE 函数向二进制文件中写入一个1D 数组,为什么在READ FROM BIANRY FILE 读取时,会多出4 个字节数据呢? A:写入时加入了头信息,多出的4 个字节就是头信息,代表了数组或字符串的长度。在 WRITE TO BINARY FILE 中的APPEND ARRAY OR StiNG SIZE 这个输入端口中设置,其默 认值为T,代表加入头信息;如果将其改为F,就不会多出4 个字节了。 4、卸载7.1 时出现错误1603,接着出现错误1722 和1721,程序询问是否继续卸载操作, 怎样消除该错误并正确卸载7.1? A:该错误通常出现在试图卸载某些共享组件的时候。按照以下步骤可以解决该问题。 1) 注意当错误发生时是在卸载哪一部分组件。一般讲在卸载LV 核心部分或LV RUNTIME ENGINE 的时候容易出现。 2) 当出现错误代码1603,弹出对话框提示继续卸载操作时候,点击YES 3) 如果卸载完成之后提示需要重新启动计算机,点击NO。 4) 对于卸载过程中产生的错误,从CD 相应的文件夹中手动运行相应的组件,路经如下: componentslvcorefulllvcorefull.msi 或componentslvruntimeenglvruntimeeng.msi 点击 修复按钮。 5) 修复之后再次运行这些MSI,选择卸载按钮。这样就可以完全卸载。 5、7.1 在编写大型程序时希望优化计算机的内存使用,那么需要考虑哪些内容? A:1)、将VI 分解为SUBVI,当SUBVI 不再被执行的时候,LV 能够释放它的内存。 2)、尽可能少使用全局变量或局部变量,这两者会造成LV 为数据备份。 3)、在需要时才在打开的前面板上显示大型数组和字符串,因为前面板的显示控件需要复制 他们显示的数据。 4)、属性节点会造成SUBVI 的前面板滞留在内存中,这样会增加内存的使用。因此,如果 SUBVI 的前面板不被显示,不要在SUBVI 中使用属性节点。 5)、尽量在数组中使用相同的数据类型,并在传输数据进入子VI 使用强制小数点位置。当 LV 改变数据类型,输出需要一个新的缓存。 6)、当设计流程图,要注意任何输入大小与输出的大小不同的地方。EG:频繁的增加数组 或者字符串的大小将造成数据的多次复制。造成内存增加,并造成内存碎片。 5、在 LV7.1 中生成可执行文件后运行出现如下错误:?Executable version(7.1.1) doesn?t match resource file(7.1)?怎样消除错误? A:这种情况是由于LV7.1.1Run-time Engine 安装损坏或者版本不兼容造成的。解决如下: 1) 到控制面板---添加或者删除程序 2) 选择National Instruments Software 点击更改 3) 在 National Instruments Software 对话框选择LV7.1.1Run-time Engine 点击修复 附 注: 安装了LV Run-time Engine7.1.1 后, 在MAX 的software 里一般看不到 LV7.1.1Run-time Engine7.1.1,只能在控制面板里看到。 6、VISA Set I/O Buffer Size A:可以完成对缓存的设置,放的位置一定要跟在串口配置VI 的后面,MASK 的设置要对, 如果不设置,默认值为4096Bytes,如果需要用串口读取的数据比这个大,就会造成数据丢 失。 7、如何将CVI 驱动程序(fp 文件)转换成LV 的驱动程序? A:LV 自带这个功能。在TOOLS 的Instrumentation 中的Import Instrument from CVI Fp 菜单里。 8、LV7.1 如何创建控件以自定义图片方式显示? A:在前面板放上要创建的控件类型,选中它后点击EDIT---CUSOMIZE CONTROL 进入编辑 面板,用工具栏的控件变成CUSTOMIZE MODE,EDIT? Import Picture From File 选择要显 示的图片,右击前面板的控件点Import Picture。切回Edit Mode。右击控件选择Import Picture 然后选择方式。同样操作其他图片。 9、如何把LV 前面板控件当前值通过程序设为下次打开时的默认值? A:方法如下 1) 手动操作:对控件点击鼠标右键----Data Operations---Make Current Value Default。 2) 通过文件或注册表方式先把控件当前值存下来,再下次打开时再从文件或注册表把值读 回来。 3) 使用VI Server 技术在保存控件当前值为默认值,但这种方法只能处于编辑状态使用, 在生成exe 文件后不能使用。操作如下 (1) 调用Invoke Node 设VI 的Edit Mode 值为TRUE (2) 调用Invoke Node 设Make Current Value Default (3) 调用Invoke Node 设Save Instrumentt 的Path to saved file 为需要设置默认值的VI 路径 10、使用串口过程中发生错误: 如下错误: 1) Unable to open session to ?ASRL1::INSTR? 2) Return Value :0XBFFF0072 3) Status Name :VI_ERROR_RSRC_BUSY 4) The resource is valid, but VISA can not currently access it. A:这是由于访问COM 口的软件引起的,有可能是运行LV 程序打开了VISA 的对话而没有 关闭它;或者打开了一个永远不能关闭的超级终端连接。或者是其他的软件正在使用该串口 或者串口挂起了,这是需要关闭所有的程序。若果还是没有解决,最后方法:禁止COM 口 以释放资源;步骤如下:打开控制面板,点击系统图标,选择设备管理器,展开端口,选中 要操作的串口,右击选择属性,在常规选项里选择不再使用该设备。或者直接右击选择停用。 设定完毕重新启动,然后选择再启用该串口。 11、在使用Open/Create/Replace File.vi 选择create or replace 方式时,如果文件已经存 在,需要Replace,怎样才能不弹出对话框直接Replace? A:两种方式:1)双击打开Open/Create/Replace File.vi 的程序框图,把里面的If function is 2(create or replace with protection) ask user?s permission to 的 CASE 结构删除。2)在 Open/Creat/Replace File.vi 前加一个判断文件存在的结构,判断存在时运行Delete.vi 12、LV 在做网络发布的时候,能否在由LabVIEWWEBServe 生成的HTML 中嵌入其他语言 写的脚本文件?或者在其他网络服务器上使用由LV 生成的HTML A:这两种情况都是不允许的,原因在于NI 的Web Server 不允许这样的操作。LV 的Web Server 无法将非LV 环境下生成的脚本信息传送到客户端浏览器,也无法访问客户端浏览器 中非LV 环境下生成的脚本信息;同样是处于NI Web Server 的问题,其他的Web Server (Apache,IIS 等)也无法使用由LV 的Web Server 生成的HTML 文件实行对VI 控制。 13、如何较精确的判断延时时间? A:需要使用迅捷VI(Elapsed Time.vi)而不能使用Wait。因为Wait 是会受到系统运行的 影响,而且重复延时后会产生积累误差。而Elapsed Time 使用的系统时间(精确到Ms), 不会产生累积误差。 14、如何动态添加Tree 控件内条目? A:查找Directory hierarchy in tree control.vi 例程,打开init-open-close 子vi 内的Directory to tree 子vi 内add Item.vi。使用该属性节点进行添加删除操作。重点在于parent tag 端口 的使用。如果添加的为最上层的条目,则parent tag 为空字符串。如果是子层条目,则parent 必须为上一层条目的tag。 15、在 LV7.1 中如何使用Database Connectivity 更新ACCESS 数据库中数据类型为OLE 的字段? A:使用带参数更新数据库的方式更新OLE 数据类型的数据。具体方法如下:1)使用DB Tools Open Connection.vi 打开数据库;2)使用DB Tools Create Parameterized Query.vi 建立一 个带参数更新数据库的Refnum,在SQL query 输入?update 表名称set 列名称=(?)?, 由于OLE 数据无法用文本方式直接体现,?(?)?在这里就代表OLE 的数据类型;3)使用 DB Tools set Parameter.vi,在Value 处输入OLE 数据就可以,比如数组;4)使用两次DB Tools Free Object.vi 释放Refnum,才可以得到Connection Reference,才可以再使用其他DB Tools VI;5)断开连接。 16、LV7.1,Time Loop 结构主程序内调用了两个不同功能的子程序,当子程序被调用时弹 出子VI 前面板。子程序内均使用了Time Loop,设置均一样,但是调用任一子VI 后另一个 再也调用不了了。 A:两个子VI 均使用了同一个设置的Time Loop 结构,这是由于两个子VI 的Time Loop 的 Loop name 名称相同造成的。 17、在 LV7.1 中如何设定和显示Cursor A:举例对于waveform graph,我们可以调出它的属性节点,然后在属性节点中选择Cursor list,程序就会以簇数组的形式列出所有的游标,先索引出来某个游标,然后再利用簇函数 就可以修改了,如果要改变游标的坐标,可以Index Array 索引出某个游标,然后Bundle by name 就可以修改,再replace array 或者其他数组函数,将改变后的簇数组写入另一个cursor list 的属性节点即可。 18、利用Build Application 生成exe 文件,如果原程序用到了current vi?s path,那么就会 出现原先默认能找到的文件现在程序自己找不到了 A:当使用current vi?s path 这个函数时,它会将文件名和该vi 所在的路径返回,如果刚编 写vi 还没有保存,那么运行它会返回一个无效值,如果已保存了该vi,那么就能返回完整 路径,例如一个名为:?Application.vi?的vi 被保存在C:Program FileApplication 这个文件 夹下面,current vi?s path 函数返回的路径就是C:Program FileApplication Application.vi; 如果生成exe,并且与Application.vi 保存在同一个目录下,那么运行的时候会返回C: Program FileApplication App.exeApplication.vi,所以我们需要多用一个Strip path function 才能得到和原来一样的路径。 19、如何自定义窗口标题字符,而不是用默认的Vi 名称? A:如果只是设置一个非VI 名称的默认标题,可以在VI Property>>Window Appearance 中设置,去掉Same As VI name 前面选中符号,然后在Window title 中输入需要显示的字 符;如果希望在程序中修改标题,可以使用VI Server 中属性FP.Title 20、LV 中使用NI-VISA 软件控制USB 设备 A:为了使用NI-VISA,在Windows 环境中,可以通过INF 文档做到这一点。NI-VISA3.0 包含VISA Drive Development Wizard(DDW)将为USB 设备创建一个INF 文档。1)、选 择Start Programs National Instruments VISAVISA Drive Developer Wizard,打开DDW。 可以用这个向导为PXI/PCI 或USB 设备创建一个INF 文档,点击Next。此时出现VISA DDW 基本设备信息窗口。2)进行这一步时,需要清楚USB 供应商ID 和产品ID。这两个数据都 是16 位十六进制数字,由供应商提供。点击Next。出现输出文档属性窗口。3)USB Instrument Prefix 是一个描述符,用来识别本设备所用的相关文档。在USB Instrument Prefix 中输入 相应信息,并在?output file directory?中选择存放这些文档的目录,然后点击Finish。INF 文档就创建好并保存在您指定的位置了。假定Windows XP 操作系统。 复制INF 文档并将其放入INF 文件夹,这个文件夹的位置通常是:?C:WINDOWSINF?。这 个文件夹可能是隐藏的。 右击C:WINDOWSINF 文件夹中INF 文件,然后点击Install。这个过程为您的文件创建了 PNF 文档。现在就可以准备安装USB 设备了。 连接USB 设备。Windows 探测到您的USB 设备后,立即会打开?添加新硬件向导?。遵照屏 幕上有关向导程序的指定行事。如果您准备为该设备选择驱动程序,就请浏览INF 文件夹, 并选择您使用DDW 创建的INF 文档。就可以在MAX 和LV 中编成控制了。 21、利用LV 的迅捷VI 读出.lvm 的数据,但是无法正常在waveform graph 中正常显示。 A:读出的二维数组是以列为单位存放数据的,而waveform graph 显示2D 数组是以每行作 为一条曲线进行输出的,所以,利用Transpose 2D Array 将行列转制就可以了。Waveform chart 与graph 刚好相反,是以每列数据作为一条曲线进行输出的,所以不加转制就可以用 chart 代替工人阿婆和也可以正常显示。 22、LV7.1DataSocket 协议传输数据怎样保证客户端完整地从服务器接收数据而不丢失? A:数据丢失的原因是读取数据的速度比发布慢使得数据被覆盖,处理方法有两方面: 1) 提高客户端运行速度,保证服务器发布新数据前已经读完。 2) 设立数据缓存区。服务器的在DataSocket Server Manager 设置,默认是25M。客户机 的要将Datasocket Open 函数模式参数选为BufferedRead 或BufferedRead/Write,然后通 过属性节点设置缓存大小。同时也可以用属性节点作缓存区诊断。 23、如何将MAX 配置文件保存下来 A:在MAX 里,当配置完成后,在菜单栏,选择FILE---Export,选择保存位置已经类型, 点击Next,选择需要保存的文件,接着点击Export,finish。载入时,选择Import 24、Developer Suit 中State diagram toolkit 是做什么用的 A:状态框图使用一个图形化状态框图标识,定义多个状态及其转移逻辑,并包含有自动生 成LV 代码的工具,在对于搭建大程序的构架上是很有用的一个工具 25、LV7.1 用局部变量的时候只能将机械动作改成Switch,而不能用Latch,例如用Stop 按钮停止两个并行的循环,怎么做? A:在用Latch 方式时,系统读这个控件一次后自动改为默认值,所以用Latch 方式时用局 部变量,在两次读出的值即使时间间隔很短也不能保持一致,所以就不能用了。此时,可以 用Switch 方式,并在程序开始时初始化按钮就可以了。 26、在ActiveX 容器中播放Flash 的动画,如何实现在LV 中响应Flash 中的按钮动作? A:通过调用ActiveX,可以在LV 中播放*.swf 的动画。响应FLAH 中控键动作的办法是用一 个事件结构,在ActiveX 容器中特定区域响应鼠标动作。 27、在调试LV7.1 程序的时候,程序总是进行到无法响应得状态,然后只能强行关闭,因此 无法正常运行? A:在VI 前面板有个长度很大的字符串Indicator,因此程序在刷新屏幕的时候很消耗资源, 将这个Indicator 设为隐藏,问题就解决了。同样的问题也会出现在数据量很大的Graph, Chart,甚至探针上。 28、LV7.1 中一个while 循环嵌套另一个While 循环,如何通过一个布尔量停止这两个循环? A:创建一个布尔量的局部变量,用这个局部变量控制一个循环,用布尔量控制另一个循环, 注意机械特性是不能带锁存的(Latch)。 29、采集3 路信号,需要根据一列的数据的值来对整个数组进行排序,保证每一排的数据 仍然对应。 A: 30、每次运行时CPU 使用率都达到100%,为什么? A:循环里面没加延时就会有这种现象发生 31、仪器驱动器的概念和VISA 的特点? A:仪器驱动器是指使用标准化的I/0 函数仪器设备进行通信的程序,主要用于对仪器进行 程控操作。在LV 编程语言中,仪器驱动器是指由VISA 标准和仪器程控指令共同构成的仪 器控制程序的应用接口(API)。仪器驱动器采用VISA 标准编程,从而可避开许多复杂而低 级的仪器程控命令。VISA 是虚拟仪器体系结构的简称,它的特点有1)面向对象编程;2) VISA 是当前所有仪器接口类型功能函数的超集,且十分简洁。3)VISA 作为标准函数,与 仪器的I/O 接口类型无关;4)VISA 程序与操作系统与编程语言无关。 32、如何选择告诉CAN 卡和低速CAN 卡的使用? A:高速CAN 和低速CAN 设备是不能允许于同一个CAN 网络中。如果CAN 设备是Serials 2 的 CAN 设备那么是有两个PORT 分别可以做高速CAN 和低速CAN 的,而且是通过软件来设 置的,直接在MAX 里找对应的CAN 设备选择相应的PORT 的属性就可以更改是高速还是低 速CAN。如果Serials1 的就需要一个端子,从一个CANport 分出两个Port 分别作高速CAN 和低速CAN,也是在MAX 设置的。 33、如何使用Read Text File 函数从文本文件中逐行读取数据? A:在Read Text File 函数的输入输出端口无法设置读取行的功能。只有用鼠标右击该函数, 从弹出的快捷菜单中选择Read Lines 才能实现读取行的操作。将这个函数放到一个循环里, 就可以实现逐行读取的目的了。 34、用LV 写的串口程序,生成EXE 文件后不能在没有Lv 的机器上运行,这台机器已经装 好了相应的LAB VIEW Run-Time,为什么? A:如果串口程序使用VISA 写的,就需要在目标及其上安装相应的VISA 驱动。可以在目标 及其上单独安装VISA 驱动,也可在LV 中使用打包功能将VISA 驱动和应用程序一起做成一 个安装文件,统一安装到目标机器上。
tjkrLBid.pdf
(161.12 KB, 下载次数: 186
)
本帖被以下淘专辑推荐:
|
|
相关推荐
|
|
用udl里的字符串信息在局域网内其他电脑连接sql数据库为什么为出现连接失败拒绝访问?
1852 浏览 2 评论
为什么同一个队列引用的全局变量,运行在两个子vi中发现队列数据丢失了
1469 浏览 0 评论
1664 浏览 0 评论
关于labview2024版本的lvanlys.dll出错的问题
3718 浏览 3 评论
1575 浏览 2 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 02:13 , Processed in 0.686448 second(s), Total 84, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号