summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/serialbus/modbus/adueditor/adueditor.pro1
-rw-r--r--examples/serialbus/modbus/master/mainwindow.cpp11
-rw-r--r--examples/serialbus/modbus/master/master.pro4
-rw-r--r--examples/serialbus/modbus/master/settingsdialog.cpp4
-rw-r--r--examples/serialbus/modbus/master/settingsdialog.h5
-rw-r--r--examples/serialbus/modbus/slave/mainwindow.cpp11
-rw-r--r--examples/serialbus/modbus/slave/settingsdialog.cpp5
-rw-r--r--examples/serialbus/modbus/slave/settingsdialog.h5
-rw-r--r--examples/serialbus/modbus/slave/slave.pro4
-rw-r--r--qtserialbus.pro2
-rw-r--r--src/plugins/canbus/canbus.pro5
-rw-r--r--src/serialbus/configure.json9
-rw-r--r--src/serialbus/qmodbusdevice.cpp4
-rw-r--r--src/serialbus/qmodbusdevice_p.h4
-rw-r--r--src/serialbus/qtserialbusglobal.h1
-rw-r--r--src/serialbus/serialbus.pro24
-rw-r--r--tests/auto/auto.pro7
-rw-r--r--tests/auto/qmodbusserver/tst_qmodbusserver.cpp4
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()