[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:
@@ -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):
|
||||||
|
|||||||
Reference in New Issue
Block a user