为了测试 Odoo 在实际业务中的实施,我们开了一家(马上要开第二家分店)猪肉店。由于预算有限,在实施 Odoo PoS 的时候采购了一台价格为 85 元的爱宝热敏打印机,结果连上 Odoo Posbox 以后发现无法识别。

由于该打印机是支持标准 ESC/POS 指令集的,所以肯定具备 Odoo 所需的软硬件要求。唯一的问题是 Odoo 无法识别该打印机,经过多番搜索,在 Github 上找到了解决方案:

https://github.com/odoo/odoo/issues/12485

故障的原因是因为这种国产打印机为了方便在打印机里内置了一个存储着 Windows 驱动程序的优盘,造成了其 USB 接口与标准的 EPSON TM-120 打印机不一致。

所以我们需要在 Odoo 的小票打印机驱动模块 hw_escpos 里做一些 workaround。

具体来说,就是修改 Odoo 的 hw_escpos 模块中的 printer.py 文件,将 Usb 类的 open() 方法修改为以下代码:

    def open(self):
""" Search device on USB tree and set is as escpos device """ self.device = usb.core.find(idVendor=self.idVendor, idProduct=self.idProduct)
if self.device is None:
raise NoDeviceError()
try:
try:
cfg = self.device.get_active_configuration()
for intf in cfg:
if intf.bInterfaceNumber == self.interface:
for ep in intf:
if ep.bEndpointAddress < 0x80:
self.out_ep = ep.bEndpointAddress # change out_ep, calling sequence to be improved....
if self.device.is_kernel_driver_active(intf.bInterfaceNumber):
self.device.detach_kernel_driver(intf.bInterfaceNumber)
except Error as e:
print e
self.device.detach_kernel_driver(self.interface) self.device.set_configuration()
usb.util.claim_interface(self.device, self.interface)
except usb.core.USBError as e:
raise HandleDeviceError(e)

代码修改完毕,通过 SSH scp 之类的方式上传到 Posbox 里覆盖源文件再重启即可。

* 以上代码在 Odoo 9.0 和 Odoo 10.0 中测试通过。

让 Odoo POS 支持廉价小票打印机的更多相关文章

  1. 小票打印机指令集封装(支持EPSON指令)

    最近写了一些关于小票打印机的程序,不难,但是记录下来,作为足迹吧. 现在市场上的小票机基本都支持EPSON指令.指令集文档 对指令集进行了自己的封装,方便以后调用: package aheiziUti ...

  2. 重复造轮子系列——基于FastReport设计打印模板实现桌面端WPF套打和商超POS高度自适应小票打印

    重复造轮子系列——基于FastReport设计打印模板实现桌面端WPF套打和商超POS高度自适应小票打印 一.引言 桌面端系统经常需要对接各种硬件设备,比如扫描器.读卡器.打印机等. 这里介绍下桌面端 ...

  3. C#并口热敏小票打印机打印位图包括芯片的写入

    下面是打印所需要调用的代码: class LptControl { private string LptStr = "lpt1"; public LptControl(string ...

  4. C# Lpt 并口热敏小票打印机打印位图

    class LptControl { private string LptStr = "lpt1"; public LptControl(string l_LPT_Str) { L ...

  5. 转:C#并口热敏小票打印机打印位图

    最近一直在研究并口小票打印机打印图片问题,这也是第一次和硬件打交道,不过还好,最终成功了. 这是DEMO的窗体: 下面是打印所需要调用的代码: class LptControl { private s ...

  6. C# 热敏打印机 小票打印机 打印图片

    最近一直在研究并口小票打印机打印图片问题,这也是第一次和硬件打交道,不过还好,最终成功了. 这是DEMO的窗体: 下面是打印所需要调用的代码: 因为我们这里主要是打印条形码和二维码,所以以条形码和二维 ...

  7. C#并口热敏小票打印机打印位图

    原文:C#并口热敏小票打印机打印位图 最近一直在研究并口小票打印机打印图片问题,这也是第一次和硬件打交道,不过还好,最终成功了.   这是DEMO的窗体:   下面是打印所需要调用的代码: class ...

  8. Odoo POS

    Jeffery Q:913547235     Odoo 8 只支持 ean13条码 Barcode scanner相当于键盘,30ms 条码枪输出类型,QWERTY     pos配置       ...

  9. c#调用刀片小票打印机

    public static bool Print(int orderId, string orderTime) { bool b = true; string cut = ((char)29).ToS ...

随机推荐

  1. 微信小游戏 three.js jsonloader request:fail invalid url

    微信小游戏中,用 THREE.JSONLoader 直接加载本地的 json 文件,报错.估计是跨域访问的问题 解决:把 json 文件放到服务器上,通过 url 来访问. 临时测试的话,在本地起一个 ...

  2. SQL注入之重新认识

    i春秋作家:anyedt 原文来自:https://bbs.ichunqiu.com/thread-41701-1-1.html 引言 作为长期占据 OWASP Top 10 首位的注入,认识它掌握它 ...

  3. web API简介(二):客户端储存之document.cookie API

    概述 前篇:web API简介(一):API,Ajax和Fetch 客户端储存从某一方面来说和动态网站差不多.动态网站是用服务端来储存数据,而客户端储存是用客户端来储存数据.document.cook ...

  4. 分布式控制系统Git学习

    git : n. 饭桶,无用的人 github : n. 社交编程及代码托管网站 hub: n. 中心:毂:木片 Git是一个分布式版本控制软件,最初由林纳斯·托瓦兹(Linus Torvalds)创 ...

  5. Java高级开发必会的50个性能优化细节

    在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身.养成良好的编码习惯非常重要,能够显著地提升程序性能. 1. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时 ...

  6. python tricks

    1. cities = ['Marseille', 'Amsterdam', 'New York', 'Londom'] # the good way for i, city in enumerate ...

  7. centos安装守护进程工具supervisor

    安装命令 yum install supervisor 启动守护进程 supervisord -c /etc/supervisord.conf 切换至/etc/supervisord.d目录下 写一个 ...

  8. java几种垃圾收集方法和垃圾收集器

    标记清除法: 分为两个阶段,标记----清除 标记阶段将所有需要回收的对象做标记,然后在清除阶段将所有的标记对象回收 但是这种回收方法有很大的缺点,那就是这两个过程的的效率并不高,两个过程都是效率很低 ...

  9. Eclipse建立Java工程中的三个JRE选项的区别(Use an execution environment JRE,Use a project specific JRE,Use default JRE)

    本博客部分转载自: http://blog.csdn.net/wdjhzw/article/details/42086615  这篇博客写的非常好,很用心. 一.首先看新建Java Project时候 ...

  10. Linux_CentOS-服务器搭建 <七>

    设置Linux下Mysql表名不区分大小写 对linux安装mysql不熟悉的(查看我那一系列的文章第一篇): http://www.cnblogs.com/Alandre/p/3365535.htm ...