QModbusDataUnit 使用setValue多个线圈的值
QModbusDataUnit可以使用setValue方法设置多个线圈的值。以下是示例代码:
QModbusDataUnit dataUnit(QModbusDataUnit::Coils, 0, 10); //创建一个包含10个线圈的数据单元
QVector<quint16> values; //创建一个包含多个线圈值的向量
values << 1 << 0 << 1 << 0 << 1 << 0 << 1 << 0 << 1 << 0; //设置线圈值
dataUnit.setValues(0, values); //使用setValue方法设置线圈值,从索引0开始
if (modbusDevice->sendWriteRequest(dataUnit, serverAddress)) { //发送写请求
if (!modbusDevice->waitForBytesWritten(waitTimeout)) { //等待写入完成
qDebug() << "Write request timeout";
return false;
}
} else {
qDebug() << "Write request error: " << modbusDevice->errorString();
return false;
}
以上代码将设置10个线圈的值为1、0、1、0、1、0、1、0、1和0。setValue方法的第一个参数是线圈的起始索引,第二个参数是一个包含线圈值的向量。请注意,setValue方法要求向量的大小等于数据单元中要设置的线圈数。
原文地址: https://www.cveoy.top/t/topic/bHlA 著作权归作者所有。请勿转载和采集!