From f008240411772b5cc78bd4161ee91ae5a757c666 Mon Sep 17 00:00:00 2001 From: Joren Van Onder Date: Tue, 6 Oct 2015 13:58:33 +0200 Subject: [PATCH] [FIX] hw_escpos: certain Epson printers do not identify as a printer We search for USB devices that identify as a printer through their DeviceClass or one of their InterfaceClasses. The issue is a lot of printers use vendor-specific Device/InterfaceClasses. Apparently the Epson TM-T88IV is one of those devices. So in order to work around this, we now first look for a USB device that identifies as a printer. If those do not exist, we pick the first Epson device, if those do not exist we pick the first Star device. Perhaps we should instead start using some kind of probe-based approach to identify ESC/POS compatible devices. --- addons/hw_escpos/controllers/main.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/addons/hw_escpos/controllers/main.py b/addons/hw_escpos/controllers/main.py index d3635e47d0b..77ae2a59db2 100644 --- a/addons/hw_escpos/controllers/main.py +++ b/addons/hw_escpos/controllers/main.py @@ -76,11 +76,12 @@ class EscposDriver(Thread): printers = usb.core.find(find_all=True, custom_match=FindUsbClass(7)) - # Currently we ask customers to put the STAR TSP650II into - # 'USB Mode' Vendor class instead of Printer class. When set - # to Printer class it doesn't show up under Linux at - # all. Vendor class does work, but that means that it's not - # going to have an interfaceClass 7. + # if no printers are found after this step we will take the + # first epson or star device we can find. + # epson + if not printers: + printers = usb.core.find(find_all=True, idVendor=0x04b8) + # star if not printers: printers = usb.core.find(find_all=True, idVendor=0x0519)