Port modbus rtu

pull/664/head
Simon Stürz 2025-08-18 11:33:57 +02:00
parent aa59ddd714
commit 685d28f88b
7 changed files with 30 additions and 11 deletions

View File

@ -54,7 +54,12 @@ ModbusRtuMasterImpl::ModbusRtuMasterImpl(const QUuid &modbusUuid, const QString
m_timeout(timeout)
{
#ifdef WITH_QTSERIALBUS
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
m_modbus = new QModbusRtuSerialClient(this);
#else
m_modbus = new QModbusRtuSerialMaster(this);
#endif
m_modbus->setConnectionParameter(QModbusDevice::SerialPortNameParameter, m_serialPort);
m_modbus->setConnectionParameter(QModbusDevice::SerialBaudRateParameter, m_baudrate);
m_modbus->setConnectionParameter(QModbusDevice::SerialDataBitsParameter, m_dataBits);
@ -63,7 +68,11 @@ ModbusRtuMasterImpl::ModbusRtuMasterImpl(const QUuid &modbusUuid, const QString
m_modbus->setNumberOfRetries(m_numberOfRetries);
m_modbus->setTimeout(m_timeout);
connect(m_modbus, &QModbusTcpClient::stateChanged, this, [=](QModbusDevice::State state){
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
connect(m_modbus, &QModbusRtuSerialClient::stateChanged, this, [=](QModbusDevice::State state){
#else
connect(m_modbus, &QModbusRtuSerialMaster::stateChanged, this, [=](QModbusDevice::State state){
#endif
qCDebug(dcModbusRtu()) << "Connection state changed" << m_modbusUuid.toString() << m_serialPort << state;
if (state == QModbusDevice::ConnectedState) {
if (m_connected != true) {
@ -78,7 +87,11 @@ ModbusRtuMasterImpl::ModbusRtuMasterImpl(const QUuid &modbusUuid, const QString
}
});
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
connect(m_modbus, &QModbusRtuSerialClient::errorOccurred, this, [=](QModbusDevice::Error error){
#else
connect(m_modbus, &QModbusRtuSerialMaster::errorOccurred, this, [=](QModbusDevice::Error error){
#endif
qCWarning(dcModbusRtu()) << "Error occurred for modbus RTU master" << m_modbusUuid.toString() << m_serialPort << error << m_modbus->errorString();
if (error != QModbusDevice::NoError) {
disconnectDevice();

View File

@ -93,9 +93,15 @@ private:
bool m_connected = false;
#ifdef WITH_QTSERIALBUS
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
QModbusRtuSerialClient *m_modbus = nullptr;
#else
QModbusRtuSerialMaster *m_modbus = nullptr;
#endif
#endif // WITH_QTSERIALBUS
QString m_serialPort;
qint32 m_baudrate;
QSerialPort::Parity m_parity;

View File

@ -21,14 +21,14 @@ packagesExist(systemd) {
greaterThan(QT_MAJOR_VERSION, 5) {
qtHaveModule(serialbus) {
message("Building with QtSerialBus support.")
QT *= serialbus
QT += serialbus
DEFINES += WITH_QTSERIALBUS
} else {
message("QtSerialBus package not found. Building without QtSerialBus support.")
}
# Separate module in Qt6
QT *= concurrent
QT += concurrent
} else {
packagesExist(Qt5SerialBus) {
message("Building with QtSerialBus support.")

View File

@ -11,9 +11,9 @@ INSTALLS += target
QT += sql websockets bluetooth dbus network
greaterThan(QT_MAJOR_VERSION, 5) {
QT *= core5compat
QT += core5compat
} else {
QT *= xml
QT += xml
}
CONFIG += link_pkgconfig

View File

@ -2,9 +2,9 @@ include(../../../nymea.pri)
include(../autotests.pri)
greaterThan(QT_MAJOR_VERSION, 5) {
QT *= core5compat
QT += core5compat
} else {
QT *= xml
QT += xml
}
PKGCONFIG += nymea-mqtt

View File

@ -2,9 +2,9 @@ include(../../../nymea.pri)
include(../autotests.pri)
greaterThan(QT_MAJOR_VERSION, 5) {
QT *= core5compat
QT += core5compat
} else {
QT *= xml
QT += xml
}

View File

@ -11,14 +11,14 @@ PKGCONFIG += nymea-zigbee
greaterThan(QT_MAJOR_VERSION, 5) {
qtHaveModule(serialbus) {
message("Building with QtSerialBus support.")
QT *= serialbus
QT += serialbus
DEFINES += WITH_QTSERIALBUS
} else {
message("QtSerialBus package not found. Building without QtSerialBus support.")
}
# Separate module in Qt6
QT *= concurrent
QT += concurrent
} else {
packagesExist(Qt5SerialBus) {
message("Building with QtSerialBus support.")