下位机传输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;
}