Implement modbus resource siganls and improve connected state notifications

This commit is contained in:
Simon Stürz 2021-02-17 11:21:43 +01:00
parent abcfd32feb
commit a69b819373
4 changed files with 21 additions and 7 deletions

View File

@ -41,7 +41,17 @@ ModbusRtuHardwareResourceImplementation::ModbusRtuHardwareResourceImplementation
ModbusRtuHardwareResource(parent), ModbusRtuHardwareResource(parent),
m_modbusRtuManager(modbusRtuManager) m_modbusRtuManager(modbusRtuManager)
{ {
connect(m_modbusRtuManager, &ModbusRtuManager::modbusRtuMasterAdded, this, [=](ModbusRtuMaster *modbusRtuMaster){
emit modbusRtuMasterAdded(modbusRtuMaster->modbusUuid());
});
connect(m_modbusRtuManager, &ModbusRtuManager::modbusRtuMasterRemoved, this, [=](ModbusRtuMaster *modbusRtuMaster){
emit modbusRtuMasterRemoved(modbusRtuMaster->modbusUuid());
});
connect(m_modbusRtuManager, &ModbusRtuManager::modbusRtuMasterChanged, this, [=](ModbusRtuMaster *modbusRtuMaster){
emit modbusRtuMasterChanged(modbusRtuMaster->modbusUuid());
});
} }
QList<ModbusRtuMaster *> ModbusRtuHardwareResourceImplementation::modbusRtuMasters() const QList<ModbusRtuMaster *> ModbusRtuHardwareResourceImplementation::modbusRtuMasters() const
@ -61,7 +71,7 @@ ModbusRtuMaster *ModbusRtuHardwareResourceImplementation::getModbusRtuMaster(con
bool ModbusRtuHardwareResourceImplementation::available() const bool ModbusRtuHardwareResourceImplementation::available() const
{ {
return m_available; return m_modbusRtuManager->supported();
} }
bool ModbusRtuHardwareResourceImplementation::enabled() const bool ModbusRtuHardwareResourceImplementation::enabled() const

View File

@ -58,7 +58,7 @@ ModbusRtuManager::ModbusRtuManager(SerialPortMonitor *serialPortMonitor, QObject
if (!modbusMasterImpl->connectDevice()) { if (!modbusMasterImpl->connectDevice()) {
qCDebug(dcModbusRtu()) << "Reconnect" << modbusMaster << "failed."; qCDebug(dcModbusRtu()) << "Reconnect" << modbusMaster << "failed.";
} else { } else {
qCDebug(dcModbusRtu()) << "Reconnected" << modbusMaster << "sucessfully."; qCDebug(dcModbusRtu()) << "Reconnected" << modbusMaster << "successfully.";
} }
} }
} }

View File

@ -60,11 +60,15 @@ ModbusRtuMasterImpl::ModbusRtuMasterImpl(const QUuid &modbusUuid, const QString
connect(m_modbus, &QModbusTcpClient::stateChanged, this, [=](QModbusDevice::State state){ connect(m_modbus, &QModbusTcpClient::stateChanged, this, [=](QModbusDevice::State state){
qCDebug(dcModbusRtu()) << "Connection state changed" << m_modbusUuid.toString() << m_serialPort << state; qCDebug(dcModbusRtu()) << "Connection state changed" << m_modbusUuid.toString() << m_serialPort << state;
if (state == QModbusDevice::ConnectedState) { if (state == QModbusDevice::ConnectedState) {
m_connected = true; if (m_connected != true) {
emit connectedChanged(m_connected); m_connected = true;
emit connectedChanged(m_connected);
}
} else { } else {
m_connected = false; if (m_connected != false) {
emit connectedChanged(m_connected); m_connected = false;
emit connectedChanged(m_connected);
}
} }
}); });

View File

@ -79,7 +79,7 @@ inline QDebug operator<<(QDebug debug, ModbusRtuMaster *modbusRtuMaster) {
debug.nospace() << "ModbusRtuMaster(" << modbusRtuMaster->modbusUuid().toString(); debug.nospace() << "ModbusRtuMaster(" << modbusRtuMaster->modbusUuid().toString();
debug.nospace() << ", " << modbusRtuMaster->serialPort(); debug.nospace() << ", " << modbusRtuMaster->serialPort();
debug.nospace() << ", BaudRate: " << modbusRtuMaster->baudrate() << ") "; debug.nospace() << ", BaudRate: " << modbusRtuMaster->baudrate() << ") ";
return debug; return debug.space();
}; };