dev error handler
This commit is contained in:
parent
055a0f5e4e
commit
5da86121de
|
|
@ -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()
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user