导语:网上有很多文章介绍树莓派不用驱动直接用USB接口的各类热敏打印机,但是由于硬件环境和Linux版本不同,很难有一篇文章能够完整地讲述如何无驱动打印(我就是因为网上的一篇文章方法有缺陷足足浪费了一天半的时间)。下面我将根据自己的经验详细地介绍如何利用树莓派完成POS58打印机的无驱动打印,让各位少走弯路。

1. 编程语言

在正式开工之前,我觉得有必要介绍一下接下来要用的语言——Python。

简单的‘HelloWorld!’

Python命令行

假设你已经安装好了Python,那么在Linux命令行输入:

$python

将直接进入python。然后在命令行提示符>>>后面输入:

>>>print('HelloWorld!')

可以看到,随后在屏幕上输出:

Hello World!

print是一个常用函数,其功能就是输出括号中得字符串。

(在Python 2.x中,print还可以是一个关键字,可写成print 'Hello World!',但这在3.x中行不通 )

另一个使用Python的方法,是写一个Python程序。用文本编辑器写一个.py结尾的

文件,比如说hello.py

在hello.py中写入如下,并保存:

print('HelloWorld!')

退出文本编辑器,然后在命令行输入:

$python hello.py

来运行hello.py。可以看到Python随后输出

Hello World!

另外还可以把Python程序hello.py改成一个可执行的脚本,直接执行,在这里就不做过多的赘述。

程序模式: 写一段Python程序并运行。python-escpos是一个可以让用户来访问那些支持ESC/POS命令的打印机的Python库。因此利用它即可完成实现在树莓派下的无驱打印功能。

本文在Raspbian测试通过

2、需要安装的软件

进行下面操作之前要在Linux终端下sudo su,因为有些命令必须拥有权限才能执行。

Pyusb

为了连接打印机,你需要安装python-usb这个库,用于直接通过usb接口来操作usb设备。本文的第一个坑就出在这里,因为pip库里的版本有一个bug的方式在后面的库会用到,所以必须用从github里最新的去除了bug的代码里安装才不会出问题。所以只能用这样子的方式来安装才行。

>git clonehttps://github.com/walac/pyusb.git
>cd pyusb
>python setup.py install

setuptools

> wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
> python ez_setup.py --user

 

Pip

Pip安装用的是很简单粗暴的方法,首先在pip的python官网上下载pip的压缩包。

然后直接把压缩包拷到树莓派的SD卡中,重新启动树莓派后直接将压缩包cp到/home/pi/下,接着:

>tar -xvf pip-6.1.1.tar.gz
>cd  pip-6.1.1
> sudo python setup.py install

python-qrcode

> git clone https://github.com/lincolnloop/python-qrcode
> cd python-qrcode
> python setup.py build
> sudo python setup.py install

 
 

escpos

上图是网上的方法,但是第一句就执行不下去了,是不是得翻墙才能下载呢?
所以再次简单粗暴了一回,具体方法和安装PIP时一样,先在浏览器中输入http://python-escpos.googlecode.com/files/python-escpos-1.0.tgz,输完直接会下载压缩包,按照之前讲的方法cp到/home/pi下后:
> tar zxvf python-escpos-1.0.tgz
> cd python-escpos-1.0
> python setup.py build
> sudo python setup.py install

 
当然安装escpos貌似还有一条捷径可走,就是在命令行中直接输入:
>sudo pip install python-escpos
(这也是前面我安装PIP的主要原因,不过我用这条语句没有安装成功)
 
 
以上的工作全部完成后,需要在命令行中在输入:
> apt-get install python-imaging python-usb python2.7-usbtc08 python-serial

添加一些接下来Python程序需要用的库

定义打印机

先把打印机用usb线接到树莓派上,然后在树莓派执行 lsusb 命令,这个时候会列表连接上的所有usb设备,如下:

这个时候不知道谁是打印机呢!不过不要紧,你拔掉打印机的usb线后再执行一次,看缺谁,谁就是打印机了。

ID后冒号隔开的两个数字就是usb设备的 vendor ID和productId了,记下来先。如上图所示,vendor ID:0x0416     product:0x5011

from escpos import *
pt = printer.Usb(0x0416, 0x5011, 0, out_ep=0x01)

此处要注意 out_ep 不能用默认值,默认的铁定打不了,所以下面给一段自动获取 out_ep 的代码:

importusb.core
importusb.util
importsys
dev =usb.core.find(idVendor= 0x0416, idProduct= 0x5011)
cfg =dev.get_active_configuration()
intf =cfg[(0,0)]
ep =usb.util.find_descriptor( intf,
#match the first OUT endpoint
custom_match= \
lambdae: \ u
sb.util.endpoint_direction(e.bEndpointAddress)== \
usb.util.ENDPOINT_OUT)
printep
dev.reset()

我手头的打印机获取到的out_ep是0x01,所以我就写的这个值。 另外ESCPOS压缩包README文件里有讲:

issue the following commandso you can get the "Interface" number and "End Point".


lsusb -vvv -dxxxx:xxxx | grep iInterface
lsusb -vvv -d xxxx:xxxx | grep bEndpointAddress| grep OUT

The first commandwill yields the "Interface" number that must

be handy to haveand the second yields the "Output Endpoint"

address.

By default the"Interface" number is "0" and the "OutputEndpoint"

address is"0x82",  if you have other valuesthen you can define

with your instance.

所以在命令行里输入:

lsusb -vvv -d 0416:5011 | grep bEndpointAddress | grepOUT

定义打印机实例

# -*- coding: UTF-8 -*-           设置可以打印中文
from escpos import *
usb = printer.Usb(0x0416, 0x5011, 0, out_ep=0x01)
usb.text(u"树莓派\n\n\n\n\n".encode('gbk'))
usb.image(‘image path’)  #打印图片
usb.barcode                    #打印条形码
usb.barcode('1324354657687','EAN13',64,2,'','')
usb.cut()  #切纸

参考文献:

http://liming.me/post/usb

http://blog.csdn.net/Fashionxu/article/details/9000761

http://blog.csdn.net/my2010sam/article/details/18315687

http://tieba.baidu.com/p/3700342722

利用树莓派完成POS58打印机的无驱动打印(初学者)相关推荐

  1. java usb 无驱打印_Windows Usb 无驱动打印

    \?\USB#VID_8866&PID_0100#0001B0000000#{a5dcbf10-6530-11d2-901f-00c04fb951ed} USB小票打印解决办法 一.需要驱动, ...

  2. java 打印机类printer_GitHub - 505058216/thermal_printer: Java实现网络小票打印机自定义无驱打印...

    Java实现POS打印机自定义无驱打印 热敏打印机使用越来越广泛,而安装驱动相当复杂,万幸的是,几乎所有的热敏打印机都支持ESC/P指令,参考网络上一些资料后,在此整理了一份自定义打印的方案 • 打印 ...

  3. java 小票打印_GitHub - SubLuLu/thermal_printer: Java实现网络小票打印机自定义无驱打印...

    Java实现POS打印机自定义无驱打印 热敏打印机使用越来越广泛,而安装驱动相当复杂,万幸的是,几乎所有的热敏打印机都支持ESC/P指令,参考网络上一些资料后,在此整理了一份自定义打印的方案 • 打印 ...

  4. java pos打印机_Java实现POS打印机自定义无驱打印

    热敏打印机使用越来越广泛,而安装驱动相当复杂,万幸的是,几乎所有的热敏打印机都支持ESC/P指令,参考网络上一些资料后,在此整理了一份自定义打印的方案 • 打印模板为了增强打印效果的通用性,因此需要提 ...

  5. 利用树莓派完成热敏打印机的无驱打印

    引言 "热敏打印机的工作原理是打印头上安装有半导体加热元件,打印头加热并接触热敏打印纸后就可以打印出需要的图案,其原理与热敏式传真机类似.图象是通过加热,在膜中产生化学反应而生成的.这种热敏 ...

  6. 利用DuplicateHandle()无驱动的另类读写内存方法,理论上可以过游戏保护读写

    突发奇想出的原创思路,在理论上经过完善应该可以做到过游戏保护无驱动读写内存 首先看一下MSDN对这个函数的定义 BOOL DuplicateHandle(HANDLE hSourceProcessHa ...

  7. 光谱仪测试软件死机和电脑系统有关系吗,利用无驱动系统解决光谱仪控制计算机不兼容的问题.pdf...

    利用无驱动系统解决光谱仪控制计算机不兼容的问题.pdf 太钢科技 ·33· 利用无驱动系统解决光谱仪 控制计算机不兼容的问题 技术中心 张征宇 赵卫星 刘兆晋 摘 要 将原来的操作系统中的各个驱动程序 ...

  8. Linux 自己写wifi打印驱动,使用树莓派搭建无线打印机

    花了两百多购买了最低配的入门打印机 HP DeskJet 1112 ,买完有点后悔没有多花点钱直接搞一个有无线打印功能的. 于是乎掏出闲置已久的树莓派,准备来一波强行无线打印. 1 下载驱动 树莓派默 ...

  9. 【利用树莓派制作无线打印服务器】

    利用树莓派制作无线打印服务器 文章目录 利用树莓派制作无线打印服务器 一.树莓派是什么? 二.什么是CUPS 树莓派如何启用CUPS 三.电脑端如何连接树莓派打印服务器? 四.手机如何连接树莓派打印服 ...

  10. [转]Java 实现 POS 打印机无驱打印

    来源:http://www.ibm.com/developerworks/cn/java/j-lo-pos/ Java 实现 POS 打印机无驱打印 文档选项 <tr valign=" ...

最新文章

  1. 对声音信标信号的采样频率
  2. mysql选择table_mysql – 选择distinct table4_id,table3_id和table2_...
  3. iis7.5php.2,Windows2008 IIS7.5搭建PHP5.2
  4. Effective Java之用enum代替int常量(三十)
  5. redhat6.8链路聚合
  6. 深度学习与计算机视觉系列(3)_线性SVM与SoftMax分类器--在深度学习的视觉分类中的,这两个分类器的原理和比较
  7. 浏览器DNS_PROBE_FINISHED_NXDOMAIN报错解决办法
  8. Enterprise Library 4.0简介及改进
  9. 题解 【NOIP2010】关押罪犯
  10. C#程序加密工具.Net Reactor教程
  11. 【转载】python中strip(),lstrip(),rstrip()函数的区别
  12. js上传文件到OSS
  13. python怎么转换中文_使用Python进行中文繁简转换
  14. 「维基解密」:西游记死亡人数
  15. Java集合面试题汇总【附答案】持续更新
  16. 基因芯片与NGS区别[转载]
  17. 论坛数据库设计与性能优化
  18. PDFBox加密和解密PDF文件
  19. 人工智能——Search搜索问题
  20. STL系列之四 heap 堆

热门文章

  1. mil和mm之间的换算
  2. WP插件采集伪原创发布WordPress中英通用
  3. 继电保护整定值计算软件_电力系统继电保护整定计算与应用实例
  4. 数字化转型需要双模IT
  5. 串口转以太网产品选型指南
  6. 风尚云网学前端----HTML特殊字符编码对照表
  7. Playmaker节点工具使用(三)—扩展playmaker
  8. MRI_Made_Easy 磁共振成像原理-物理基础4
  9. 高中计算机教育类文章,高中信息技术的教学论文
  10. java uml建模工具 apk,UML建模工具(Astah Professional)