Add new functions for discovery and parsing of printers, WIP
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
# Importing the module to manage the connection to the printer.
|
# Importing the module to manage the connection to the printer.
|
||||||
import escpos.printer as escp
|
import escpos.printer as escp
|
||||||
|
import brother-ql-inventree
|
||||||
from time import sleep, gmtime, strftime
|
from time import sleep, gmtime, strftime
|
||||||
import os.path
|
import os.path
|
||||||
from PIL import Image, ImageEnhance, ImageOps
|
from PIL import Image, ImageEnhance, ImageOps
|
||||||
@@ -286,3 +287,93 @@ def process_image(self, path):
|
|||||||
original_img.save(jpeg_path, format="JPEG", quality=95, optimize=True)
|
original_img.save(jpeg_path, format="JPEG", quality=95, optimize=True)
|
||||||
|
|
||||||
return jpeg_path
|
return jpeg_path
|
||||||
|
|
||||||
|
def discover_printers():
|
||||||
|
"""
|
||||||
|
We try to find all the connected printers ( 0 or n ) to this system.
|
||||||
|
|
||||||
|
For every type of supported printer, we try to autodiscover them.
|
||||||
|
|
||||||
|
http://www.linux-usb.org/usb.ids A list of USB vendor IDs
|
||||||
|
|
||||||
|
04b8 Seiko Epson Corp.
|
||||||
|
04f9 Brother Industries, Ltd
|
||||||
|
"""
|
||||||
|
|
||||||
|
def find_and_parse_borther_ql_printer():
|
||||||
|
|
||||||
|
|
||||||
|
## We might be able to no use this because there is a `discover` command in https://github.com/pklaus/brother_ql#usage
|
||||||
|
|
||||||
|
## Code stolen from https://framagit.org/stickoeur/diagnostickoeur/-/blob/no-masters/printit.py?ref_type=heads
|
||||||
|
|
||||||
|
"""Find and parse Brother QL printer information."""
|
||||||
|
|
||||||
|
model_manager = ModelsManager()
|
||||||
|
|
||||||
|
# Debug print to show we're searching
|
||||||
|
# print("Searching for Brother QL printer...")
|
||||||
|
|
||||||
|
for backend_name in ["pyusb", "linux_kernel"]:
|
||||||
|
try:
|
||||||
|
#print(f"Trying backend: {backend_name}")
|
||||||
|
backend = backend_factory(backend_name)
|
||||||
|
available_devices = backend["list_available_devices"]()
|
||||||
|
#print(f"Found {len(available_devices)} devices with {backend_name} backend")
|
||||||
|
|
||||||
|
for printer in available_devices:
|
||||||
|
#print(f"Found device: {printer}")
|
||||||
|
identifier = printer["identifier"]
|
||||||
|
parts = identifier.split("/")
|
||||||
|
|
||||||
|
if len(parts) < 4:
|
||||||
|
#print(f"Skipping device with invalid identifier format: {identifier}")
|
||||||
|
continue
|
||||||
|
|
||||||
|
protocol = parts[0]
|
||||||
|
device_info = parts[2]
|
||||||
|
serial_number = parts[3]
|
||||||
|
|
||||||
|
try:
|
||||||
|
vendor_id, product_id = device_info.split(":")
|
||||||
|
except ValueError:
|
||||||
|
#print(f"Invalid device info format: {device_info}")
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Default model
|
||||||
|
model = "QL-570"
|
||||||
|
|
||||||
|
# Try to match product ID to determine actual model
|
||||||
|
try:
|
||||||
|
product_id_int = int(product_id, 16)
|
||||||
|
for m in model_manager.iter_elements():
|
||||||
|
if m.product_id == product_id_int:
|
||||||
|
model = m.identifier
|
||||||
|
break
|
||||||
|
#print(f"Matched printer model: {model}")
|
||||||
|
except ValueError:
|
||||||
|
#print(f"Invalid product ID format: {product_id}")
|
||||||
|
continue
|
||||||
|
|
||||||
|
printer_info = {
|
||||||
|
"identifier": identifier,
|
||||||
|
"backend": backend_name,
|
||||||
|
"model": model,
|
||||||
|
"protocol": protocol,
|
||||||
|
"vendor_id": vendor_id,
|
||||||
|
"product_id": product_id,
|
||||||
|
"serial_number": serial_number,
|
||||||
|
}
|
||||||
|
#print(f"Found printer: {printer_info}")
|
||||||
|
return printer_info
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
#print(f"Error with backend {backend_name}: {str(e)}")
|
||||||
|
continue
|
||||||
|
|
||||||
|
print("No Brother QL printer found")
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def fint_and_parse_epson_printer():
|
||||||
|
pass
|
||||||
Reference in New Issue
Block a user