QModbusDataUnit 设置多个线圈值
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 方法要求向量的大小等于数据单元中要设置的线圈数。
原文地址: http://www.cveoy.top/t/topic/naR3 著作权归作者所有。请勿转载和采集!