完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
首先,我简单描述一下我遇到的情况。 我通过VISA Open.vi尝试创建一个项目与示波器的LAN连接,有概率出现VISA Open.vi报错-1073807346:所给会话或对象引用无效。但通过NIMAX依旧可以成功连接并正常收发数据。 起初我认为时VISA resource name输入有误,于是尝试修改VISA Open.vi的输入VISA resource name。 我发现,在程序中,即便不使用VISA Open.vi,直接使用VISA Write.vi也可以直接与示波器进行数据交互。但根据NI官方论坛中部分大佬的说法,直接通过Write控制VISA设备会在每个VISA Write.vi中创建一个会话句柄,造成内存泄漏。相关论坛链接我放在文末。 目前我尝试了3台共计两种示波器,型号为R&S RTB2002与Tek MDO32,都存在以上情况,基本初步排除了示波器问题的可能,大概猜测为程序在我没有注意的地方自动创建了VISA会话,导致真正需要open时占用,但其他测试和解决方法我暂时没有头绪,故提出以下问题:
各位即便不知道具体的答案,给点思路也是好的,感谢各位了。 附上前文说的论坛帖子地址:https://forums.ni.com/t5/LabVIEW/Is-Visa-Open-Close-needed/td-p/3571629 |
|
相关推荐
1个回答
|
|
|
设备通讯VISA也好,文件打开读取的句柄也好,这两种基本上都是要在内存中占据一个位置,相当于你去开一个会议室去处理这次的与设备通讯的活动,如果你一直留在会议室处理不离开会议室,当然一切交流沟通都不会出错,但是如果你预约了会议室,然后结束了又不报告系统说会议室已经使用完毕,可以给下一个人预约使用,那么你下次再来想使用这个会议室的时候发现会议室是被使用状态,你是无法再进去的,你更改了设备ID那就相当于再去预约了另外一个会议室,当然就可以重新连接了。
只要是VISA和文件句柄,都要做到有打开,写入读取完毕后,关闭,这样才能解除内存中的占用,如果你不信可以随便用一个串口连接某个设备,不关闭这个串口,你再用别的串口通讯软件去用这个串口,是无法连接的,因为这个串口资源已经在内存中被占用了,除非释放掉,重启电脑就会自动释放。写程序要养成习惯,不然内存泄漏,程序会越来越慢。
最佳答案
|
|
|
3 条评论
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1198 浏览 0 评论
991 浏览 0 评论
670 浏览 0 评论
【团购】独家全套珍藏!龙哥LabVIEW视觉深度学习实战课(11大系列课程,共5000+分钟)
2451 浏览 0 评论
1523 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-14 13:34 , Processed in 1.318666 second(s), Total 54, Slave 45 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
15623