c #qt #serial-port #modbus #rs485
#c #qt #последовательный порт #modbus #rs485
Вопрос:
Я попытался считывать значения с 1 датчика температуры, используя класс Qt modbus следующим образом :
QModbusDataUnit(QModbusDataUnit::InputRegisters, /*startAddress*/ 1000, /*numberOfEntries*/ 1 );
Теперь я хочу считывать значения с разных подчиненных устройств (один и тот же порт с разным идентификатором устройства).
Я попробовал pymodbus, поскольку его функции имеют аргумент идентификатора устройства (пример: unit = 0x03) :
result = client.read_input_registers(0x03E8 ,1, unit=0x03)
Но я не могу понять, как сделать то же самое с помощью Qt.
Приветствуется любая помощь.
Ответ №1:
Это не так просто, как вы могли подумать, и QtModbus не очень хорошо документирован, но я думаю, вам нужно сделать это в запросе, используя serverAddress
в качестве идентификатора подчиненного устройства:
QModbusReply *QModbusClient::sendReadRequest(const QModbusDataUnit amp;read, int serverAddress)
Смотрите здесь некоторые (не очень) подробности.