dev error handler

This commit is contained in:
edo-neo 2025-02-06 16:17:45 +01:00
parent 055a0f5e4e
commit 5da86121de
3 changed files with 33 additions and 16 deletions

View File

@ -69,11 +69,11 @@ class ModbusComponent(Component):
self.lock.unlock()
except FileNotFoundError as e:
error_message = f"Serial port error: {self.port} not found. Check your configuration."
self.log.error(error_message, exc_info=True)
#self.log.error(error_message, exc_info=True)
self.modbus_error_signal.emit(error_message)
except Exception as e:
error_message = f"Configuration error: {str(e)}"
self.log.error(error_message, exc_info=True)
#self.log.error(error_message, exc_info=True)
self.modbus_error_signal.emit(error_message)
def _read(self, register, count=1, **kwargs):
@ -82,16 +82,18 @@ class ModbusComponent(Component):
try:
read = self.client.read_holding_registers(register, count=count, **kwargs)
if read.isError():
error_message = f"Modbus read failed: Could not read Modbus register {register}"
self.modbus_error_signal.emit(error_message)
raise ValueError(f"Modbus read error at register {register}")
return read
except pymodbus.exceptions.ConnectionException:
error_message = f"Modbus read failed: Connection error at port {self.port}"
self.log.error(error_message, exc_info=True)
#self.log.error(error_message, exc_info=True)
self.modbus_error_signal.emit(error_message)
return None # Return None to signal failure
except Exception as e:
error_message = f"Error reading Modbus register {register}: {str(e)}"
self.log.error(error_message, exc_info=True)
#self.log.error(error_message, exc_info=True)
self.modbus_error_signal.emit(error_message)
return None
finally:
@ -109,11 +111,11 @@ class ModbusComponent(Component):
return wrote
except pymodbus.exceptions.ConnectionException as ce:
error_message = f"Modbus write failed: Connection error at port {self.port}"
self.log.error(error_message, exc_info=True)
#self.log.error(error_message, exc_info=True)
self.modbus_error_signal.emit(error_message)
except Exception as e:
error_message = f"Error writing Modbus register {register} with value {value}: {str(e)}"
self.log.error(error_message, exc_info=True)
#self.log.error(error_message, exc_info=True)
self.modbus_error_signal.emit(error_message)
finally:
self.lock.unlock()
@ -122,7 +124,7 @@ class ModbusComponent(Component):
"""Decode data safely."""
if read is None:
error_message = "Error decoding Modbus data: No data to decode (read returned None)"
self.log.error(error_message)
#self.log.error(error_message)
self.modbus_error_signal.emit(error_message)
return None
try:
@ -134,11 +136,11 @@ class ModbusComponent(Component):
return int(abs(data)) if "uint" in data_type else int(data)
except AttributeError:
error_message = "Modbus read returned invalid data (NoneType encountered)"
self.log.error(error_message)
#self.log.error(error_message)
self.modbus_error_signal.emit(error_message)
except Exception as e:
error_message = f"Error decoding Modbus data: {str(e)}"
self.log.error(error_message, exc_info=True)
#self.log.error(error_message, exc_info=True)
self.modbus_error_signal.emit(error_message)
return None
@ -157,7 +159,7 @@ class ModbusComponent(Component):
return builder.build()
except Exception as e:
error_message = f"Error encoding Modbus data: {str(e)}"
self.log.error(error_message, exc_info=True)
#self.log.error(error_message, exc_info=True)
self.modbus_error_signal.emit(error_message)
return None
@ -179,7 +181,7 @@ class ModbusComponent(Component):
)
except Exception as e:
error_message = f"Error inside Modbus read: {str(e)}"
self.log.error(error_message, exc_info=True)
#self.log.error(error_message, exc_info=True)
self.modbus_error_signal.emit(error_message)
return None
@ -191,7 +193,7 @@ class ModbusComponent(Component):
self._write(register, encoded_data, **kwargs)
except Exception as e:
error_message = f"Error inside Modbus write: {str(e)}"
self.log.error(error_message, exc_info=True)
#self.log.error(error_message, exc_info=True)
self.modbus_error_signal.emit(error_message)
def __del__(self, event=None):
@ -201,6 +203,6 @@ class ModbusComponent(Component):
self.client.close()
except Exception as e:
error_message = f"Error during Modbus cleanup: {str(e)}"
self.log.error(error_message, exc_info=True)
#self.log.error(error_message, exc_info=True)
finally:
self.lock.unlock()

View File

@ -478,9 +478,9 @@ class TecnaMarpossProvasetT3(ModbusComponent):
appropriate error signals for Tecna Marposs.
"""
if error_message:
# Emit the Tecna-specific error signal with True and traceback
# Emit the Tecna-specific error signal with True and the error message
self.tecna_error_signal.emit(True, error_message)
#print(f"{error_message}-Tecna Marposs")
self.log.error(f"Modbus error encountered: {error_message}")
return True, error_message
else:
# Emit no error (False)

View File

@ -4,7 +4,7 @@ import weakref
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QMessageBox, QDialog, QApplication
from PyQt5.QtCore import Qt
from PyQt5.QtCore import Qt, pyqtSlot
from ui import Dialog
from ui.test_instructions_reminder import Test_Instructions_Reminder
from ui.test_test import Test_Test
@ -26,6 +26,8 @@ class Test_Leak(Test_Test):
self.show_instruction_b.setVisible("show_instructions" in self.parent.config["hardware_config"].keys())
self.show_instruction_b.clicked.connect(self.show_instruction)
self.components[self.tester_component].tecna_error_signal.connect(self.handle_modbus_error)
def show_instruction(self):
dialog=Dialog()
dialog.setCentralWidget(Test_Instructions_Reminder(recipe=self.parent.recipe,bench_name=self.parent.config.machine_id))
@ -312,3 +314,16 @@ class Test_Leak(Test_Test):
def save_last(self):
if self.last is None:
return
@pyqtSlot(bool, str)
def handle_modbus_error(self, error, error_message):
"""
Handle errors received from the Modbus component and stop the test gracefully.
"""
if error:
self.display_text(
text=f"ERRORE TECNA TEST INTERROTTO.",
bg_color="red", text_color="white"
)
self.parent.fail_cycle()
self.stop_test()