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
|
||||
if "serial_number" not in self.parm:
|
||||
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(
|
||||
chr(int(value or "0x3f", 16)) # "0x3f" --> "?"
|
||||
for value in self.read_eeprom_many(
|
||||
@@ -2076,11 +2088,30 @@ class EpsonPrinter:
|
||||
or not self.parm[parameter]
|
||||
or not 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
|
||||
if dry_run:
|
||||
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):
|
||||
if not self.write_eeprom(oid, value, label="update_" + parameter):
|
||||
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
|
||||
|
||||
|
||||
VERSION = "5.0"
|
||||
VERSION = "5.1"
|
||||
|
||||
NO_CONF_ERROR = (
|
||||
"[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.update_idletasks()
|
||||
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:
|
||||
self.status_text.insert(
|
||||
tk.END,
|
||||
@@ -1588,11 +1596,14 @@ Web site: https://github.com/Ircama/epson_print_conf
|
||||
self.config(cursor="")
|
||||
self.update_idletasks()
|
||||
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:
|
||||
if not self.get_current_eeprom_values(
|
||||
self.printer.parm["serial_number"],
|
||||
"Printer Serial Number"
|
||||
):
|
||||
if not self.get_current_eeprom_values(i, "Printer Serial Number"):
|
||||
self.config(cursor="")
|
||||
self.update_idletasks()
|
||||
return
|
||||
@@ -2146,11 +2157,14 @@ Web site: https://github.com/Ircama/epson_print_conf
|
||||
tk.END,
|
||||
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(
|
||||
tk.END,
|
||||
"[ERROR] More than one pattern appears to be"
|
||||
" a serial number:\n"
|
||||
" a serial number with different values:\n"
|
||||
)
|
||||
for match in matches:
|
||||
self.status_text.insert(
|
||||
@@ -2158,11 +2172,16 @@ Web site: https://github.com/Ircama/epson_print_conf
|
||||
f'[ERROR] - found pattern "{match.group()}"'
|
||||
f" at address {match.start()}\n"
|
||||
)
|
||||
else:
|
||||
serial_number = matches[0].group()
|
||||
serial_number_address = matches[0].start()
|
||||
left_ser_num = None
|
||||
break
|
||||
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_address, serial_number_address + len_ser_num
|
||||
serial_number_address,
|
||||
serial_number_address + len_ser_num
|
||||
)
|
||||
self.status_text.insert(
|
||||
tk.END,
|
||||
|
||||
Reference in New Issue
Block a user