QT中Modbus主机调用sendReadRequest()函数,不能读取返回的数据。

QT中Modbus主机调用sendReadRequest()函数,返回指针对象不为空,也没有错误,但是却不发送finished信号,这是什么原因。

bool a = connect(Reply, &QModbusReply::finished, this, &ModbusData:: ReadReady_RemoMea);

这句信号和槽函数关联语句也被执行,a返回值为true,但是槽函数ReadReady_RemoMea()却没有执行。这是什么原因?

拜托各位大神了,小弟必有重谢,奖励50元。

1.void ModbusData::Modbus_ReadDatas_RemoMea(int serverAddress)
{
if (!ModbusMaster)
return;

QModbusDataUnit readRequest_RemoMea(QModbusDataUnit::InputRegisters,1,100);

if ( auto *Reply = ModbusMaster->sendReadRequest( readRequest_RemoMea, serverAddress))
{

    quint16 error_RemoMea = Reply->error();
    qDebug() << "error_RemoMea" << error_RemoMea;

    if ( !Reply->isFinished() )
    {
        qDebug() << "1";
        bool a =  connect(Reply, &QModbusReply::finished, this, &ModbusData:: ReadReady_RemoMea);
        qDebug() << a;
        qDebug() << "2";
    }
    else
    {
        //delete Reply;
    }

    quint16 error_RemoMea1 = Reply->error();
    qDebug() << "error_RemoMea1" << error_RemoMea1;
}
else
{
    qDebug() << "request error";
}

}

槽函数:ReadReady_RemoMea()如下

void ModbusData::ReadReady_RemoMea()

{

    qDebug() << "完成";
QModbusReply *reply = qobject_cast<QModbusReply *>(sender());

if (!reply)
    return;

if (reply->error() == QModbusDevice::NoError)
{
    RemoMea_Modbus = reply->result().values();             //返回读取的数据
}
else
{
    qDebug() << "reply error";
}

reply->deleteLater();     //delete the reply

}

QT中Modbus主机调用sendReadRequest()函数,不能读取返回的数据。 楼主大大解决了没?