level 1
海天墨雪
楼主
在调用visa设备之前,需要运行一条语句 Call viOpenDefaultRM(DeFrm)
说明文档中大致意思是这条语句用于初始化ni-visa设备管理器,之后通过这条语句所得到的DeFrm(long型)进行visa设备的连接操作,如Call viOpen(DeFrm, "GPIB0::" + Select_DevNO.Text + "::" + Me.Controls("Select_SubDev" & CStr(Temp_I) & "NO").Text + "::INSTR", 0, 0, DeVi),语句中“gpib::”开始的字符串就是设备地址和类型信息,并将通过信息建立的连接保存为一个Devi(long型),两者都类似于数字指针,在运行时检测这两个变量会发现得到随机的8位long型数字用于设备操作,当对设备操作完之后分别运行Viclose(Devi)和Viclose(DeFrm)关闭连接和visa的资源管理(要求此时关闭的devi 和defrm数字与打开时的数字相同,就是说如果我们建立连接的时候得到的defrm为00000001的话,那么当我们关闭defrm的时候 viclose(defrm)语句中的defrm数值也为00000001,否则关闭语句是无效的。)。
目前正在做一个GPIB接口设备的测试程序,遇到的问题就是:
在同一次运行程序的时候我运行Call viOpenDefaultRM(DeFrm)语句时,得到的defrm数值是一定的,不会更改,只有在程序完全退出然后重新运行程序的时候再次运行该语句才能得到一个新的随机且有效的defrm来进行设别管理和连接,此时如果将所需操作的设备关机掉电然后再开机,那么如果不重新启动程序的话,之前的defrm是无法再次连接到所需操作的设备的,只有重启程序,得到新的defrm之后运行才能得到
正确的
defrm参数。这样带来的问题就是,程序必须不断地重启,才能对设备进行操作。
我不太熟悉visa的特性,在看资料的时候也没有好的解决办法。所以请大家帮我想想,有没有比较方便快捷的让测试程序不关闭而重新启动并重建所有程序环境的办法,我曾经试过建立一个空的窗体,当窗体跳转的时候卸载所有其他的窗体并重新加载的办法,但是似乎不奏效。
当然,如果哪位前辈有不重启而直接能得到新的defrm参数的办法也请告知一二,这个问题困扰了我好几个月了。
2010年09月26日 01点09分
1
说明文档中大致意思是这条语句用于初始化ni-visa设备管理器,之后通过这条语句所得到的DeFrm(long型)进行visa设备的连接操作,如Call viOpen(DeFrm, "GPIB0::" + Select_DevNO.Text + "::" + Me.Controls("Select_SubDev" & CStr(Temp_I) & "NO").Text + "::INSTR", 0, 0, DeVi),语句中“gpib::”开始的字符串就是设备地址和类型信息,并将通过信息建立的连接保存为一个Devi(long型),两者都类似于数字指针,在运行时检测这两个变量会发现得到随机的8位long型数字用于设备操作,当对设备操作完之后分别运行Viclose(Devi)和Viclose(DeFrm)关闭连接和visa的资源管理(要求此时关闭的devi 和defrm数字与打开时的数字相同,就是说如果我们建立连接的时候得到的defrm为00000001的话,那么当我们关闭defrm的时候 viclose(defrm)语句中的defrm数值也为00000001,否则关闭语句是无效的。)。
目前正在做一个GPIB接口设备的测试程序,遇到的问题就是:
在同一次运行程序的时候我运行Call viOpenDefaultRM(DeFrm)语句时,得到的defrm数值是一定的,不会更改,只有在程序完全退出然后重新运行程序的时候再次运行该语句才能得到一个新的随机且有效的defrm来进行设别管理和连接,此时如果将所需操作的设备关机掉电然后再开机,那么如果不重新启动程序的话,之前的defrm是无法再次连接到所需操作的设备的,只有重启程序,得到新的defrm之后运行才能得到
正确的
defrm参数。这样带来的问题就是,程序必须不断地重启,才能对设备进行操作。
我不太熟悉visa的特性,在看资料的时候也没有好的解决办法。所以请大家帮我想想,有没有比较方便快捷的让测试程序不关闭而重新启动并重建所有程序环境的办法,我曾经试过建立一个空的窗体,当窗体跳转的时候卸载所有其他的窗体并重新加载的办法,但是似乎不奏效。
当然,如果哪位前辈有不重启而直接能得到新的defrm参数的办法也请告知一二,这个问题困扰了我好几个月了。