fix(urovo): SET RFID OFF after our encode so the firmware stops voiding the label

We encode and verify the chip ourselves before PRINT, so the print job carries no
RFID data. With the firmware's own encoding armed it treats that as a failed
encode and VOIDs the label -- 'VOID VOID VOID' overprinted across the bottom
third, on top of the info line and the QR. Seen on the bench.

SET RFID OFF between our verify and the print stops it. Proven live that it is
free: UHF READ and UHF WRITE both keep working with the firmware pass off, and
the module read the next blank straight after the print. So it is never
re-armed -- no SET RFID 1, no &DEFAULT, no &CALIBRATE, all of which have wedged
the module today.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
type-two 2026-09-06 14:33:06 +10:00
parent f87804de0a
commit ce5b2b5db5

View File

@ -97,6 +97,16 @@ def do_print(body, encode):
return {'ok': False, 'error': 'RFID encode failed verification',
'epc': epc, 'epcBefore': before, 'readBack': p.read_uhf(),
'note': 'nothing printed -- no label wasted'}
# DISARM the firmware's own RFID pass before printing. We have already encoded and
# verified the chip ourselves (above), so the PRINT job carries no RFID data -- and with
# encoding armed the firmware treats that as a failed encode and VOIDs the label,
# overprinting "VOID VOID VOID" across the bottom third, on top of the info line and the
# QR. Seen on the bench. SET RFID OFF stops it, and it costs nothing: proven live that
# both UHF READ and UHF WRITE keep working with the firmware pass off, and the module
# stays alive for the next label. So it is simply never re-armed.
if encode:
p.cmd('SET RFID OFF')
time.sleep(0.4)
# 1) direct thermal. Wait out transient busy states before feeding to clear,
# so we don't waste a label on a momentary post-print code.
p.ribbon_off()