diff --git a/.gitignore b/.gitignore index f2e13c5..1e378f3 100644 --- a/.gitignore +++ b/.gitignore @@ -14,7 +14,7 @@ build-android/dist *.apk *.apk.* cat-printer*.zip -*-sha256.txt +cat-printer-sha256-*.txt # bleak, the bare pip package as a folder build-common/bleak # python embeddable package, with bleak_winrt inside diff --git a/1-build.sh b/1-build.sh index e24737b..322b238 100755 --- a/1-build.sh +++ b/1-build.sh @@ -1,6 +1,6 @@ #!/bin/sh # For ultimate laziness! -rm -rf cat-printer-*.zip cat-printer-*.apk* cat-printer-*-sha256.txt +rm -rf cat-printer-*.zip cat-printer-*.apk* cat-printer-sha256-*.txt echo -n 'Version tag: ' read version echo -n $version > version @@ -16,5 +16,5 @@ echo 'Signing apk with keyfile...' ./4-sign.sh $signkey cd ../ echo 'SHA256 Hash...' -sha256sum cat-printer-* > cat-printer-$version-sha256.txt +sha256sum cat-printer-* > cat-printer-sha256-$version.txt echo 'Complete!' diff --git a/printer.py b/printer.py index 0c45f1a..0e75da5 100644 --- a/printer.py +++ b/printer.py @@ -131,7 +131,7 @@ class PrinterError(Exception): def __init__(self, *args): super().__init__(*args) self.message = args[0] - self.message_localized = i18n(args) + self.message_localized = i18n(*args) class PrinterData(): ''' The image data to be used by `PrinterDriver`. @@ -277,6 +277,7 @@ class PrinterDriver(Commander): rtl: bool = False energy: int = None + quality: int = 24 mtu: int = 200 @@ -427,20 +428,23 @@ class PrinterDriver(Commander): def _prepare(self): self.get_device_state() - self.set_dpi_as_200() - self.use_energy_control(True) - if self.energy is not None: - self.set_energy(self.energy * 0xff) if self.model.is_new_kind: self.start_printing_new() else: self.start_printing() - self.set_speed(8) # already fine if above 4. maybe just enough - self.get_device_state() + self.set_dpi_as_200() + if self.quality: # well, slower makes stable heating + self.set_speed(self.quality) + if self.energy is not None: + self.set_energy(self.energy * 0xff) + self.apply_energy() self.update_device() + self.flush() + self.start_lattice() def _finish(self): self.end_lattice() + self.set_speed(8) self.feed_paper(128) self.get_device_state() self.flush() @@ -450,7 +454,6 @@ class PrinterDriver(Commander): flip(data.data, data.width, data.height, self.flip_h, self.flip_v, overwrite=True) self._prepare() # TODO: consider compression on new devices - self.start_lattice() for chunk in data.read(paper_width // 8): if self.dry_run: chunk = b'\x00' * len(chunk) @@ -615,8 +618,10 @@ def _main(): help=i18n('image-printing-options')) parser.add_argument('-t', '--text', metavar='Size[,FontFamily][,pf2][,nowrap][,rtl]', type=str, default='', help=i18n('text-printing-mode-with-options')) - parser.add_argument('-e', '--energy', metavar='<0.0-1.0>', type=float, default=None, + parser.add_argument('-e', '--energy', metavar='0.0-1.0', type=float, default=None, help=i18n('control-printer-thermal-strength')) + parser.add_argument('-q', '--quality', metavar='1-4', type=int, default=3, + help=i18n('print-quality')) parser.add_argument('-d', '--dry', action='store_true', help=i18n('dry-run-test-print-process-only')) parser.add_argument('-f', '--fake', metavar='XY01', type=str, default='', @@ -638,7 +643,9 @@ def _main(): printer.scan_timeout = float(scan_param[0]) identifier = ','.join(scan_param[1:]) if args.energy is not None: - printer.energy = args.energy * 0xff + printer.energy = int(args.energy * 0xff) + if args.quality is not None: + printer.quality = 4 * (args.quality + 5) image_param = args.image.split(',') if 'flip' in image_param: diff --git a/printer_lib/commander.py b/printer_lib/commander.py index 8a9d392..ffadf6a 100644 --- a/printer_lib/commander.py +++ b/printer_lib/commander.py @@ -82,12 +82,10 @@ class Commander(metaclass=ABCMeta): 'Start printing on newer printers' self.send( bytearray([0x12, 0x51, 0x78, 0xa3, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff]) ) - def use_energy_control(self, enable: bool): - ''' Whether enable energy control (with set_energy) or not - Note: I remember I can't disable it, when I (incorrectly) - thought it was "image/text mode" + def apply_energy(self): + ''' Apply previously set energy to printer ''' - self.send( self.make_command(0xbe, int_to_bytes(0x01 if enable else 0x00)) ) + self.send( self.make_command(0xbe, int_to_bytes(0x01)) ) def get_device_state(self): '(unknown). seems it could refresh device state & apply config' diff --git a/server.py b/server.py index 91c7561..2429fc3 100644 --- a/server.py +++ b/server.py @@ -188,6 +188,7 @@ class PrinterServerHandler(BaseHTTPRequestHandler): self.printer.fake = self.settings.fake self.printer.dump = self.settings.dump self.printer.energy = self.settings.energy + self.printer.quality = self.settings.quality self.printer.flip_h = self.settings.flip_h or self.settings.flip self.printer.flip_v = self.settings.flip_v or self.settings.flip self.printer.rtl = self.settings.force_rtl diff --git a/version b/version index 79a2734..5d4294b 100644 --- a/version +++ b/version @@ -1 +1 @@ -0.5.0 \ No newline at end of file +0.5.1 \ No newline at end of file diff --git a/www/about.html b/www/about.html index 2e192d7..dd52f4f 100644 --- a/www/about.html +++ b/www/about.html @@ -17,19 +17,25 @@ GitHub
Copyright © 2021-2022 NaitLee Soft. diff --git a/www/index.html b/www/index.html index 0dc424a..6fa432f 100644 --- a/www/index.html +++ b/www/index.html @@ -20,27 +20,38 @@