首先,我简单描述一下我遇到的情况。
我通过VISA Open.vi尝试创建一个项目与示波器的LAN连接,有概率出现VISA Open.vi报错-1073807346:所给会话或对象引用无效。但通过NIMAX依旧可以成功连接并正常收发数据。
起初我认为时VISA resource name输入有误,于是尝试修改VISA Open.vi的输入VISA resource name。
通常,LAN连接的默认VISA resource name结构类似TCPIP::192.168.1.10::dev0::INSTR,当我将其中的设备名删除,也就是VISA resource name修改为TCPIP::192.168.1.10::INSTR后就能够正常识别并传输数据了。
但是在运行数次之后,终止并关闭程序,再次运行程序,使用TCPIP::192.168.1.10::INSTR也开始报错-1073807346,将VISA resource name改回TCPIP::192.168.1.10::dev0::INSTR后又能正常连接了。
以上为情况1
我发现,在程序中,即便不使用VISA Open.vi,直接使用VISA Write.vi也可以直接与示波器进行数据交互。但根据NI官方论坛中部分大佬的说法,直接通过Write控制VISA设备会在每个VISA Write.vi中创建一个会话句柄,造成内存泄漏。相关论坛链接我放在文末。
以上为情况2
目前我尝试了3台共计两种示波器,型号为R&S RTB2002与Tek MDO32,都存在以上情况,基本初步排除了示波器问题的可能,大概猜测为程序在我没有注意的地方自动创建了VISA会话,导致真正需要open时占用,但其他测试和解决方法我暂时没有头绪,故提出以下问题:
各位即便不知道具体的答案,给点思路也是好的,感谢各位了。
附上前文说的论坛帖子地址:https://forums.ni.com/t5/LabVIEW/Is-Visa-Open-Close-needed/td-p/3571629
直接打开会无法访问,需要一些科技手段。
3
举报
更多回帖