diff options
-rw-r--r-- | examples/serialbus/modbus/adueditor/adueditor.pro | 1 | ||||
-rw-r--r-- | examples/serialbus/modbus/master/mainwindow.cpp | 11 | ||||
-rw-r--r-- | examples/serialbus/modbus/master/master.pro | 4 | ||||
-rw-r--r-- | examples/serialbus/modbus/master/settingsdialog.cpp | 4 | ||||
-rw-r--r-- | examples/serialbus/modbus/master/settingsdialog.h | 5 | ||||
-rw-r--r-- | examples/serialbus/modbus/slave/mainwindow.cpp | 11 | ||||
-rw-r--r-- | examples/serialbus/modbus/slave/settingsdialog.cpp | 5 | ||||
-rw-r--r-- | examples/serialbus/modbus/slave/settingsdialog.h | 5 | ||||
-rw-r--r-- | examples/serialbus/modbus/slave/slave.pro | 4 | ||||
-rw-r--r-- | qtserialbus.pro | 2 | ||||
-rw-r--r-- | src/plugins/canbus/canbus.pro | 5 | ||||
-rw-r--r-- | src/serialbus/configure.json | 9 | ||||
-rw-r--r-- | src/serialbus/qmodbusdevice.cpp | 4 | ||||
-rw-r--r-- | src/serialbus/qmodbusdevice_p.h | 4 | ||||
-rw-r--r-- | src/serialbus/qtserialbusglobal.h | 1 | ||||
-rw-r--r-- | src/serialbus/serialbus.pro | 24 | ||||
-rw-r--r-- | tests/auto/auto.pro | 7 | ||||
-rw-r--r-- | tests/auto/qmodbusserver/tst_qmodbusserver.cpp | 4 |
18 files changed, 95 insertions, 15 deletions
diff --git a/examples/serialbus/modbus/adueditor/adueditor.pro b/examples/serialbus/modbus/adueditor/adueditor.pro index bba3c0d..facba76 100644 --- a/examples/serialbus/modbus/adueditor/adueditor.pro +++ b/examples/serialbus/modbus/adueditor/adueditor.pro @@ -5,6 +5,7 @@ TARGET = adueditor QT += serialbus serialport widgets QT += serialbus-private core-private requires(qtConfig(combobox)) +requires(qtConfig(modbus-serialport)) FORMS += interface.ui SOURCES += main.cpp mainwindow.cpp modbustcpclient.cpp diff --git a/examples/serialbus/modbus/master/mainwindow.cpp b/examples/serialbus/modbus/master/mainwindow.cpp index 18bba06..6600af8 100644 --- a/examples/serialbus/modbus/master/mainwindow.cpp +++ b/examples/serialbus/modbus/master/mainwindow.cpp @@ -90,8 +90,15 @@ MainWindow::MainWindow(QWidget *parent) ui->writeTable->addItem(tr("Input Registers"), QModbusDataUnit::InputRegisters); ui->writeTable->addItem(tr("Holding Registers"), QModbusDataUnit::HoldingRegisters); +#if QT_CONFIG(modbus_serialport) ui->connectType->setCurrentIndex(0); on_connectType_currentIndexChanged(0); +#else + // lock out the serial port option + ui->connectType->setCurrentIndex(1); + on_connectType_currentIndexChanged(1); + ui->connectType->setEnabled(false); +#endif auto model = new QStandardItemModel(10, 1, this); for (int i = 0; i < 10; ++i) @@ -154,7 +161,9 @@ void MainWindow::on_connectType_currentIndexChanged(int index) auto type = static_cast<ModbusConnection> (index); if (type == Serial) { +#if QT_CONFIG(modbus_serialport) modbusDevice = new QModbusRtuSerialMaster(this); +#endif } else if (type == Tcp) { modbusDevice = new QModbusTcpClient(this); if (ui->portEdit->text().isEmpty()) @@ -187,6 +196,7 @@ void MainWindow::on_connectButton_clicked() if (static_cast<ModbusConnection> (ui->connectType->currentIndex()) == Serial) { modbusDevice->setConnectionParameter(QModbusDevice::SerialPortNameParameter, ui->portEdit->text()); +#if QT_CONFIG(modbus_serialport) modbusDevice->setConnectionParameter(QModbusDevice::SerialParityParameter, m_settingsDialog->settings().parity); modbusDevice->setConnectionParameter(QModbusDevice::SerialBaudRateParameter, @@ -195,6 +205,7 @@ void MainWindow::on_connectButton_clicked() m_settingsDialog->settings().dataBits); modbusDevice->setConnectionParameter(QModbusDevice::SerialStopBitsParameter, m_settingsDialog->settings().stopBits); +#endif } else { const QUrl url = QUrl::fromUserInput(ui->portEdit->text()); modbusDevice->setConnectionParameter(QModbusDevice::NetworkPortParameter, url.port()); diff --git a/examples/serialbus/modbus/master/master.pro b/examples/serialbus/modbus/master/master.pro index 682ce82..188fbc1 100644 --- a/examples/serialbus/modbus/master/master.pro +++ b/examples/serialbus/modbus/master/master.pro @@ -1,6 +1,8 @@ -QT += serialbus serialport widgets +QT += serialbus widgets requires(qtConfig(combobox)) +qtConfig(modbus-serialport): QT += serialport + TARGET = modbusmaster TEMPLATE = app CONFIG += c++11 diff --git a/examples/serialbus/modbus/master/settingsdialog.cpp b/examples/serialbus/modbus/master/settingsdialog.cpp index 8b2fce8..0a5eb43 100644 --- a/examples/serialbus/modbus/master/settingsdialog.cpp +++ b/examples/serialbus/modbus/master/settingsdialog.cpp @@ -58,19 +58,23 @@ SettingsDialog::SettingsDialog(QWidget *parent) : ui->setupUi(this); ui->parityCombo->setCurrentIndex(1); +#if QT_CONFIG(modbus_serialport) ui->baudCombo->setCurrentText(QString::number(m_settings.baud)); ui->dataBitsCombo->setCurrentText(QString::number(m_settings.dataBits)); ui->stopBitsCombo->setCurrentText(QString::number(m_settings.stopBits)); +#endif ui->timeoutSpinner->setValue(m_settings.responseTime); ui->retriesSpinner->setValue(m_settings.numberOfRetries); connect(ui->applyButton, &QPushButton::clicked, [this]() { +#if QT_CONFIG(modbus_serialport) m_settings.parity = ui->parityCombo->currentIndex(); if (m_settings.parity > 0) m_settings.parity++; m_settings.baud = ui->baudCombo->currentText().toInt(); m_settings.dataBits = ui->dataBitsCombo->currentText().toInt(); m_settings.stopBits = ui->stopBitsCombo->currentText().toInt(); +#endif m_settings.responseTime = ui->timeoutSpinner->value(); m_settings.numberOfRetries = ui->retriesSpinner->value(); diff --git a/examples/serialbus/modbus/master/settingsdialog.h b/examples/serialbus/modbus/master/settingsdialog.h index fa8550b..98ba946 100644 --- a/examples/serialbus/modbus/master/settingsdialog.h +++ b/examples/serialbus/modbus/master/settingsdialog.h @@ -51,8 +51,11 @@ #ifndef SETTINGSDIALOG_H #define SETTINGSDIALOG_H +#include <QtSerialBus/qtserialbusglobal.h> #include <QDialog> +#if QT_CONFIG(modbus_serialport) #include <QSerialPort> +#endif QT_BEGIN_NAMESPACE @@ -68,10 +71,12 @@ class SettingsDialog : public QDialog public: struct Settings { +#if QT_CONFIG(modbus_serialport) int parity = QSerialPort::EvenParity; int baud = QSerialPort::Baud19200; int dataBits = QSerialPort::Data8; int stopBits = QSerialPort::OneStop; +#endif int responseTime = 1000; int numberOfRetries = 3; }; diff --git a/examples/serialbus/modbus/slave/mainwindow.cpp b/examples/serialbus/modbus/slave/mainwindow.cpp index 1b7ad72..4a4c194 100644 --- a/examples/serialbus/modbus/slave/mainwindow.cpp +++ b/examples/serialbus/modbus/slave/mainwindow.cpp @@ -72,8 +72,15 @@ MainWindow::MainWindow(QWidget *parent) ui->setupUi(this); setupWidgetContainers(); +#if QT_CONFIG(modbus_serialport) ui->connectType->setCurrentIndex(0); on_connectType_currentIndexChanged(0); +#else + // lock out the serial port option + ui->connectType->setCurrentIndex(1); + on_connectType_currentIndexChanged(1); + ui->connectType->setEnabled(false); +#endif m_settingsDialog = new SettingsDialog(this); initActions(); @@ -114,7 +121,9 @@ void MainWindow::on_connectType_currentIndexChanged(int index) ModbusConnection type = static_cast<ModbusConnection> (index); if (type == Serial) { +#if QT_CONFIG(modbus_serialport) modbusDevice = new QModbusRtuSerialSlave(this); +#endif } else if (type == Tcp) { modbusDevice = new QModbusTcpServer(this); if (ui->portEdit->text().isEmpty()) @@ -177,6 +186,7 @@ void MainWindow::on_connectButton_clicked() if (static_cast<ModbusConnection> (ui->connectType->currentIndex()) == Serial) { modbusDevice->setConnectionParameter(QModbusDevice::SerialPortNameParameter, ui->portEdit->text()); +#if QT_CONFIG(modbus_serialport) modbusDevice->setConnectionParameter(QModbusDevice::SerialParityParameter, m_settingsDialog->settings().parity); modbusDevice->setConnectionParameter(QModbusDevice::SerialBaudRateParameter, @@ -185,6 +195,7 @@ void MainWindow::on_connectButton_clicked() m_settingsDialog->settings().dataBits); modbusDevice->setConnectionParameter(QModbusDevice::SerialStopBitsParameter, m_settingsDialog->settings().stopBits); +#endif } else { const QUrl url = QUrl::fromUserInput(ui->portEdit->text()); modbusDevice->setConnectionParameter(QModbusDevice::NetworkPortParameter, url.port()); diff --git a/examples/serialbus/modbus/slave/settingsdialog.cpp b/examples/serialbus/modbus/slave/settingsdialog.cpp index c7f1e0c..77ec8af 100644 --- a/examples/serialbus/modbus/slave/settingsdialog.cpp +++ b/examples/serialbus/modbus/slave/settingsdialog.cpp @@ -58,18 +58,21 @@ SettingsDialog::SettingsDialog(QWidget *parent) : ui->setupUi(this); ui->parityCombo->setCurrentIndex(1); +#if QT_CONFIG(modbus_serialport) ui->baudCombo->setCurrentText(QString::number(m_settings.baud)); ui->dataBitsCombo->setCurrentText(QString::number(m_settings.dataBits)); ui->stopBitsCombo->setCurrentText(QString::number(m_settings.stopBits)); +#endif connect(ui->applyButton, &QPushButton::clicked, [this]() { +#if QT_CONFIG(modbus_serialport) m_settings.parity = ui->parityCombo->currentIndex(); if (m_settings.parity > 0) m_settings.parity++; m_settings.baud = ui->baudCombo->currentText().toInt(); m_settings.dataBits = ui->dataBitsCombo->currentText().toInt(); m_settings.stopBits = ui->stopBitsCombo->currentText().toInt(); - +#endif hide(); }); } diff --git a/examples/serialbus/modbus/slave/settingsdialog.h b/examples/serialbus/modbus/slave/settingsdialog.h index bc352c3..dfe7b98 100644 --- a/examples/serialbus/modbus/slave/settingsdialog.h +++ b/examples/serialbus/modbus/slave/settingsdialog.h @@ -51,8 +51,11 @@ #ifndef SETTINGSDIALOG_H #define SETTINGSDIALOG_H +#include <QtSerialBus/qtserialbusglobal.h> #include <QDialog> +#if QT_CONFIG(modbus_serialport) #include <QSerialPort> +#endif QT_BEGIN_NAMESPACE @@ -68,10 +71,12 @@ class SettingsDialog : public QDialog public: struct Settings { +#if QT_CONFIG(modbus_serialport) int parity = QSerialPort::EvenParity; int baud = QSerialPort::Baud19200; int dataBits = QSerialPort::Data8; int stopBits = QSerialPort::OneStop; +#endif }; explicit SettingsDialog(QWidget *parent = nullptr); diff --git a/examples/serialbus/modbus/slave/slave.pro b/examples/serialbus/modbus/slave/slave.pro index b803c5d..aadef07 100644 --- a/examples/serialbus/modbus/slave/slave.pro +++ b/examples/serialbus/modbus/slave/slave.pro @@ -1,6 +1,8 @@ -QT += serialbus serialport widgets +QT += serialbus widgets requires(qtConfig(combobox)) +qtConfig(modbus-serialport): QT += serialport + TARGET = modbusslave TEMPLATE = app CONFIG += c++11 diff --git a/qtserialbus.pro b/qtserialbus.pro index 6261f9f..ebc35b3 100644 --- a/qtserialbus.pro +++ b/qtserialbus.pro @@ -1,4 +1,4 @@ -requires(qtHaveModule(serialport):!wasm) +requires(!wasm) lessThan(QT_MAJOR_VERSION, 5) { message("Cannot build current QtSerialBus sources with Qt version $${QT_VERSION}.") diff --git a/src/plugins/canbus/canbus.pro b/src/plugins/canbus/canbus.pro index 4366027..ab9755c 100644 --- a/src/plugins/canbus/canbus.pro +++ b/src/plugins/canbus/canbus.pro @@ -11,5 +11,8 @@ qtConfig(socketcan) { qtConfig(library) { SUBDIRS += passthrucan peakcan tinycan - win32:SUBDIRS += systeccan vectorcan + win32 { + SUBDIRS += systeccan + !winrt:SUBDIRS += vectorcan + } } diff --git a/src/serialbus/configure.json b/src/serialbus/configure.json index d640f57..15d4863 100644 --- a/src/serialbus/configure.json +++ b/src/serialbus/configure.json @@ -25,6 +25,12 @@ "label": "Socket CAN FD", "condition": "config.linux && features.socketcan && tests.socketcan_fd", "output": [ "privateFeature"] + }, + "modbus-serialport" : { + "label": "SerialPort Support", + "condition": "module.serialport", + "purpose": "Enables Serial-based Modbus Support", + "output": [ "publicFeature"] } }, @@ -46,7 +52,8 @@ "section": "Qt SerialBus", "entries": [ "socketcan", - "socketcan_fd" + "socketcan_fd", + "modbus-serialport" ] } ] diff --git a/src/serialbus/qmodbusdevice.cpp b/src/serialbus/qmodbusdevice.cpp index 7ef358c..70a4f74 100644 --- a/src/serialbus/qmodbusdevice.cpp +++ b/src/serialbus/qmodbusdevice.cpp @@ -124,6 +124,7 @@ QVariant QModbusDevice::connectionParameter(int parameter) const { Q_D(const QModbusDevice); switch (parameter) { +#if QT_CONFIG(modbus_serialport) case SerialPortNameParameter: return d->m_comPort; case SerialDataBitsParameter: @@ -134,6 +135,7 @@ QVariant QModbusDevice::connectionParameter(int parameter) const return d->m_stopBits; case SerialBaudRateParameter: return d->m_baudRate; +#endif case NetworkPortParameter: return d->m_networkPort; case NetworkAddressParameter: @@ -156,6 +158,7 @@ void QModbusDevice::setConnectionParameter(int parameter, const QVariant &value) { Q_D(QModbusDevice); switch (parameter) { +#if QT_CONFIG(modbus_serialport) case SerialPortNameParameter: d->m_comPort = value.toString(); break; @@ -171,6 +174,7 @@ void QModbusDevice::setConnectionParameter(int parameter, const QVariant &value) case SerialBaudRateParameter: d->m_baudRate = QSerialPort::BaudRate(value.toInt()); break; +#endif case NetworkPortParameter: d->m_networkPort = value.toInt(); break; diff --git a/src/serialbus/qmodbusdevice_p.h b/src/serialbus/qmodbusdevice_p.h index 52ace00..a845a89 100644 --- a/src/serialbus/qmodbusdevice_p.h +++ b/src/serialbus/qmodbusdevice_p.h @@ -39,7 +39,9 @@ #include <QtCore/qvariant.h> #include <QtSerialBus/qmodbusdevice.h> +#if QT_CONFIG(modbus_serialport) #include <QtSerialPort/qserialport.h> +#endif #include <private/qobject_p.h> @@ -65,11 +67,13 @@ public: QModbusDevice::Error error = QModbusDevice::NoError; QString errorString; +#if QT_CONFIG(modbus_serialport) QString m_comPort; QSerialPort::DataBits m_dataBits = QSerialPort::Data8; QSerialPort::Parity m_parity = QSerialPort::EvenParity; QSerialPort::StopBits m_stopBits = QSerialPort::OneStop; QSerialPort::BaudRate m_baudRate = QSerialPort::Baud19200; +#endif int m_networkPort = 502; QString m_networkAddress = QStringLiteral("127.0.0.1"); diff --git a/src/serialbus/qtserialbusglobal.h b/src/serialbus/qtserialbusglobal.h index 70d7799..31c1f85 100644 --- a/src/serialbus/qtserialbusglobal.h +++ b/src/serialbus/qtserialbusglobal.h @@ -38,6 +38,7 @@ #define QTSERIALBUSGLOBAL_H #include <QtCore/qglobal.h> +#include <QtSerialBus/qtserialbus-config.h> QT_BEGIN_NAMESPACE diff --git a/src/serialbus/serialbus.pro b/src/serialbus/serialbus.pro index 57a5a6b..3abba31 100644 --- a/src/serialbus/serialbus.pro +++ b/src/serialbus/serialbus.pro @@ -1,7 +1,8 @@ TARGET = QtSerialBus QT = core-private -QT_FOR_PRIVATE = network serialport +QT_FOR_PRIVATE = network + CONFIG += c++11 QMAKE_DOCS = $$PWD/doc/qtserialbus.qdocconf @@ -18,10 +19,8 @@ PUBLIC_HEADERS += \ qmodbusdataunit.h \ qmodbusclient.h \ qmodbusreply.h \ - qmodbusrtuserialmaster.h \ qmodbustcpclient.h \ qmodbustcpserver.h \ - qmodbusrtuserialslave.h \ qmodbuspdu.h \ qmodbusdeviceidentification.h @@ -31,10 +30,8 @@ PRIVATE_HEADERS += \ qmodbusserver_p.h \ qmodbusclient_p.h \ qmodbusdevice_p.h \ - qmodbusrtuserialmaster_p.h \ qmodbustcpclient_p.h \ qmodbustcpserver_p.h \ - qmodbusrtuserialslave_p.h \ qmodbus_symbols_p.h \ qmodbuscommevent_p.h \ qmodbusadu_p.h \ @@ -50,13 +47,26 @@ SOURCES += \ qmodbusdataunit.cpp \ qmodbusclient.cpp \ qmodbusreply.cpp \ - qmodbusrtuserialmaster.cpp \ qmodbustcpclient.cpp \ qmodbustcpserver.cpp \ - qmodbusrtuserialslave.cpp \ qmodbuspdu.cpp \ qmodbusdeviceidentification.cpp +qtConfig(modbus-serialport) { + QT_FOR_PRIVATE += serialport + + PUBLIC_HEADERS += \ + qmodbusrtuserialmaster.h \ + qmodbusrtuserialslave.h + + PRIVATE_HEADERS += \ + qmodbusrtuserialmaster_p.h \ + qmodbusrtuserialslave_p.h + + SOURCES += \ + qmodbusrtuserialmaster.cpp \ + qmodbusrtuserialslave.cpp +} HEADERS += $$PUBLIC_HEADERS $$PRIVATE_HEADERS MODULE_PLUGIN_TYPES = \ diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro index 2542d65..268fc74 100644 --- a/tests/auto/auto.pro +++ b/tests/auto/auto.pro @@ -11,8 +11,11 @@ SUBDIRS += cmake \ qmodbusserver \ qmodbuscommevent \ qmodbusadu \ - qmodbusdeviceidentification \ - qmodbusrtuserialmaster + qmodbusdeviceidentification + +QT_FOR_CONFIG += serialbus + +qtConfig(modbus-serialport): SUBDIRS += qmodbusrtuserialmaster qcanbus.depends += plugins qcanbusdevice.depends += plugins diff --git a/tests/auto/qmodbusserver/tst_qmodbusserver.cpp b/tests/auto/qmodbusserver/tst_qmodbusserver.cpp index 6fe284d..ad33337 100644 --- a/tests/auto/qmodbusserver/tst_qmodbusserver.cpp +++ b/tests/auto/qmodbusserver/tst_qmodbusserver.cpp @@ -35,7 +35,9 @@ ****************************************************************************/ #include <QtSerialBus/qmodbusserver.h> +#if QT_CONFIG(modbus_serialport) #include <QtSerialBus/qmodbusrtuserialslave.h> +#endif #include <QtSerialBus/qmodbustcpserver.h> #include <QtSerialBus/qmodbusdeviceidentification.h> @@ -90,7 +92,9 @@ private slots: void testServerAddress() { QCOMPARE(QModbusTcpServer().serverAddress(), 0xff); +#if QT_CONFIG(modbus_serialport) QCOMPARE(QModbusRtuSerialSlave().serverAddress(), 1); +#endif } void testProcessRequestReadWriteSingleMultipleCoils() |