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 方法要求向量的大小等于数据单元中要设置的线圈数。

QModbusDataUnit 设置多个线圈值

原文地址: http://www.cveoy.top/t/topic/naR3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录