[FIX] hw_escpos: cashdrawer doesn't open

With some escpos printers the cash drawer did still not open after
previous fixes. One of the problemetic printers is the Epson TM-m30.

This fix will check the status of the drawer and try to open it up to 5
times. The fix is successfully tested with the TM-m30.

closes odoo/odoo#33328

Signed-off-by: pimodoo <pimodoo@users.noreply.github.com>
This commit is contained in:
Gert Pellin
2019-05-13 13:38:20 +00:00
parent 2a14eea095
commit 928e91c624
+17 -8
View File
@@ -885,14 +885,23 @@ class Escpos:
self._raw(PAPER_FULL_CUT) self._raw(PAPER_FULL_CUT)
def cashdraw(self, pin): def cashdraw(self, pin, tries=5):
""" Send pulse to kick the cash drawer """ """ Send pulse to kick the cash drawer
if pin == 2:
self._raw(CD_KICK_2) With some printers the drawer will not open after one pulse, for this reason we will check
elif pin == 5: the drawer status up to 'tries' times and send a new pulse if the drawer is still closed. If the
self._raw(CD_KICK_5) drawer status is open, we will stop sending pulses.
else: """
raise CashDrawerError() for i in range(tries):
if pin == 2:
self._raw(CD_KICK_2)
elif pin == 5:
self._raw(CD_KICK_5)
else:
raise CashDrawerError()
if i != tries - 1 and not self.get_printer_status()['printer']['drawer_pin_high']:
break
def hw(self, hw): def hw(self, hw):