Qt通过MODBUS tcp 03功能码实现分批读取保持寄存器

下位机传输500个寄存器,而03功能码每次最多只能读取125个,如何实现分批申请读取


QModbusClient modbusClient;
//连接modbus服务器
modbusClient.connectDevice();

//设置读取寄存器的起始地址和数量
int startAddress = 0;
int numberOfRegisters = 125;

for(int i = 0; i < 4; i++) 
{
    QModbusDataUnit readRequest(QModbusDataUnit::HoldingRegisters, startAddress, numberOfRegisters);
    if(auto *reply = modbusClient.sendReadRequest(readRequest, 1)) 
    {
        if(!reply->isFinished())
            connect(reply, &QModbusReply::finished, this, &Modbus::readReady);
        else
            delete reply; // broadcast replies return immediately
    } else {
        qDebug() << "Read error: " << modbusClient.errorString();
    }

    //更新起始地址和数量参数
    startAddress += numberOfRegisters;
    numberOfRegisters = (i == 3) ? (500 - startAddress) : 125;
}