From 96bed3801103bba93c108df87f6b285a130fb79f Mon Sep 17 00:00:00 2001 From: Eytlin Date: Fri, 26 Mar 2021 12:35:47 +0300 Subject: [PATCH] v0.3 Fixed printASCII duplicating newline, Fixed requirements.txt, Fixed -i, -t options ignored, Added qr code printing function, Updated description for getDeviceFull with info about side effects. --- README.md | 6 +++--- dist/ppa6-0.2.tar.gz | Bin 0 -> 11657 bytes dist/ppa6-0.3.tar.gz | Bin 0 -> 11948 bytes ppa6/__init__.py | 42 ++++++++++++++++++++++++++++++++++++------ ppa6/__main__.py | 17 ++++++++++++++++- requirements.txt | 5 +++-- setup.py | 5 +++-- 7 files changed, 61 insertions(+), 14 deletions(-) create mode 100644 dist/ppa6-0.2.tar.gz create mode 100644 dist/ppa6-0.3.tar.gz diff --git a/README.md b/README.md index 210e6cb..5ee2b5d 100644 --- a/README.md +++ b/README.md @@ -105,7 +105,7 @@ Install module and run ``` usage: ppa6 [-h] -m MAC [-c [0-2]] [-b [0-255]] [-p {A6,A6p,A6+}] [-n] - (-t TEXT | -s STREAM | -i IMAGE | -e) + (-t TEXT | -s | -i IMAGE | -q QR | -e) Print on a Peripage A6 / A6+ via bluetooth @@ -124,10 +124,10 @@ optional arguments: -t TEXT, --text TEXT ASCII text that should be printed. Add a line break at the end of the string to avoid it being cut. String can be empty, so just page break will be printed - -s STREAM, --stream STREAM - Reads an input from stdin and prints as ASCII text + -s, --stream Reads an input from stdin and prints as ASCII text -i IMAGE, --image IMAGE Path to the image that should be printed + -q QR, --qr QR String for QR code print -e, --introduce Ask the printer to introduce himself ``` diff --git a/dist/ppa6-0.2.tar.gz b/dist/ppa6-0.2.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..8a7123d7d72ee3b02ea30c6ed973a45964721365 GIT binary patch literal 11657 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 T`m_Fg-RJ)U0)6v)0Pp|+kUn!$ literal 0 HcmV?d00001 diff --git a/dist/ppa6-0.3.tar.gz b/dist/ppa6-0.3.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..ad134f64ee1bfac39a9a0f7f0357fe7db5eb0ab9 GIT binary patch literal 11948 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 literal 0 HcmV?d00001 diff --git a/ppa6/__init__.py b/ppa6/__init__.py index 1fc89bc..0b50437 100644 --- a/ppa6/__init__.py +++ b/ppa6/__init__.py @@ -5,13 +5,14 @@ # Copyright (c) 2021 bitrate16 __title__ = 'Peripage A6/A6+ buetooth printing utility' -__version__ = '0.1' +__version__ = '0.3' __author__ = 'bitrate16' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2021 bitrate16' import time import math +import qrcode import socket import bluetooth @@ -261,9 +262,11 @@ def getDeviceFull(self): which means that it's name is 'PeriPage+DF7A', mac is 00:F5:73:25:AC:9F, connected to mac C5:12:81:19:2C:51, F/W V2.11_304dpi, S/N A6491571121, battery level 84%. + Use with care. This command has sub effect causing the printed images to corrupt + shifting horisontally and adding a █ character to ASCII buffer. """ - return self.askPrinter(bytes.fromhex('10ff70f1')) + return self.askPrinter(bytes.fromhex('10ff70f100')) def getRowBytes(self): """ @@ -452,7 +455,7 @@ def printlnASCII(self, text='\n', delay=0.25): slices string into pieces of size getRowCharacters() and waits till new piece being printed. This function acts as println. This function will print out the data stored in the - buffer of printASCII() + buffer of printASCII(). :param text: string containing ASCII characters :type text: str @@ -463,6 +466,10 @@ def printlnASCII(self, text='\n', delay=0.25): # Remove non-ASCII & control (except \n) text = ''.join([i for i in text if (31 < ord(i) or ord(i) == 10) and ord(i) < 127]) + ## Remove last '\n' to avoid it's duplication + #if len(text) > 0 and text[-1] == '\n': + # text = text[:-1] + # # Check for empty and print out newline text = self.printBuffer + text if len(text) == 0: @@ -524,6 +531,16 @@ def printASCII(self, text='\n', delay=0.25): return endLineBreak = text[-1] == '\n' + + # Remove last '\n' to avoid it's duplication + if len(text) > 0 and text[-1] == '\n': + if len(text) == 1: + self.printBreak(30) + time.sleep(delay) + return + + text = text[:-1] + lines = text.split('\n') for i, l in enumerate(lines): @@ -623,7 +640,7 @@ def printImageRowBytesList(self, imagebytes, delay=0.01): :param imagebytes: array of bytes containing rows of the image :type imagebytes: list - :param delay: delay between sending each row + :param delay: delay between sending each row of the image :type delay: float """ @@ -671,7 +688,7 @@ def printImageBytes(self, imagebytes, delay=0.01): :param imagebytes: bytes containing rows of the image :type imagebytes: bytes - :param delay: delay between sending each row + :param delay: delay between sending each row of the image :type delay: float """ @@ -706,7 +723,7 @@ def printImage(self, img, delay=0.01, resample=Image.NEAREST): :param img: image to print :type img: Image - :param delay: delay between sending each row + :param delay: delay between sending each row of the image :type delay: float :param resample: image resampling mode (Image.NEAREST, Image.BILINEAR, Image.BICUBIC, Image.ANTIALIAS) """ @@ -719,6 +736,19 @@ def printImage(self, img, delay=0.01, resample=Image.NEAREST): imgbytes = img.tobytes() self.printImageBytes(imgbytes) + def printQR(self, text, delay=0.01, resample=Image.NEAREST): + """ + Generates QR code from specified string and prints it out. + + :param text: Text for qr code + :tapy text: str + :param delay: delay between sending each row of the image + :type delay: float + :param resample: image resampling mode (Image.NEAREST, Image.BILINEAR, Image.BICUBIC, Image.ANTIALIAS) + """ + + self.printImage(qrcode.make(text, border=0), delay, resample) + def printRowBytesIterator(self, rowiterator, delay=0.25): """ Allows printing image using iterator / generator that should return bytes diff --git a/ppa6/__main__.py b/ppa6/__main__.py index 1d94fc4..d0f0053 100644 --- a/ppa6/__main__.py +++ b/ppa6/__main__.py @@ -26,6 +26,7 @@ def main(): group.add_argument('-t', '--text', help='ASCII text that should be printed. Add a line break at the end of the string to avoid it being cut. String can be empty, so just page break will be printed', type=str) group.add_argument('-s', '--stream', help='Reads an input from stdin and prints as ASCII text', action='store_true') group.add_argument('-i', '--image', help='Path to the image that should be printed', type=str) + group.add_argument('-q', '--qr', help='String for QR code print', type=str) group.add_argument('-e', '--introduce', help='Ask the printer to introduce himself', action='store_true') args = parser.parse_args() @@ -47,7 +48,7 @@ def main(): printer.disconnect() sys.exit(0) - elif 'stream' in args and args.stream is not None: + elif 'stream' in args and args.stream: if 'concentration' in args: printer.setConcentration(args.concentration) @@ -107,6 +108,20 @@ def main(): printer.printBreak(args.breaksize) sys.exit(0) + + elif 'qr' in args and args.qr is not None: + + if 'concentration' in args: + printer.setConcentration(args.concentration) + + printer.reset() + + printer.printQR(args.qr, resample=Image.ANTIALIAS) + + if 'breaksize' in args and args.breaksize > 0: + printer.printBreak(args.breaksize) + + sys.exit(0) else: diff --git a/requirements.txt b/requirements.txt index 327de6e..c7d7132 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ -PyBluez==0.23 Pillow==8.1.2 -argparse==1.1 \ No newline at end of file +argparse==1.1 +PyBluez>=0.23 +qrcode>=6.1 \ No newline at end of file diff --git a/setup.py b/setup.py index 4638598..9dbcffa 100644 --- a/setup.py +++ b/setup.py @@ -3,18 +3,19 @@ setup( name = 'ppa6', packages = ['ppa6'], - version = '0.1', + version = '0.3', license='MIT', description = 'Utility for printing on Peripage A6/A6+ via bluetooth', author = 'bitrate16', author_email = 'bitrate16@gmail.com', url = 'https://github.com/bitrate16/ppa6-python', - download_url = 'https://github.com/bitrate16/ppa6-python/archive/v0.1.tar.gz', + download_url = 'https://github.com/bitrate16/ppa6-python/archive/v0.3.tar.gz', keywords = ['PERIPAGE', 'BLUETOOTH', 'THERMAL PRINTER', 'PRINTER'], install_requires=[ 'PyBluez>=0.23', 'Pillow>=8.1.2', 'argparse>=1.1', + 'qrcode>=6.1', ], classifiers=[ 'Development Status :: 4 - Beta', # Chose either "3 - Alpha", "4 - Beta" or "5 - Production/Stable" as the current state of your package