serial number can be a list of values or a list of sublists
This commit is contained in:
@@ -1699,6 +1699,18 @@ class EpsonPrinter:
|
|||||||
return None
|
return None
|
||||||
if "serial_number" not in self.parm:
|
if "serial_number" not in self.parm:
|
||||||
return None
|
return None
|
||||||
|
if isinstance(self.parm["serial_number"], (list, tuple)):
|
||||||
|
left_val = None
|
||||||
|
for i in self.parm["serial_number"]:
|
||||||
|
val = "".join(
|
||||||
|
chr(int(value or "0x3f", 16)) # "0x3f" --> "?"
|
||||||
|
for value in self.read_eeprom_many(i, label="serial_number")
|
||||||
|
)
|
||||||
|
if left_val is not None and val != left_val:
|
||||||
|
return False
|
||||||
|
left_val = val
|
||||||
|
return left_val
|
||||||
|
else:
|
||||||
return "".join(
|
return "".join(
|
||||||
chr(int(value or "0x3f", 16)) # "0x3f" --> "?"
|
chr(int(value or "0x3f", 16)) # "0x3f" --> "?"
|
||||||
for value in self.read_eeprom_many(
|
for value in self.read_eeprom_many(
|
||||||
@@ -2076,11 +2088,30 @@ class EpsonPrinter:
|
|||||||
or not self.parm[parameter]
|
or not self.parm[parameter]
|
||||||
or not value_list
|
or not value_list
|
||||||
or not len(value_list)
|
or not len(value_list)
|
||||||
or len(self.parm[parameter]) != len(value_list)
|
or (
|
||||||
|
isinstance(self.parm[parameter], (list, tuple))
|
||||||
|
and not all(
|
||||||
|
len(sublist) == len(value_list)
|
||||||
|
for sublist in self.parm[parameter]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
or (
|
||||||
|
not isinstance(self.parm[parameter], (list, tuple))
|
||||||
|
and len(self.parm[parameter]) != len(value_list)
|
||||||
|
)
|
||||||
):
|
):
|
||||||
return None
|
return None
|
||||||
if dry_run:
|
if dry_run:
|
||||||
return True
|
return True
|
||||||
|
if isinstance(self.parm[parameter], (list, tuple)):
|
||||||
|
for i in self.parm[parameter]:
|
||||||
|
for oid, value in zip(i, value_list):
|
||||||
|
if not self.write_eeprom(
|
||||||
|
oid, value, label="update_" + parameter
|
||||||
|
):
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
return False
|
||||||
for oid, value in zip(self.parm[parameter], value_list):
|
for oid, value in zip(self.parm[parameter], value_list):
|
||||||
if not self.write_eeprom(oid, value, label="update_" + parameter):
|
if not self.write_eeprom(oid, value, label="update_" + parameter):
|
||||||
return False
|
return False
|
||||||
|
|||||||
41
ui.py
41
ui.py
@@ -32,7 +32,7 @@ from parse_devices import generate_config_from_toml, generate_config_from_xml, n
|
|||||||
from find_printers import PrinterScanner
|
from find_printers import PrinterScanner
|
||||||
|
|
||||||
|
|
||||||
VERSION = "5.0"
|
VERSION = "5.1"
|
||||||
|
|
||||||
NO_CONF_ERROR = (
|
NO_CONF_ERROR = (
|
||||||
"[ERROR] Please select a printer model and a valid IP address,"
|
"[ERROR] Please select a printer model and a valid IP address,"
|
||||||
@@ -1318,6 +1318,14 @@ Web site: https://github.com/Ircama/epson_print_conf
|
|||||||
self.config(cursor="")
|
self.config(cursor="")
|
||||||
self.update_idletasks()
|
self.update_idletasks()
|
||||||
return
|
return
|
||||||
|
if ser_num is False:
|
||||||
|
self.status_text.insert(
|
||||||
|
tk.END,
|
||||||
|
f"[ERROR]: Improper values in printer serial number.\n",
|
||||||
|
)
|
||||||
|
self.config(cursor="")
|
||||||
|
self.update_idletasks()
|
||||||
|
return
|
||||||
if not ser_num or "?" in ser_num:
|
if not ser_num or "?" in ser_num:
|
||||||
self.status_text.insert(
|
self.status_text.insert(
|
||||||
tk.END,
|
tk.END,
|
||||||
@@ -1588,11 +1596,14 @@ Web site: https://github.com/Ircama/epson_print_conf
|
|||||||
self.config(cursor="")
|
self.config(cursor="")
|
||||||
self.update_idletasks()
|
self.update_idletasks()
|
||||||
return
|
return
|
||||||
|
pr_ser_num = self.printer.parm["serial_number"]
|
||||||
|
if isinstance(pr_ser_num, (list, tuple)):
|
||||||
|
list_ser_num = pr_ser_num
|
||||||
|
else:
|
||||||
|
list_ser_num = [pr_ser_num]
|
||||||
|
for i in list_ser_num:
|
||||||
try:
|
try:
|
||||||
if not self.get_current_eeprom_values(
|
if not self.get_current_eeprom_values(i, "Printer Serial Number"):
|
||||||
self.printer.parm["serial_number"],
|
|
||||||
"Printer Serial Number"
|
|
||||||
):
|
|
||||||
self.config(cursor="")
|
self.config(cursor="")
|
||||||
self.update_idletasks()
|
self.update_idletasks()
|
||||||
return
|
return
|
||||||
@@ -2146,11 +2157,14 @@ Web site: https://github.com/Ircama/epson_print_conf
|
|||||||
tk.END,
|
tk.END,
|
||||||
f"[ERROR] Cannot detect the serial number.\n"
|
f"[ERROR] Cannot detect the serial number.\n"
|
||||||
)
|
)
|
||||||
elif len(matches) != 1:
|
left_ser_num = None
|
||||||
|
for match in matches:
|
||||||
|
tmp_ser_num = match.group()
|
||||||
|
if left_ser_num is not None and tmp_ser_num != left_ser_num:
|
||||||
self.status_text.insert(
|
self.status_text.insert(
|
||||||
tk.END,
|
tk.END,
|
||||||
"[ERROR] More than one pattern appears to be"
|
"[ERROR] More than one pattern appears to be"
|
||||||
" a serial number:\n"
|
" a serial number with different values:\n"
|
||||||
)
|
)
|
||||||
for match in matches:
|
for match in matches:
|
||||||
self.status_text.insert(
|
self.status_text.insert(
|
||||||
@@ -2158,11 +2172,16 @@ Web site: https://github.com/Ircama/epson_print_conf
|
|||||||
f'[ERROR] - found pattern "{match.group()}"'
|
f'[ERROR] - found pattern "{match.group()}"'
|
||||||
f" at address {match.start()}\n"
|
f" at address {match.start()}\n"
|
||||||
)
|
)
|
||||||
else:
|
left_ser_num = None
|
||||||
serial_number = matches[0].group()
|
break
|
||||||
serial_number_address = matches[0].start()
|
left_ser_num = tmp_ser_num
|
||||||
|
if left_ser_num:
|
||||||
|
for match in matches:
|
||||||
|
serial_number = match.group()
|
||||||
|
serial_number_address = match.start()
|
||||||
serial_number_range = range(
|
serial_number_range = range(
|
||||||
serial_number_address, serial_number_address + len_ser_num
|
serial_number_address,
|
||||||
|
serial_number_address + len_ser_num
|
||||||
)
|
)
|
||||||
self.status_text.insert(
|
self.status_text.insert(
|
||||||
tk.END,
|
tk.END,
|
||||||
|
|||||||
Reference in New Issue
Block a user