在中国热敏打印机58mm上的python escpos pyusb,libusb中,Python未实现异常在Windows 10中工作

如何解决在中国热敏打印机58mm上的python escpos pyusb,libusb中,Python未实现异常在Windows 10中工作

不只是问题,而是答案。我有一台58mm的收据打印机,并且尝试使用escpos sdk进行设置,到目前为止,我花了整整一天的时间来获取冗余错误,例如“未实现”引发错误,并且关于它的信息并不多。因此,我将发布我所做的工作以使其正常工作。

首先,阅读this guide的第一步,并从依赖关系步骤安装所有库(我使用anaconda来管理我的虚拟环境,因此我是通过anaconda提示符安装的)

然后,从最新的Windows二进制文件中的here下载libusb,解压缩并根据您的OS搜索32或64位dll(显然,这对于工作很重要),对于64位,请选择MS64 / dll文件并将其复制到Windows / system32中,对于Windows / SYSWOW64中的32位MS32 / dll文件,文件夹路径应位于Windows配置中的%PATH%变量中。如果您正在使用anaconda并激活虚拟环境,则将其复制到“ X:\ USERS \ USER \ Anaconda3 \ envs \ ENV \ DLLs”和“ X:\ USERS \ USER \ Anaconda3 \ envs \ ENV \ Library \ bin”中x,user和env应该与您的虚拟环境路径文件夹匹配,(如果您为所有用户安装了anaconda,则用户应位于“ all users”文件夹中,并且默认情况下处于隐藏状态)

在python中运行此代码,将提示您所有设备vid和pid的列表,如果您需要搜索pid和vid(仅4位数字),则需要选择打印机vid和pid。调查每个人以找到您的打印机ID,并在获得这些信息后将其存储在某处。注意,如果在安装驱动程序后执行此操作,则可能看不到打印机在此处列出。对于我来说是VID_0483&PID_070B。

import win32com.client

wmi = win32com.client.GetObject ("winmgmts:")
for usb in wmi.InstancesOf ("Win32_USBHub"):
print(usb.DeviceID)

获取Zadig并安装它,安装后打开它并选择clic选项菜单,然后列出所有设备(如果您不这样做,您将看不到任何设备),然后搜索您的设备,我的列在“ Usb打印支持”下,选择它,确认pid和vid供应商与您的匹配,然后选择WinUsb驱动程序,然后按安装/重新安装按钮,应该花点时间(耐心)。

这时,您应该完成库和驱动程序的安装,并且应该没有问题地运行此代码,并获得类似这样的

import usb.core
import usb.util
import usb.backend.libusb1
backend = usb.backend.libusb1.get_backend()
print(backend)

这是棘手的部分。如果运行此代码:

from escpos.printer import Usb
import usb.core
import usb.util
import usb.backend.libusb1

p = Usb(0x0483,0x070B,0x81,0x02)
p.text("Hello World            Hola   1\n")

由于escpos库不是为Windows编写的,因此通常会出现“未实现”的引发错误! :/。因此,回到您的env文件夹或python安装文件夹,转到ENV / lib / site-packages / escpos /并打开printer.py文件。从第61行到71注释或删除它,但是如果您像我一样是新手,只需在每行中键入#。应该在同一列中,以避免标识错误。在“ check_driver = None”行下方和第73行上方执行此操作,

        check_driver = None

    #try:
    #    check_driver = self.device.is_kernel_driver_active(0)
    #except NotImplementedError:
    #    pass

    #if check_driver is None or check_driver:
    #    try:
    #        self.device.detach_kernel_driver(0)
    #    except usb.core.USBError as e:
    #        if check_driver is not None:
    #            print("Could not detatch kernel driver: {0}".format(str(e)))

    try:
        self.device.set_configuration()
        self.device.reset()
    except usb.core.USBError as e:
        print("Could not set configuration: {0}".format(str(e)))

def _raw(self,msg):

然后您应该可以与您的打印机通信。再次运行:

from escpos.printer import Usb
import usb.core
import usb.util
import usb.backend.libusb1

#remember to change pid and vid with your own values!
p = Usb(0x0483,0x02)
p.text("Hello World            Hola   1\n")

您应该在打印机中看到一台行式打印机!,您可能需要按进纸按钮才能看到它。如果得到无效的端点,则需要在vid和pid(0x81,0x02)旁边的Usb()参数函数中设置自己的端点,然后替换它们。通常为0x81和0x82,但可能会有所不同。

我希望您能从中获得有用的信息,加油!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 <select id="xxx"> SELECT di.id, di.name, di.work_type, di.updated... <where> <if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 <property name="dynamic.classpath" value="tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-