树莓派控制打印机使用
·
1.开发环境
树莓派系统
python2.7
2.开发目的
使用树莓派usb不用驱动程序直接使用打印机打印。
3.安装python库
①escpos
Python ESC/POS 是一个库,它允许用户从 Python 应用程序访问由 Epson 定义的 ESC/POS 命令处理的所有打印机。
详细内容以及安装对应环境的库的版本在如下链接:
https://pypi.org/project/python-escpos/
②pyusb
pyusb是一个python库,可以方便地使用python操作usb设备
详细内容以及安装对应环境的库的版本在如下链接:
https://pypi.org/project/pyusb/
4.开发示例
①获取打印机设备的 vendor ID和product Id
先在树莓派的命令行终端使用lsusb命令查看当前存在的usb设备,在将打印机连接树莓派再次使用lsusb命令查看存在的usb设备,两次对比多出来的就是打印机设备的详细信息,我的信息如下:
Bus 005 Device 001: ID 0fe6:811e
Bus 001 Device 001: ID 0000:0000
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 006: ID 15d9:0a37
Bus 002 Device 001: ID 0000:0000
ID后面对应的就是打印机设备的 vendor ID和product Id
② 具体代码实现
def action_print():
import usb.core
import usb.util
from escpos import printer
# 打印的文本
rs = ['da', 's', 'sdfgg']
# 查找对应的设备并将vendor ID和product Id转换为16进制
dev = usb.core.find(idVendor=0x0fe6, idProduct=0x811e)
if dev is not None:
# 匹配端口获取
cfg = dev.get_active_configuration()
intf = cfg[(0, 0)]
# 获取out_ep值
ep = usb.util.find_descriptor(
intf,
# match the first OUT endpoint
custom_match= \
lambda e: \
usb.util.endpoint_direction(e.bEndpointAddress) == \
usb.util.ENDPOINT_OUT
)
dev.reset()
# 绑定对应的信息
usb = printer.Usb(0x0fe6, 0x811e, 0, out_ep=ep.bEndpointAddress)
# 循环打印文本
for r in rs:
# 设置文本打印的格式
usb.set(codepage=None, align='left')
# 设置打印的文本内容
usb.text(str(r + '\n').encode('gbk'))
# 切断打印小票
usb.cut()
usb.close()
if __name__ == '__main__':
action_print()
注:
out_ep的值也可以在命令行输入:lsusb -v ,其中的bEndpointAddress值就是
更多推荐
所有评论(0)