该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
找到原因了。原因为pyvis是基于NIVISA的。而我现在的仪器是安捷伦的,必须用安捷伦的VISA。两者虽然都是visa32.dll但是彼此不兼容。
只能用其他方法了。
新方法。已实现搜索所有可用设备。希望能帮助到更多的人
from ctypes import *
visa = WinDLL("visa32.dll") # or windll.visa32
def vi_status_check(vi_status, func, args):
if vi_status < 0:
raise RuntimeError(hex(vi_status + 2**32))
return args
visa.viOpenDefaultRM.errcheck = vi_status_check
visa.viOpenDefaultRM.argtypes = [POINTER(c_uint32)]
visa.viFindRsrc.errcheck = vi_status_check
visa.viFindRsrc.argtypes = [c_uint32, # sesn
c_char_p, # expr
POINTER(c_uint32), # findList
POINTER(c_uint32), # retcnt
c_char_p] # desc
rm_session = c_uint32()
visa.viOpenDefaultRM(byref(rm_session))
expr = b"?*INSTR"
instr_list = c_uint32()
nb = c_uint32()
desc = create_string_buffer(256)
visa.viFindRsrc(rm_session,
expr,
byref(instr_list),
byref(nb),
desc)
print(instr_list.value,nb.value,desc.value)
if(nb.value>1):
for i in range(nb.value):
visa.viFindNext(instr_list,desc)
print(desc.value)