回复: 关于modbus tcp通讯 QModbusReply内存累计增加的问题
#6 [20091001753 12-20 04:45]
首先,QModbusClient 自带超时设置 setTimeout
所以,你只需要初始化时:
m_pModbusDevice->setTimeout(RW_TIMEOUT_MS);
你代码这么改就好:
void CModbusTcpClientWorker::onWriteCoils(int iStartAddr, quint16 uValue, int iServerId){
QModbusDataUnit writeUnit(QModbusDataUnit::Coils, iStartAddr, 1);
writeUnit.setValue(0, uValue);
auto reply = m_pModbusDevice->sendWriteRequest(writeUnit, iServerId);
connect(reply,&QModbusReply::finished,this,[&,reply]{
if(reply->error()){
emit writeCoilsResult(false, iStartAddr, uValue);
qDebug()deleteLater();
});
}
超时也会触发这个 finish 信号,error 是 QModbusDevice::TimeoutError
#7 [neeme 04-16 16:28]
你好, 我也有这个 modbus tcp 内存累计增加,用rs485串口就没这个问题 。 请问你解决了吗?