[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)
def cashdraw(self, pin):
""" Send pulse to kick the cash drawer """
if pin == 2:
self._raw(CD_KICK_2)
elif pin == 5:
self._raw(CD_KICK_5)
else:
raise CashDrawerError()
def cashdraw(self, pin, tries=5):
""" Send pulse to kick the cash drawer
With some printers the drawer will not open after one pulse, for this reason we will check
the drawer status up to 'tries' times and send a new pulse if the drawer is still closed. If the
drawer status is open, we will stop sending pulses.
"""
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):