You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HSP7000星牌打印机支票数据读取及PyUSB报错解决求助

问题:Windows 10下用PyUSB读取HSP7000支票数据失败,报NoBackendError

背景

使用HSP7000打印机,已在Windows 10安装官方驱动及相关库,尝试通过PyUSB读取USB连接设备的支票数据时失败,出现usb.core.NoBackendError: No backend available错误,尝试过PyUSB仓库相关issue的解决方案仍未解决。

尝试的代码

import usb.core
import usb.util

VENDOR_ID = 'VID_0519'
PRODUCT_ID = 'PID_0002'
# 查找设备 USB\VID_0519&PID_0002
dev = usb.core.find(idVendor=VENDOR_ID, idProduct=PRODUCT_ID)  # 替换为设备的厂商ID和产品ID

dev.set_configuration()

def read_data():
    while True:
        try:
            data = dev.read(0x81, 64, timeout=100)  # 根据需要调整端点和缓冲区大小
            print("Received:", data)
        except usb.core.USBError as e:
            print(e)

# 示例:开始读取数据
read_data()

解决方案

1. 解决NoBackendError核心步骤

PyUSB在Windows下依赖libusb后端,需确保后端正确安装配置:

  • 下载对应系统架构(x86/x64)的libusb-1.0 Windows二进制包
  • 将包内的libusb-1.0.dll复制到以下路径之一:
    • Python的Scripts目录
    • 系统System32(x64)或SysWOW64(x86)目录
  • 重启Python解释器或IDE

2. 替换设备驱动(关键)

Windows默认打印机驱动会占用USB设备,导致PyUSB无法访问:

  • 用Zadig工具将HSP7000的驱动替换为libusb-win32或libusbK:
    1. 打开Zadig,点击Options -> List All Devices
    2. 在设备列表中找到对应VID_0519&PID_0002的HSP7000设备
    3. 选择目标驱动为libusb-win32,点击Replace Driver
  • 替换后确认设备管理器中该设备显示为libusb类设备

3. 代码修正

原代码中VID/PID格式错误,PyUSB需传入整数而非字符串,同时优化端点获取逻辑:

import usb.core
import usb.util

# 转换为16进制整数格式
VENDOR_ID = 0x0519
PRODUCT_ID = 0x0002

# 查找设备
dev = usb.core.find(idVendor=VENDOR_ID, idProduct=PRODUCT_ID)
if dev is None:
    raise ValueError("设备未找到,请检查连接和驱动")

# 配置设备
dev.set_configuration()

# 自动查找输入端点
cfg = dev.get_active_configuration()
intf = cfg[(0,0)]
ep = usb.util.find_descriptor(
    intf,
    custom_match=lambda e: usb.util.endpoint_direction(e.bEndpointAddress) == usb.util.ENDPOINT_IN
)

def read_data():
    while True:
        try:
            # 使用自动找到的端点读取数据,调整超时时间避免频繁报错
            data = ep.read(64, timeout=1000)
            print("接收到数据:", data)
        except usb.core.USBError as e:
            if e.args[0] == 10060:  # 忽略超时错误,继续读取
                continue
            print("读取错误:", e)

read_data()

4. 替代方案:使用官方SDK

若PyUSB方案仍存在兼容性问题,建议使用设备官方提供的SDK或开发库,官方库针对HSP7000的支票读取功能做了专门优化,稳定性和兼容性更有保障。


内容的提问来源于stack exchange,提问作者JSK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 17:53:18