LabVIEW论坛
直播中

黄涛

未满1年用户 11经验值
擅长:可编程逻辑 测量仪表 嵌入式技术 EMC/EMI设计
私信 关注
[问答]

为什么在LabVIEW中使用VISA Open连接示波器时报错-1073807346,但使用NIMAX依旧可以正常连接?

首先,我简单描述一下我遇到的情况。


我通过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时占用,但其他测试和解决方法我暂时没有头绪,故提出以下问题:

  1. 为什么会出现”-1073807346:所给会话或对象引用无效”报错,除了我以上提到的方向以外是否存在其他可能?
  2. 为什么在报错后,删除或者添加一个设备名就可以规避该问题?
  3. 为什么该报错时概率性的,并且终止关闭程序再重新启动也无法解决该问题?
  4. 是否真的需要先open再write,直接write是否可行?

各位即便不知道具体的答案,给点思路也是好的,感谢各位了。

附上前文说的论坛帖子地址:https://forums.ni.com/t5/LabVIEW/Is-Visa-Open-Close-needed/td-p/3571629
直接打开会无法访问,需要一些科技手段。

回帖(1)

空蓝午生

2025-9-5 10:49:13

最佳答案

设备通讯VISA也好,文件打开读取的句柄也好,这两种基本上都是要在内存中占据一个位置,相当于你去开一个会议室去处理这次的与设备通讯的活动,如果你一直留在会议室处理不离开会议室,当然一切交流沟通都不会出错,但是如果你预约了会议室,然后结束了又不报告系统说会议室已经使用完毕,可以给下一个人预约使用,那么你下次再来想使用这个会议室的时候发现会议室是被使用状态,你是无法再进去的,你更改了设备ID那就相当于再去预约了另外一个会议室,当然就可以重新连接了。
只要是VISA和文件句柄,都要做到有打开,写入读取完毕后,关闭,这样才能解除内存中的占用,如果你不信可以随便用一个串口连接某个设备,不关闭这个串口,你再用别的串口通讯软件去用这个串口,是无法连接的,因为这个串口资源已经在内存中被占用了,除非释放掉,重启电脑就会自动释放。写程序要养成习惯,不然内存泄漏,程序会越来越慢。
3 举报
  • 黄涛: 感谢您的回答,您的建议我回头会尝试一下,但我还是存在一些疑问。程序中创建的句柄即便终止程序也无法释放吗?一般程序在终止后所占用的内存不应该会被系统自动销毁吗?重启计算机我没有试过,但终止程序后重启我是尝试过的,并不能解决问题。
  • 空蓝午生 回复 黄涛: 在内存中创建了句柄,如果不用关闭句柄,那么在内存中是不会被释放的,哪怕你整个labview程序关闭也一样的,因为你程序给CPU指令了,要打开这片内存空间给你程序的这个功能使用,如果你程序没有告诉CPU说可以结束这片空间的占用了,那么CPU就会认为你还需要使用就不会让其他进程过来使用的,而这个关闭句柄命令才是你程序告诉CPU撤销内存空间的占用指令,就像你用完会议室,你不跟管理员打招呼说我用完了,转身就走(这就如直接关闭程序),管理员怎么知道你还需不需要用,所以就会一直被占用。
  • 黄涛 回复 空蓝午生: 感谢您的回答,从我目前的测试来看确实如此。

更多回帖

发帖
×
20
完善资料,
赚取积分