dev error handler
This commit is contained in:
parent
055a0f5e4e
commit
5da86121de
|
|
@ -69,11 +69,11 @@ class ModbusComponent(Component):
|
||||||
self.lock.unlock()
|
self.lock.unlock()
|
||||||
except FileNotFoundError as e:
|
except FileNotFoundError as e:
|
||||||
error_message = f"Serial port error: {self.port} not found. Check your configuration."
|
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)
|
self.modbus_error_signal.emit(error_message)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
error_message = f"Configuration error: {str(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)
|
self.modbus_error_signal.emit(error_message)
|
||||||
|
|
||||||
def _read(self, register, count=1, **kwargs):
|
def _read(self, register, count=1, **kwargs):
|
||||||
|
|
@ -82,16 +82,18 @@ class ModbusComponent(Component):
|
||||||
try:
|
try:
|
||||||
read = self.client.read_holding_registers(register, count=count, **kwargs)
|
read = self.client.read_holding_registers(register, count=count, **kwargs)
|
||||||
if read.isError():
|
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}")
|
raise ValueError(f"Modbus read error at register {register}")
|
||||||
return read
|
return read
|
||||||
except pymodbus.exceptions.ConnectionException:
|
except pymodbus.exceptions.ConnectionException:
|
||||||
error_message = f"Modbus read failed: Connection error at port {self.port}"
|
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)
|
self.modbus_error_signal.emit(error_message)
|
||||||
return None # Return None to signal failure
|
return None # Return None to signal failure
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
error_message = f"Error reading Modbus register {register}: {str(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)
|
self.modbus_error_signal.emit(error_message)
|
||||||
return None
|
return None
|
||||||
finally:
|
finally:
|
||||||
|
|
@ -109,11 +111,11 @@ class ModbusComponent(Component):
|
||||||
return wrote
|
return wrote
|
||||||
except pymodbus.exceptions.ConnectionException as ce:
|
except pymodbus.exceptions.ConnectionException as ce:
|
||||||
error_message = f"Modbus write failed: Connection error at port {self.port}"
|
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)
|
self.modbus_error_signal.emit(error_message)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
error_message = f"Error writing Modbus register {register} with value {value}: {str(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)
|
self.modbus_error_signal.emit(error_message)
|
||||||
finally:
|
finally:
|
||||||
self.lock.unlock()
|
self.lock.unlock()
|
||||||
|
|
@ -122,7 +124,7 @@ class ModbusComponent(Component):
|
||||||
"""Decode data safely."""
|
"""Decode data safely."""
|
||||||
if read is None:
|
if read is None:
|
||||||
error_message = "Error decoding Modbus data: No data to decode (read returned 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)
|
self.modbus_error_signal.emit(error_message)
|
||||||
return None
|
return None
|
||||||
try:
|
try:
|
||||||
|
|
@ -134,11 +136,11 @@ class ModbusComponent(Component):
|
||||||
return int(abs(data)) if "uint" in data_type else int(data)
|
return int(abs(data)) if "uint" in data_type else int(data)
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
error_message = "Modbus read returned invalid data (NoneType encountered)"
|
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)
|
self.modbus_error_signal.emit(error_message)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
error_message = f"Error decoding Modbus data: {str(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)
|
self.modbus_error_signal.emit(error_message)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
@ -157,7 +159,7 @@ class ModbusComponent(Component):
|
||||||
return builder.build()
|
return builder.build()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
error_message = f"Error encoding Modbus data: {str(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)
|
self.modbus_error_signal.emit(error_message)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
@ -179,7 +181,7 @@ class ModbusComponent(Component):
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
error_message = f"Error inside Modbus read: {str(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)
|
self.modbus_error_signal.emit(error_message)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
@ -191,7 +193,7 @@ class ModbusComponent(Component):
|
||||||
self._write(register, encoded_data, **kwargs)
|
self._write(register, encoded_data, **kwargs)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
error_message = f"Error inside Modbus write: {str(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)
|
self.modbus_error_signal.emit(error_message)
|
||||||
|
|
||||||
def __del__(self, event=None):
|
def __del__(self, event=None):
|
||||||
|
|
@ -201,6 +203,6 @@ class ModbusComponent(Component):
|
||||||
self.client.close()
|
self.client.close()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
error_message = f"Error during Modbus cleanup: {str(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:
|
finally:
|
||||||
self.lock.unlock()
|
self.lock.unlock()
|
||||||
|
|
@ -478,9 +478,9 @@ class TecnaMarpossProvasetT3(ModbusComponent):
|
||||||
appropriate error signals for Tecna Marposs.
|
appropriate error signals for Tecna Marposs.
|
||||||
"""
|
"""
|
||||||
if error_message:
|
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)
|
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
|
return True, error_message
|
||||||
else:
|
else:
|
||||||
# Emit no error (False)
|
# Emit no error (False)
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import weakref
|
||||||
|
|
||||||
from PyQt5.QtGui import QPixmap
|
from PyQt5.QtGui import QPixmap
|
||||||
from PyQt5.QtWidgets import QMessageBox, QDialog, QApplication
|
from PyQt5.QtWidgets import QMessageBox, QDialog, QApplication
|
||||||
from PyQt5.QtCore import Qt
|
from PyQt5.QtCore import Qt, pyqtSlot
|
||||||
from ui import Dialog
|
from ui import Dialog
|
||||||
from ui.test_instructions_reminder import Test_Instructions_Reminder
|
from ui.test_instructions_reminder import Test_Instructions_Reminder
|
||||||
from ui.test_test import Test_Test
|
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.setVisible("show_instructions" in self.parent.config["hardware_config"].keys())
|
||||||
self.show_instruction_b.clicked.connect(self.show_instruction)
|
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):
|
def show_instruction(self):
|
||||||
dialog=Dialog()
|
dialog=Dialog()
|
||||||
dialog.setCentralWidget(Test_Instructions_Reminder(recipe=self.parent.recipe,bench_name=self.parent.config.machine_id))
|
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):
|
def save_last(self):
|
||||||
if self.last is None:
|
if self.last is None:
|
||||||
return
|
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()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user