Merge PR #67: Update overall modbus reply handling in generated classes and source

pull/71/head
jenkins 2022-06-14 14:54:46 +02:00
commit dc208efced
9 changed files with 28 additions and 60 deletions

View File

@ -370,7 +370,6 @@ void IntegrationPluginAlphaInnotec::executeAction(ThingActionInfo *info)
connect(reply, &QModbusReply::errorOccurred, this, [reply] (QModbusDevice::Error error){ connect(reply, &QModbusReply::errorOccurred, this, [reply] (QModbusDevice::Error error){
qCWarning(dcAlphaInnotec()) << "Modbus reply error occurred while execute action" << error << reply->errorString(); qCWarning(dcAlphaInnotec()) << "Modbus reply error occurred while execute action" << error << reply->errorString();
emit reply->finished(); // To make sure it will be deleted
}); });
} else */ } else */
if (info->action().actionTypeId() == alphaConnectHotWaterSetpointTemperatureActionTypeId) { if (info->action().actionTypeId() == alphaConnectHotWaterSetpointTemperatureActionTypeId) {
@ -398,7 +397,6 @@ void IntegrationPluginAlphaInnotec::executeAction(ThingActionInfo *info)
connect(reply, &QModbusReply::errorOccurred, this, [reply] (QModbusDevice::Error error){ connect(reply, &QModbusReply::errorOccurred, this, [reply] (QModbusDevice::Error error){
qCWarning(dcAlphaInnotec()) << "Modbus reply error occurred while execute action" << error << reply->errorString(); qCWarning(dcAlphaInnotec()) << "Modbus reply error occurred while execute action" << error << reply->errorString();
emit reply->finished(); // To make sure it will be deleted
}); });
} else if (info->action().actionTypeId() == alphaConnectReturnSetpointTemperatureActionTypeId) { } else if (info->action().actionTypeId() == alphaConnectReturnSetpointTemperatureActionTypeId) {
double temperature = info->action().paramValue(alphaConnectReturnSetpointTemperatureActionReturnSetpointTemperatureParamTypeId).toDouble(); double temperature = info->action().paramValue(alphaConnectReturnSetpointTemperatureActionReturnSetpointTemperatureParamTypeId).toDouble();
@ -425,7 +423,6 @@ void IntegrationPluginAlphaInnotec::executeAction(ThingActionInfo *info)
connect(reply, &QModbusReply::errorOccurred, this, [reply] (QModbusDevice::Error error){ connect(reply, &QModbusReply::errorOccurred, this, [reply] (QModbusDevice::Error error){
qCWarning(dcAlphaInnotec()) << "Modbus reply error occurred while execute action" << error << reply->errorString(); qCWarning(dcAlphaInnotec()) << "Modbus reply error occurred while execute action" << error << reply->errorString();
emit reply->finished(); // To make sure it will be deleted
}); });
} else if (info->action().actionTypeId() == alphaConnectSgReadyModeActionTypeId) { } else if (info->action().actionTypeId() == alphaConnectSgReadyModeActionTypeId) {
QString sgReadyModeString = info->action().paramValue(alphaConnectSgReadyModeActionSgReadyModeParamTypeId).toString(); QString sgReadyModeString = info->action().paramValue(alphaConnectSgReadyModeActionSgReadyModeParamTypeId).toString();
@ -463,7 +460,6 @@ void IntegrationPluginAlphaInnotec::executeAction(ThingActionInfo *info)
connect(reply, &QModbusReply::errorOccurred, this, [reply] (QModbusDevice::Error error){ connect(reply, &QModbusReply::errorOccurred, this, [reply] (QModbusDevice::Error error){
qCWarning(dcAlphaInnotec()) << "Modbus reply error occurred while execute action" << error << reply->errorString(); qCWarning(dcAlphaInnotec()) << "Modbus reply error occurred while execute action" << error << reply->errorString();
emit reply->finished(); // To make sure it will be deleted
}); });
} }
} }

View File

@ -105,10 +105,9 @@ void HuaweiFusionSolar::readNextRegister()
connect(reply, &QModbusReply::errorOccurred, this, [this, reply] (QModbusDevice::Error error){ connect(reply, &QModbusReply::errorOccurred, this, [this, reply] (QModbusDevice::Error error){
qCWarning(dcHuaweiFusionSolar()) << "Modbus reply error occurred while updating \"Inverter active power\" registers from" << hostAddress().toString() << error << reply->errorString(); qCWarning(dcHuaweiFusionSolar()) << "Modbus reply error occurred while updating \"Inverter active power\" registers from" << hostAddress().toString() << error << reply->errorString();
emit reply->finished(); // To make sure it will be deleted
}); });
} else { } else {
delete reply; // Broadcast reply returns immediatly reply->deleteLater(); // Broadcast reply returns immediatly
finishRequest(); finishRequest();
} }
} else { } else {
@ -137,10 +136,9 @@ void HuaweiFusionSolar::readNextRegister()
connect(reply, &QModbusReply::errorOccurred, this, [this, reply] (QModbusDevice::Error error){ connect(reply, &QModbusReply::errorOccurred, this, [this, reply] (QModbusDevice::Error error){
qCWarning(dcHuaweiFusionSolar()) << "Modbus reply error occurred while updating \"Inverter device status\" registers from" << hostAddress().toString() << error << reply->errorString(); qCWarning(dcHuaweiFusionSolar()) << "Modbus reply error occurred while updating \"Inverter device status\" registers from" << hostAddress().toString() << error << reply->errorString();
emit reply->finished(); // To make sure it will be deleted
}); });
} else { } else {
delete reply; // Broadcast reply returns immediatly reply->deleteLater(); // Broadcast reply returns immediatly
finishRequest(); finishRequest();
} }
} else { } else {
@ -168,10 +166,9 @@ void HuaweiFusionSolar::readNextRegister()
connect(reply, &QModbusReply::errorOccurred, this, [this, reply] (QModbusDevice::Error error){ connect(reply, &QModbusReply::errorOccurred, this, [this, reply] (QModbusDevice::Error error){
qCWarning(dcHuaweiFusionSolar()) << "Modbus reply error occurred while updating \"Inverter energy produced\" registers from" << hostAddress().toString() << error << reply->errorString(); qCWarning(dcHuaweiFusionSolar()) << "Modbus reply error occurred while updating \"Inverter energy produced\" registers from" << hostAddress().toString() << error << reply->errorString();
emit reply->finished(); // To make sure it will be deleted
}); });
} else { } else {
delete reply; // Broadcast reply returns immediatly reply->deleteLater(); // Broadcast reply returns immediatly
finishRequest(); finishRequest();
} }
} else { } else {
@ -205,10 +202,9 @@ void HuaweiFusionSolar::readNextRegister()
connect(reply, &QModbusReply::errorOccurred, this, [this, reply] (QModbusDevice::Error error){ connect(reply, &QModbusReply::errorOccurred, this, [this, reply] (QModbusDevice::Error error){
qCWarning(dcHuaweiFusionSolar()) << "Modbus reply error occurred while updating \"Luna 2000 Battery 1 status\" registers from" << hostAddress().toString() << error << reply->errorString(); qCWarning(dcHuaweiFusionSolar()) << "Modbus reply error occurred while updating \"Luna 2000 Battery 1 status\" registers from" << hostAddress().toString() << error << reply->errorString();
emit reply->finished(); // To make sure it will be deleted
}); });
} else { } else {
delete reply; // Broadcast reply returns immediatly reply->deleteLater(); // Broadcast reply returns immediatly
finishRequest(); finishRequest();
} }
} else { } else {
@ -236,10 +232,9 @@ void HuaweiFusionSolar::readNextRegister()
connect(reply, &QModbusReply::errorOccurred, this, [this, reply] (QModbusDevice::Error error){ connect(reply, &QModbusReply::errorOccurred, this, [this, reply] (QModbusDevice::Error error){
qCWarning(dcHuaweiFusionSolar()) << "Modbus reply error occurred while updating \"Luna 2000 Battery 1 power\" registers from" << hostAddress().toString() << error << reply->errorString(); qCWarning(dcHuaweiFusionSolar()) << "Modbus reply error occurred while updating \"Luna 2000 Battery 1 power\" registers from" << hostAddress().toString() << error << reply->errorString();
emit reply->finished(); // To make sure it will be deleted
}); });
} else { } else {
delete reply; // Broadcast reply returns immediatly reply->deleteLater(); // Broadcast reply returns immediatly
finishRequest(); finishRequest();
} }
} else { } else {
@ -267,10 +262,9 @@ void HuaweiFusionSolar::readNextRegister()
connect(reply, &QModbusReply::errorOccurred, this, [this, reply] (QModbusDevice::Error error){ connect(reply, &QModbusReply::errorOccurred, this, [this, reply] (QModbusDevice::Error error){
qCWarning(dcHuaweiFusionSolar()) << "Modbus reply error occurred while updating \"Luna 2000 Battery 1 state of charge\" registers from" << hostAddress().toString() << error << reply->errorString(); qCWarning(dcHuaweiFusionSolar()) << "Modbus reply error occurred while updating \"Luna 2000 Battery 1 state of charge\" registers from" << hostAddress().toString() << error << reply->errorString();
emit reply->finished(); // To make sure it will be deleted
}); });
} else { } else {
delete reply; // Broadcast reply returns immediatly reply->deleteLater(); // Broadcast reply returns immediatly
finishRequest(); finishRequest();
} }
} else { } else {
@ -298,10 +292,9 @@ void HuaweiFusionSolar::readNextRegister()
connect(reply, &QModbusReply::errorOccurred, this, [this, reply] (QModbusDevice::Error error){ connect(reply, &QModbusReply::errorOccurred, this, [this, reply] (QModbusDevice::Error error){
qCWarning(dcHuaweiFusionSolar()) << "Modbus reply error occurred while updating \"Power meter active power\" registers from" << hostAddress().toString() << error << reply->errorString(); qCWarning(dcHuaweiFusionSolar()) << "Modbus reply error occurred while updating \"Power meter active power\" registers from" << hostAddress().toString() << error << reply->errorString();
emit reply->finished(); // To make sure it will be deleted
}); });
} else { } else {
delete reply; // Broadcast reply returns immediatly reply->deleteLater(); // Broadcast reply returns immediatly
finishRequest(); finishRequest();
} }
} else { } else {
@ -335,10 +328,9 @@ void HuaweiFusionSolar::readNextRegister()
connect(reply, &QModbusReply::errorOccurred, this, [this, reply] (QModbusDevice::Error error){ connect(reply, &QModbusReply::errorOccurred, this, [this, reply] (QModbusDevice::Error error){
qCWarning(dcHuaweiFusionSolar()) << "Modbus reply error occurred while updating \"Luna 2000 Battery 2 status\" registers from" << hostAddress().toString() << error << reply->errorString(); qCWarning(dcHuaweiFusionSolar()) << "Modbus reply error occurred while updating \"Luna 2000 Battery 2 status\" registers from" << hostAddress().toString() << error << reply->errorString();
emit reply->finished(); // To make sure it will be deleted
}); });
} else { } else {
delete reply; // Broadcast reply returns immediatly reply->deleteLater(); // Broadcast reply returns immediatly
finishRequest(); finishRequest();
} }
} else { } else {
@ -366,10 +358,9 @@ void HuaweiFusionSolar::readNextRegister()
connect(reply, &QModbusReply::errorOccurred, this, [this, reply] (QModbusDevice::Error error){ connect(reply, &QModbusReply::errorOccurred, this, [this, reply] (QModbusDevice::Error error){
qCWarning(dcHuaweiFusionSolar()) << "Modbus reply error occurred while updating \"Luna 2000 Battery 2 power\" registers from" << hostAddress().toString() << error << reply->errorString(); qCWarning(dcHuaweiFusionSolar()) << "Modbus reply error occurred while updating \"Luna 2000 Battery 2 power\" registers from" << hostAddress().toString() << error << reply->errorString();
emit reply->finished(); // To make sure it will be deleted
}); });
} else { } else {
delete reply; // Broadcast reply returns immediatly reply->deleteLater(); // Broadcast reply returns immediatly
finishRequest(); finishRequest();
} }
} else { } else {
@ -397,10 +388,9 @@ void HuaweiFusionSolar::readNextRegister()
connect(reply, &QModbusReply::errorOccurred, this, [this, reply] (QModbusDevice::Error error){ connect(reply, &QModbusReply::errorOccurred, this, [this, reply] (QModbusDevice::Error error){
qCWarning(dcHuaweiFusionSolar()) << "Modbus reply error occurred while updating \"Luna 2000 Battery 2 state of charge\" registers from" << hostAddress().toString() << error << reply->errorString(); qCWarning(dcHuaweiFusionSolar()) << "Modbus reply error occurred while updating \"Luna 2000 Battery 2 state of charge\" registers from" << hostAddress().toString() << error << reply->errorString();
emit reply->finished(); // To make sure it will be deleted
}); });
} else { } else {
delete reply; // Broadcast reply returns immediatly reply->deleteLater(); // Broadcast reply returns immediatly
finishRequest(); finishRequest();
} }
} else { } else {

View File

@ -190,12 +190,11 @@ QUuid ModbusTCPMaster::readCoil(uint slaveAddress, uint registerAddress, uint si
connect(reply, &QModbusReply::errorOccurred, this, [reply, requestId, this] (QModbusDevice::Error error){ connect(reply, &QModbusReply::errorOccurred, this, [reply, requestId, this] (QModbusDevice::Error error){
qCWarning(dcModbusTcpMaster()) << "Modbus reply error:" << error; qCWarning(dcModbusTcpMaster()) << "Modbus reply error:" << error;
emit readRequestError(requestId, reply->errorString()); emit readRequestError(requestId, reply->errorString());
emit reply->finished(); // To make sure it will be deleted
}); });
QTimer::singleShot(200, reply, &QModbusReply::deleteLater); QTimer::singleShot(200, reply, &QModbusReply::deleteLater);
} else { } else {
delete reply; // broadcast replies return immediately reply->deleteLater(); // broadcast replies return immediately
return QUuid(); return QUuid();
} }
} else { } else {
@ -233,12 +232,11 @@ QUuid ModbusTCPMaster::writeHoldingRegisters(uint slaveAddress, uint registerAdd
connect(reply, &QModbusReply::errorOccurred, this, [reply, requestId, this] (QModbusDevice::Error error){ connect(reply, &QModbusReply::errorOccurred, this, [reply, requestId, this] (QModbusDevice::Error error){
qCWarning(dcModbusTcpMaster()) << "Modbus replay error:" << error; qCWarning(dcModbusTcpMaster()) << "Modbus replay error:" << error;
emit writeRequestError(requestId, reply->errorString()); emit writeRequestError(requestId, reply->errorString());
emit reply->finished(); // To make sure it will be deleted
}); });
QTimer::singleShot(2000, reply, &QModbusReply::deleteLater); QTimer::singleShot(2000, reply, &QModbusReply::deleteLater);
} else { } else {
delete reply; // broadcast replies return immediately reply->deleteLater(); // broadcast replies return immediately
return QUuid(); return QUuid();
} }
} else { } else {
@ -292,16 +290,14 @@ QUuid ModbusTCPMaster::readDiscreteInput(uint slaveAddress, uint registerAddress
} }
}); });
connect(reply, &QModbusReply::errorOccurred, this, [requestId, this] (QModbusDevice::Error error){ connect(reply, &QModbusReply::errorOccurred, this, [requestId, reply, this] (QModbusDevice::Error error){
qCWarning(dcModbusTcpMaster()) << "Modbus replay error:" << error; qCWarning(dcModbusTcpMaster()) << "Modbus replay error:" << error;
QModbusReply *reply = qobject_cast<QModbusReply *>(sender());
emit readRequestError(requestId, reply->errorString()); emit readRequestError(requestId, reply->errorString());
emit reply->finished(); // To make sure it will be deleted
}); });
QTimer::singleShot(2000, reply, &QModbusReply::deleteLater); QTimer::singleShot(2000, reply, &QModbusReply::deleteLater);
} else { } else {
delete reply; // broadcast replies return immediately reply->deleteLater(); // broadcast replies return immediately
return QUuid(); return QUuid();
} }
} else { } else {
@ -339,13 +335,12 @@ QUuid ModbusTCPMaster::readInputRegister(uint slaveAddress, uint registerAddress
connect(reply, &QModbusReply::errorOccurred, this, [reply, requestId, this] (QModbusDevice::Error error){ connect(reply, &QModbusReply::errorOccurred, this, [reply, requestId, this] (QModbusDevice::Error error){
qCWarning(dcModbusTcpMaster()) << "Modbus reply error:" << error; qCWarning(dcModbusTcpMaster()) << "Modbus reply error:" << error;
emit readRequestError(requestId, reply->errorString()); emit readRequestError(requestId, reply->errorString());
emit reply->finished(); // To make sure it will be deleted
}); });
QTimer::singleShot(2000, reply, &QModbusReply::deleteLater); QTimer::singleShot(2000, reply, &QModbusReply::deleteLater);
} else { } else {
delete reply; // broadcast replies return immediately reply->deleteLater(); // broadcast replies return immediately
return QUuid(); return QUuid();
} }
} else { } else {
@ -387,12 +382,11 @@ QUuid ModbusTCPMaster::readHoldingRegister(uint slaveAddress, uint registerAddre
qCWarning(dcModbusTcpMaster()) << "Modbus reply error:" << error; qCWarning(dcModbusTcpMaster()) << "Modbus reply error:" << error;
emit readRequestError(requestId, reply->errorString()); emit readRequestError(requestId, reply->errorString());
emit reply->finished(); // To make sure it will be deleted
}); });
QTimer::singleShot(2000, reply, &QModbusReply::deleteLater); QTimer::singleShot(2000, reply, &QModbusReply::deleteLater);
} else { } else {
delete reply; // broadcast replies return immediately reply->deleteLater(); // broadcast replies return immediately
return QUuid(); return QUuid();
} }
} else { } else {
@ -438,12 +432,11 @@ QUuid ModbusTCPMaster::writeCoils(uint slaveAddress, uint registerAddress, const
connect(reply, &QModbusReply::errorOccurred, this, [reply, requestId, this] (QModbusDevice::Error error){ connect(reply, &QModbusReply::errorOccurred, this, [reply, requestId, this] (QModbusDevice::Error error){
qCWarning(dcModbusTcpMaster()) << "Modbus reply error:" << error; qCWarning(dcModbusTcpMaster()) << "Modbus reply error:" << error;
emit writeRequestError(requestId, reply->errorString()); emit writeRequestError(requestId, reply->errorString());
emit reply->finished(); // To make sure it will be deleted
}); });
QTimer::singleShot(2000, reply, &QModbusReply::deleteLater); QTimer::singleShot(2000, reply, &QModbusReply::deleteLater);
} else { } else {
delete reply; // broadcast replies return immediately reply->deleteLater(); // broadcast replies return immediately
return QUuid(); return QUuid();
} }
} else { } else {

View File

@ -98,7 +98,6 @@ def writePropertyUpdateMethodImplementationsRtu(fileDescriptor, className, regis
writeLine(fileDescriptor) writeLine(fileDescriptor)
writeLine(fileDescriptor, ' connect(reply, &ModbusRtuReply::errorOccurred, this, [reply] (ModbusRtuReply::Error error){') writeLine(fileDescriptor, ' connect(reply, &ModbusRtuReply::errorOccurred, this, [reply] (ModbusRtuReply::Error error){')
writeLine(fileDescriptor, ' qCWarning(dc%s()) << "ModbusRtu reply error occurred while updating \\"%s\\" registers" << error << reply->errorString();' % (className, registerDefinition['description'])) writeLine(fileDescriptor, ' qCWarning(dc%s()) << "ModbusRtu reply error occurred while updating \\"%s\\" registers" << error << reply->errorString();' % (className, registerDefinition['description']))
writeLine(fileDescriptor, ' emit reply->finished();')
writeLine(fileDescriptor, ' });') writeLine(fileDescriptor, ' });')
writeLine(fileDescriptor, ' }') writeLine(fileDescriptor, ' }')
writeLine(fileDescriptor, ' } else {') writeLine(fileDescriptor, ' } else {')
@ -162,7 +161,6 @@ def writeBlockUpdateMethodImplementationsRtu(fileDescriptor, className, blockDef
writeLine(fileDescriptor) writeLine(fileDescriptor)
writeLine(fileDescriptor, ' connect(reply, &ModbusRtuReply::errorOccurred, this, [reply] (ModbusRtuReply::Error error){') writeLine(fileDescriptor, ' connect(reply, &ModbusRtuReply::errorOccurred, this, [reply] (ModbusRtuReply::Error error){')
writeLine(fileDescriptor, ' qCWarning(dc%s()) << "ModbusRtu reply error occurred while updating block \\"%s\\" registers" << error << reply->errorString();' % (className, blockName)) writeLine(fileDescriptor, ' qCWarning(dc%s()) << "ModbusRtu reply error occurred while updating block \\"%s\\" registers" << error << reply->errorString();' % (className, blockName))
writeLine(fileDescriptor, ' emit reply->finished();')
writeLine(fileDescriptor, ' });') writeLine(fileDescriptor, ' });')
writeLine(fileDescriptor, ' }') writeLine(fileDescriptor, ' }')
writeLine(fileDescriptor, ' } else {') writeLine(fileDescriptor, ' } else {')
@ -315,7 +313,6 @@ def writeInitMethodImplementationRtu(fileDescriptor, className, registerDefiniti
writeLine(fileDescriptor) writeLine(fileDescriptor)
writeLine(fileDescriptor, ' connect(reply, &ModbusRtuReply::errorOccurred, this, [reply] (ModbusRtuReply::Error error){') writeLine(fileDescriptor, ' connect(reply, &ModbusRtuReply::errorOccurred, this, [reply] (ModbusRtuReply::Error error){')
writeLine(fileDescriptor, ' qCWarning(dc%s()) << "ModbusRtu reply error occurred while updating \\"%s\\" registers" << error << reply->errorString();' % (className, registerDefinition['description'])) writeLine(fileDescriptor, ' qCWarning(dc%s()) << "ModbusRtu reply error occurred while updating \\"%s\\" registers" << error << reply->errorString();' % (className, registerDefinition['description']))
writeLine(fileDescriptor, ' emit reply->finished();')
writeLine(fileDescriptor, ' });') writeLine(fileDescriptor, ' });')
writeLine(fileDescriptor, ' }') writeLine(fileDescriptor, ' }')
writeLine(fileDescriptor, ' } else {') writeLine(fileDescriptor, ' } else {')
@ -367,7 +364,6 @@ def writeInitMethodImplementationRtu(fileDescriptor, className, registerDefiniti
writeLine(fileDescriptor) writeLine(fileDescriptor)
writeLine(fileDescriptor, ' connect(reply, &ModbusRtuReply::errorOccurred, this, [reply] (ModbusRtuReply::Error error){') writeLine(fileDescriptor, ' connect(reply, &ModbusRtuReply::errorOccurred, this, [reply] (ModbusRtuReply::Error error){')
writeLine(fileDescriptor, ' qCWarning(dc%s()) << "ModbusRtu reply error occurred while updating block \\"%s\\" registers" << error << reply->errorString();' % (className, blockName)) writeLine(fileDescriptor, ' qCWarning(dc%s()) << "ModbusRtu reply error occurred while updating block \\"%s\\" registers" << error << reply->errorString();' % (className, blockName))
writeLine(fileDescriptor, ' emit reply->finished();')
writeLine(fileDescriptor, ' });') writeLine(fileDescriptor, ' });')
writeLine(fileDescriptor, ' }') writeLine(fileDescriptor, ' }')
writeLine(fileDescriptor, ' } else {') writeLine(fileDescriptor, ' } else {')

View File

@ -98,10 +98,9 @@ def writePropertyUpdateMethodImplementationsTcp(fileDescriptor, className, regis
writeLine(fileDescriptor) writeLine(fileDescriptor)
writeLine(fileDescriptor, ' connect(reply, &QModbusReply::errorOccurred, this, [this, reply] (QModbusDevice::Error error){') writeLine(fileDescriptor, ' connect(reply, &QModbusReply::errorOccurred, this, [this, reply] (QModbusDevice::Error error){')
writeLine(fileDescriptor, ' qCWarning(dc%s()) << "Modbus reply error occurred while updating \\"%s\\" registers from" << hostAddress().toString() << error << reply->errorString();' % (className, registerDefinition['description'])) writeLine(fileDescriptor, ' qCWarning(dc%s()) << "Modbus reply error occurred while updating \\"%s\\" registers from" << hostAddress().toString() << error << reply->errorString();' % (className, registerDefinition['description']))
writeLine(fileDescriptor, ' emit reply->finished(); // To make sure it will be deleted')
writeLine(fileDescriptor, ' });') writeLine(fileDescriptor, ' });')
writeLine(fileDescriptor, ' } else {') writeLine(fileDescriptor, ' } else {')
writeLine(fileDescriptor, ' delete reply; // Broadcast reply returns immediatly') writeLine(fileDescriptor, ' reply->deleteLater(); // Broadcast reply returns immediatly')
writeLine(fileDescriptor, ' }') writeLine(fileDescriptor, ' }')
writeLine(fileDescriptor, ' } else {') writeLine(fileDescriptor, ' } else {')
writeLine(fileDescriptor, ' qCWarning(dc%s()) << "Error occurred while reading \\"%s\\" registers from" << hostAddress().toString() << errorString();' % (className, registerDefinition['description'])) writeLine(fileDescriptor, ' qCWarning(dc%s()) << "Error occurred while reading \\"%s\\" registers from" << hostAddress().toString() << errorString();' % (className, registerDefinition['description']))
@ -154,7 +153,6 @@ def writeBlockUpdateMethodImplementationsTcp(fileDescriptor, className, blockDef
writeLine(fileDescriptor) writeLine(fileDescriptor)
writeLine(fileDescriptor, ' connect(reply, &QModbusReply::errorOccurred, this, [reply] (QModbusDevice::Error error){') writeLine(fileDescriptor, ' connect(reply, &QModbusReply::errorOccurred, this, [reply] (QModbusDevice::Error error){')
writeLine(fileDescriptor, ' qCWarning(dc%s()) << "Modbus reply error occurred while updating block \\"%s\\" registers" << error << reply->errorString();' % (className, blockName)) writeLine(fileDescriptor, ' qCWarning(dc%s()) << "Modbus reply error occurred while updating block \\"%s\\" registers" << error << reply->errorString();' % (className, blockName))
writeLine(fileDescriptor, ' emit reply->finished();')
writeLine(fileDescriptor, ' });') writeLine(fileDescriptor, ' });')
writeLine(fileDescriptor, ' }') writeLine(fileDescriptor, ' }')
writeLine(fileDescriptor, ' } else {') writeLine(fileDescriptor, ' } else {')
@ -313,10 +311,9 @@ def writeInitMethodImplementationTcp(fileDescriptor, className, registerDefiniti
writeLine(fileDescriptor) writeLine(fileDescriptor)
writeLine(fileDescriptor, ' connect(reply, &QModbusReply::errorOccurred, this, [this, reply] (QModbusDevice::Error error){') writeLine(fileDescriptor, ' connect(reply, &QModbusReply::errorOccurred, this, [this, reply] (QModbusDevice::Error error){')
writeLine(fileDescriptor, ' qCWarning(dc%s()) << "Modbus reply error occurred while reading \\"%s\\" registers from" << hostAddress().toString() << error << reply->errorString();' % (className, registerDefinition['description'])) writeLine(fileDescriptor, ' qCWarning(dc%s()) << "Modbus reply error occurred while reading \\"%s\\" registers from" << hostAddress().toString() << error << reply->errorString();' % (className, registerDefinition['description']))
writeLine(fileDescriptor, ' emit reply->finished(); // To make sure it will be deleted')
writeLine(fileDescriptor, ' });') writeLine(fileDescriptor, ' });')
writeLine(fileDescriptor, ' } else {') writeLine(fileDescriptor, ' } else {')
writeLine(fileDescriptor, ' delete reply; // Broadcast reply returns immediatly') writeLine(fileDescriptor, ' reply->deleteLater(); // Broadcast reply returns immediatly')
writeLine(fileDescriptor, ' }') writeLine(fileDescriptor, ' }')
writeLine(fileDescriptor, ' } else {') writeLine(fileDescriptor, ' } else {')
writeLine(fileDescriptor, ' qCWarning(dc%s()) << "Error occurred while reading \\"%s\\" registers from" << hostAddress().toString() << errorString();' % (className, registerDefinition['description'])) writeLine(fileDescriptor, ' qCWarning(dc%s()) << "Error occurred while reading \\"%s\\" registers from" << hostAddress().toString() << errorString();' % (className, registerDefinition['description']))
@ -369,7 +366,6 @@ def writeInitMethodImplementationTcp(fileDescriptor, className, registerDefiniti
writeLine(fileDescriptor) writeLine(fileDescriptor)
writeLine(fileDescriptor, ' connect(reply, &QModbusReply::errorOccurred, this, [reply] (QModbusDevice::Error error){') writeLine(fileDescriptor, ' connect(reply, &QModbusReply::errorOccurred, this, [reply] (QModbusDevice::Error error){')
writeLine(fileDescriptor, ' qCWarning(dc%s()) << "Modbus reply error occurred while updating block \\"%s\\" registers" << error << reply->errorString();' % (className, blockName)) writeLine(fileDescriptor, ' qCWarning(dc%s()) << "Modbus reply error occurred while updating block \\"%s\\" registers" << error << reply->errorString();' % (className, blockName))
writeLine(fileDescriptor, ' emit reply->finished();')
writeLine(fileDescriptor, ' });') writeLine(fileDescriptor, ' });')
writeLine(fileDescriptor, ' }') writeLine(fileDescriptor, ' }')
writeLine(fileDescriptor, ' } else {') writeLine(fileDescriptor, ' } else {')

View File

@ -347,7 +347,7 @@ bool SunSpecConnection::scanSunspecBaseRegister(quint16 baseRegister)
} }
if (reply->isFinished()) { if (reply->isFinished()) {
delete reply; // broadcast replies return immediately reply->deleteLater(); // broadcast replies return immediately
return false; return false;
} }
@ -406,7 +406,7 @@ void SunSpecConnection::scanModelsOnBaseRegister(quint16 offset)
} }
if (reply->isFinished()) { if (reply->isFinished()) {
delete reply; // broadcast replies return immediately reply->deleteLater(); // broadcast replies return immediately
return; return;
} }

View File

@ -144,12 +144,11 @@ void SunSpecModel::readBlockData()
connect(reply, &QModbusReply::errorOccurred, this, [this, reply] (QModbusDevice::Error error) { connect(reply, &QModbusReply::errorOccurred, this, [this, reply] (QModbusDevice::Error error) {
qCWarning(dcSunSpecModelData()) << name() << description() << "Modbus reply while reading block data. Error:" << error; qCWarning(dcSunSpecModelData()) << name() << description() << "Modbus reply while reading block data. Error:" << error;
emit reply->finished(); // To make sure it will be deleted
}); });
} else { } else {
qCWarning(dcSunSpecModelData()) << "Read block data error: " << m_connection->modbusTcpClient()->errorString(); qCWarning(dcSunSpecModelData()) << "Read block data error: " << m_connection->modbusTcpClient()->errorString();
delete reply; // broadcast replies return immediately reply->deleteLater(); // broadcast replies return immediately
return; return;
} }
} else { } else {

View File

@ -198,13 +198,12 @@ void SolarEdgeBattery::readBlockData()
emit blockDataUpdated(); emit blockDataUpdated();
}); });
connect(reply, &QModbusReply::errorOccurred, this, [reply] (QModbusDevice::Error error) { connect(reply, &QModbusReply::errorOccurred, this, [] (QModbusDevice::Error error) {
qCWarning(dcSunSpec()) << "SolarEdgeBattery: Modbus reply error:" << error; qCWarning(dcSunSpec()) << "SolarEdgeBattery: Modbus reply error:" << error;
emit reply->finished(); // To make sure it will be deleted
}); });
} else { } else {
qCWarning(dcSunSpec()) << "SolarEdgeBattery: Read error: " << m_connection->modbusTcpClient()->errorString(); qCWarning(dcSunSpec()) << "SolarEdgeBattery: Read error: " << m_connection->modbusTcpClient()->errorString();
delete reply; // broadcast replies return immediately reply->deleteLater(); // broadcast replies return immediately
if (!m_initFinishedSuccess) { if (!m_initFinishedSuccess) {
m_timer.stop(); m_timer.stop();
emit initFinished(false); emit initFinished(false);
@ -217,13 +216,12 @@ void SolarEdgeBattery::readBlockData()
} }
}); });
connect(reply, &QModbusReply::errorOccurred, this, [reply] (QModbusDevice::Error error) { connect(reply, &QModbusReply::errorOccurred, this, [] (QModbusDevice::Error error) {
qCWarning(dcSunSpec()) << "SolarEdgeBattery: Modbus reply error:" << error; qCWarning(dcSunSpec()) << "SolarEdgeBattery: Modbus reply error:" << error;
emit reply->finished(); // To make sure it will be deleted
}); });
} else { } else {
qCWarning(dcSunSpec()) << "SolarEdgeBattery: Read error: " << m_connection->modbusTcpClient()->errorString(); qCWarning(dcSunSpec()) << "SolarEdgeBattery: Read error: " << m_connection->modbusTcpClient()->errorString();
delete reply; // broadcast replies return immediately reply->deleteLater(); // broadcast replies return immediately
if (!m_initFinishedSuccess) { if (!m_initFinishedSuccess) {
m_timer.stop(); m_timer.stop();
emit initFinished(false); emit initFinished(false);

View File

@ -430,7 +430,7 @@ bool NeuronCommon::modbusWriteRequest(const Request &request)
}); });
QTimer::singleShot(m_responseTimeoutTime, reply, &QModbusReply::deleteLater); QTimer::singleShot(m_responseTimeoutTime, reply, &QModbusReply::deleteLater);
} else { } else {
delete reply; // broadcast replies return immediately reply->deleteLater(); // broadcast replies return immediately
return false; return false;
} }
} else { } else {
@ -541,7 +541,7 @@ bool NeuronCommon::modbusReadRequest(const QModbusDataUnit &request)
}); });
QTimer::singleShot(m_responseTimeoutTime, reply, &QModbusReply::deleteLater); QTimer::singleShot(m_responseTimeoutTime, reply, &QModbusReply::deleteLater);
} else { } else {
delete reply; // broadcast replies return immediately reply->deleteLater(); // broadcast replies return immediately
return false; return false;
} }
} else { } else {