python通过usb连接标签打印机-开源的

背景:

        最近接到了一个新需求,单位想做一个ERP系统,想把打印机一起兼容进去,实现自动化打印工作。主要我是做爬虫的没接触过这些,就到网上搜索了很多先关资料,最终发现,一大堆全都是什么VIP的才能看,才能用里面的压缩包、驱动一大堆需要踩坑的都要VIP就TM很生气!!!!能用的资料少之又少,现在我本人已经全部打通流程并完成了这项工作,故而在此平台公开,开源向大家分享解决方法!也为此呼吁大家,开源精神!

        代码可直接复制,然后修改自己的ID,这个是打印TXT文本的,有些打印机不支持中文需要自己上传字体到打印机里面,自己去网上下载一个即可!

import usb.core
import usb.util
import usb.backend.libusb1# 使用 libusb 后端
backend = usb.backend.libusb1.get_backend(find_library=lambda x: None)# Zebra 的供应商 ID 和产品 ID
VENDOR_ID = 0x0a5f  # 十六进制
PRODUCT_ID = 0x00e2  # 十六进制# 查找 USB 设备
printer = usb.core.find(idVendor=VENDOR_ID, idProduct=PRODUCT_ID, backend=backend)if printer is None:raise ValueError("Printer not found")# 设置打印机配置
printer.set_configuration()# 获取接口
interface = printer[0][(0, 0)]# 获取接口
usb.util.claim_interface(printer, interface.bInterfaceNumber)def print_text(number, name, specifications, count):"""获取所有的省以及直辖市:return:"""# 合并所有内容并使用换行符分隔combined_text = f"编号:{number}\n名称:{name}\n型号:{specifications}\n数量:{count}"wrapped_lines = []for part in combined_text.split('\n'):wrapped_lines.extend(wrap_text(part))# 创建 ZPL 命令zpl_command = ("^XA"  # 开始标签格式"~SD24""^PR2""^CW1,E:SIMSUN.TTF"  # 选择字体"^CI28"  # 编码格式 UTF8"^LL300"  # 标签长度:30mm"^PW500"  # 标签宽度:50mm)# 添加每一行内容y_position = 20  # 初始 y 坐标line_height = 40  # 行高for line in wrapped_lines:zpl_command += f"^FO50,{y_position}^A1N,25,25^FD{line}^FS"y_position += line_height  # 增加 y 坐标zpl_command += "^XZ"  # 结束标签格式print(zpl_command)# 发送 ZPL 命令到打印机printer.write(1, zpl_command.encode('utf-8'))# 释放接口usb.util.release_interface(printer, interface.bInterfaceNumber)
if __name__ == '__main__':data = {"number": "1","name": "测试页测试文本用","specifications": "GB2312+-*……¥#@!()()=\\","count": "1",
}print_text(data['number'],   data['name'],data['specifications'],data['count'])

打印条码

import usb.core
import usb.util
import usb.backend.libusb1# 使用 libusb 后端
backend = usb.backend.libusb1.get_backend(find_library=lambda x: None)# Zebra 的供应商 ID 和产品 ID
VENDOR_ID = 0x0a5f  # 十六进制
PRODUCT_ID = 0x00e2  # 十六进制# 查找 USB 设备
printer = usb.core.find(idVendor=VENDOR_ID, idProduct=PRODUCT_ID, backend=backend)if printer is None:raise ValueError("Printer not found")# 设置打印机配置
printer.set_configuration()# 获取接口
interface = printer[0][(0, 0)]# 获取接口
usb.util.claim_interface(printer, interface.bInterfaceNumber)def print_bar_code_api(number, name):"""   打印条码    """zpl_command = ("^XA"  # 开始标签格式          "^CW1,E:SIMSUN.TTF"  # 选择字体"^PW500"  # 标签宽度:50mm"^LH15,20"  # 左侧和顶部边距(1.5mm, 2.0mm)"^LL300"  # 标签长度:30mm"^LS0"  # 标签偏移量"^FO50,20^A1N,25,25^FD名称:{}^FS"  # 打印名称"^FO20,80^BY3^BCN,50,Y,N^FH\^FD>;{}^FS"  # 仅打印条形码,不显示内容 BY3控制条码字体大小,BCN,50控制条形码高度,越大越大).format(name, number)  # 这里的 number 是条形码内容zpl_command += "^XZ"  # 结束标签格式# 发送 ZPL 命令到打印机printer.write(1, zpl_command.encode('utf-8'))# 释放接口usb.util.release_interface(printer, interface.bInterfaceNumber)if __name__ == '__main__':print_bar_code_api('111','222')

注意:

    电脑安装的驱动也是重中之重,有些电脑安装了驱动还是不能用,这个时候就要用到另一个工具,如下图,自己去下载,然后用这个安装驱动即可完成!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/10320.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Codeforces Round 984 (Div. 3)

题目链接 A. Quintomania 题意 思路 模拟即可 示例代码 void solve() {int n;cin >> n;vector<int>arr(n);fer(i, 0 ,n) cin >> arr[i];fer(i, 1, n){if(abs(arr[i] - arr[i - 1]) ! 5 && abs(arr[i] - arr[i - 1]) ! 7){cout << "N…

【2】GD32H7xx 串口Idle + DMA接收不定长数据

目录 1. IDLE中断相关介绍2. D-Cache与DMA同时使用2.1 I-Cache与D-Cache2.2 D-Cache与DMA同时使用时的数据一致性问题2.2.1 CPU读取DMA写入到SRAM的数据2.2.2 DMA读取CPU写入到SRAM的数据 3. Uart Idle DMA收发程序4. 程序测试 1. IDLE中断相关介绍 在 GD32H7xx MCU 中&#…

python数据结构基础(8)

今天来使用python实现二叉树,二叉树中每个节点都是Node类对象,通过Tree类中的add()方法逐个向二叉树中加入树节点,构成完全二叉树或者非完全二叉树,代码如下: class Node(object):"""树节点类&#xff0c;用于构建二叉树。Attributes:- val: 节点存储的值。- r…

IEEE 1588:电信网络的精确时间协议 (PTP)

IEEE 1588&#xff1a;电信网络的精确时间协议 IEEE 1588 PTP 概述PTP 协议特征同步类型IEEE 1588 PTP 角色IEEE 1588 PTP 的工作原理PTP 设备类型PTP 消息类型事件消息一般信息 PTP 时钟类规范PTP 配置文件 https://www.techplayon.com/ieee-1588-precision-time-protocol-ptp…

深度学习基础—了解词嵌入

引言 上图是使用one-hot向量表示词向量的一种方式&#xff0c;这种表示方式优点是方面简洁&#xff0c;但是缺点也很明显&#xff0c;就是词与词之间独立性太强&#xff0c;没有关联&#xff0c;这样使得算法对相关词的泛化能力不强。 举个例子&#xff0c;假如我们已经学习到了…

实战:索引的命中机制

在 SQL Server 中,查询是否能命中索引(即是否能使用 Index Seek)取决于多个因素,包括索引的结构、查询条件的排列、和数据库优化器的策略。以下是一些常见的命中索引和不能命中索引的情况,及其详细解释: 一、命中索引的情况 1. 前导列匹配(典型的命中索引场景) 索引结…

Mac 安装protobuf2.5.0

文章目录 一、修改platform_macros.h二、编译protobuf三、配置环境变量四、测试 一、修改platform_macros.h platform_macros.h的目录位置为/Users/xxxx/protobuf-2.5.0/src/google/protobuf/stubs 在platform_macros.h中增加如下代码 #elif defined(__arm64__) #define GOOG…

ubuntu24.04安装matlab失败

又是摸鱼摆烂的一天&#xff0c;好难过&#xff5e; 官方教程&#xff1a;https://ww2.mathworks.cn/help/install/ug/install-products-with-internet-connection.html 问题描述&#xff1a;https://ww2.mathworks.cn/matlabcentral/answers/2158925-cannot-install-matlab-r2…

python使用turtle画图快速入门,轻松完成作业练习

turtle介绍 turtle是一个绘图库&#xff0c;可以通过编程进行绘图。其模拟了一个乌龟在屏幕上的运动过程。该库通常用于给青少年学习编程&#xff0c;当然&#xff0c;也可以使用其进行作图。 在一些学校中&#xff0c;可能在python学习的课程中&#xff0c;要求完成turtle绘…

智能 AI 视觉识别系统打造高效流量统计方案

智能AI视觉算法解决方案&#xff0c;涵盖客流人数统计、车流量统计、牲畜养殖场计数、物品点包计数、超员报警、火焰识别报警及驾驶行为报警等功能。可精准统计商场、车站等地客流&#xff0c;区分车型统计车流量并预警拥堵&#xff0c;准确计数牲畜及物品&#xff0c;检测工厂…

UVa514 解析:火车车厢重排序问题的模拟栈实现

来源:UVa514 铁轨 Rails。 这是一个火车车厢重排序的问题,通过模拟栈操作的算法实现。这种算法非常适用于具有栈结构特性的问题,比如括号匹配、货物堆放、编译器中语法检查。本文给出了C++的两种代码实现和Python的一种实现。 题目描述 某城市有一个火车站,铁轨铺设如图。…

ENSP OSPF和BGP引入

路由协议分为&#xff1a;内部网关协议和外部网关协议。内部网关协议用于自治系统内部的路由&#xff0c;包括&#xff1a;RIP和OSPF。外部网关协议用于自治系统之间的路由&#xff0c;包括BGP。内部网关协议和外部网关协议配合来共同完成网络的路由。 BGP:边界网关路由协议(b…

华为OD机试真题-矩形绘制

题目描述 实现一个简单的绘图模块&#xff0c;绘图模块仅支持矩形的绘制和擦除 当新绘制的矩形与之前的图形重善时&#xff0c;对图形取并集 当新擦除的矩形与之前的图形重善时&#xff0c;对图形取差集 给定一系列矩形的绘制和擦除操作&#xff0c;计算最终图形的面积。下…

Android下的系统调用 (syscall),内联汇编syscall

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 什么是系统调用 (syscall) 系统调用是操作系统提供给应用程序的一组接口&#xff0c;允许用户空间程序与内核进行交互。 在 Android&#xff08;基于 Linux …

初始JavaEE篇 —— 网络编程(2):了解套接字,从0到1实现回显服务器

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;JavaEE 目录 TCP 与 UDP Socket套接字 UDP TCP 网络基础知识 在一篇文章中&#xff0c;我们了解了基础的网络知识&#xff0c;网络的出…

【月之暗面kimi-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞 …

架构师备考-概念背诵(软件工程)

软件工程 软件开发生命周期: 软件定义时期:包括可行性研究和详细需求分析过程,任务是确定软件开发工程必须完成的总目标,具体可分成问题定义、可行性研究、需求分析等。软件开发时期:就是软件的设计与实现,可分成概要设计、详细设计、编码、测试等。软件运行和维护:就是…

[FBCTF 2019]rceservice 详细题解

知识点: json字符串 PHP正则表达式元字符 PCRE回溯机制绕过正则表达式 %0a 换行符绕过正则表达式(详细讲解) 提示 Enter command as JSON 题目还有一个附件,打开是index.php文件源码 <?php putenv(PATH/home/rceservice/jail); if (isset($_REQUEST[cmd])) {$json $_…

【竞技宝】DOTA2-梦幻联赛S24:圣剑美杜莎强拆基地终结比赛

北京时间11月9日,DOTA2的梦幻联赛S24继续进行。本日迎来第二阶段的B组二、三名加赛PARI对阵spirit。本场比赛双方前两局战至1-1平,决胜局同样是难分胜负打到了六十分钟之后,关键时刻spirit主动出击,圣剑美杜莎强拆基地成功一波结束比赛,最终spirit让一追二击败PARI。以下是本场…

计算机的错误计算(一百四十九)

摘要 探讨 MATLAB 中 的计算精度问题。当 为含有小数的大数或整数附近数时&#xff0c;输出会有错误数字。 例1. 已知 计算 直接贴图吧&#xff1a; 另外&#xff0c;16位的正确值分别为 0.6374239897486897e0、-0.6613118653236519e0、0.3769911184298822e-5 与…