恢复Keysight IO Libraries Suite原USB驱动及PyUSB USB通信问题求助
恢复Keysight IO Libraries Suite原USB驱动及PyUSB USB通信问题求助
我能理解你现在的困扰——改了USB驱动后Keysight套件用不了,PyUSB又踩坑,确实折腾人。下面分两部分给你一些实用的解决思路:
一、恢复Keysight IO Libraries Suite的原驱动
这些方法亲测在多数场景下有效,按顺序尝试就行:
- 设备管理器手动重置驱动
- 打开设备管理器,找到你的USB仪器设备(可能在「通用串行总线设备」或Keysight专属分类里)
- 右键选择「更新驱动程序」→「浏览我的计算机以查找驱动程序软件」
- 选「让我从计算机上的可用驱动程序列表中选取」,看看有没有Keysight官方驱动(比如
Keysight USB Instrument Driver这类名称),选中后安装即可 - 如果列表里没找到,试试右键设备选「卸载设备」,记得勾选「删除此设备的驱动程序软件」,重启电脑后再重新运行Keysight套件的修复/安装程序——这次系统会重新识别设备并加载官方驱动,不会再用之前的libusbK
- 用Zadig直接回滚驱动
Zadig本身其实支持回滚驱动:打开Zadig,找到你的设备,在顶部的驱动下拉菜单里就能看到之前的Keysight驱动选项,选中后点击「Replace Driver」就能恢复 - 注册表清理(谨慎操作)
如果上面的方法都不行,再考虑这个:- 按Win+R输入
regedit打开注册表编辑器 - 导航到
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB,找到对应设备的VID/PID项(可以从设备管理器→设备属性→详细信息→硬件ID里查看) - 右键该项选择「删除」(一定要确认是你的仪器设备,别删错其他设备),重启电脑后重新安装Keysight套件
- 按Win+R输入
二、PyUSB通信的调试建议
关于PyUSB的问题,我也碰到过文档不全、示例不好用的情况,给你几个实用的调试方向:
- 先拿管理员权限运行代码:Windows下PyUSB需要管理员权限才能访问USB设备,右键终端/命令提示符选「以管理员身份运行」再执行代码,很多时候权限问题是核心原因
- 核对VID/PID是否正确:确保代码里写的VID和PID和设备硬件ID完全一致(设备管理器里能查到,注意是十六进制格式)
- 换libusb-win32驱动试试:libusbK的兼容性有时候不如libusb-win32,用Zadig把驱动换成libusb-win32后再跑PyUSB示例,可能会解决问题
- 先确认设备能被识别:先用简单的代码列出所有USB设备,确认你的仪器能被找到:
import usb.core import usb.util # 替换成你的设备VID和PID(十六进制) TARGET_VID = 0xXXXX TARGET_PID = 0xXXXX # 查找设备 device = usb.core.find(idVendor=TARGET_VID, idProduct=TARGET_PID) if not device: print("设备未找到,请检查VID/PID或驱动") else: print(f"找到设备:{device}") # 打印设备的配置和接口信息,方便后续调试 for cfg in device: print(f"\n配置ID:{cfg.bConfigurationValue}") for intf in cfg: print(f" 接口ID:{intf.bInterfaceNumber},替代设置:{intf.bAlternateSetting}") for ep in intf: print(f" 端点地址:{hex(ep.bEndpointAddress)},传输类型:{ep.bmAttributes}") - 参考Keysight的通信数据包:既然之前用Keysight IO Suite能正常通信,你可以用套件里的IO Monitor工具抓一下正常通信的数据包,看看用了哪些端点、传输类型和命令,再对应到PyUSB代码里调整,这样比瞎试高效多了
备注:内容来源于stack exchange,提问作者theozh
相关产品推荐
相关产品推荐

