diff options
author | Karsten Heimrich <karsten.heimrich@theqtcompany.com> | 2016-01-19 09:47:27 +0100 |
---|---|---|
committer | Alex Blasche <alexander.blasche@theqtcompany.com> | 2016-01-22 15:27:41 +0000 |
commit | b56e22d1f9d5ce054b997040f9c17d59701ea6db (patch) | |
tree | 372216d6d53a25d16da17a0e33cc8d2fd8f6d3b6 /examples | |
parent | 166c3fe68da2c4094b7d8533d20901fb4e9f1bf0 (diff) |
Implement support for server listen only and busy state.
Change-Id: I7497e0ee58b3188a187c78d19d5876c9f2a6e469
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Diffstat (limited to 'examples')
-rw-r--r-- | examples/serialbus/modbus/slave/mainwindow.cpp | 12 | ||||
-rw-r--r-- | examples/serialbus/modbus/slave/mainwindow.ui | 478 |
2 files changed, 271 insertions, 219 deletions
diff --git a/examples/serialbus/modbus/slave/mainwindow.cpp b/examples/serialbus/modbus/slave/mainwindow.cpp index 25a6f38..82976a0 100644 --- a/examples/serialbus/modbus/slave/mainwindow.cpp +++ b/examples/serialbus/modbus/slave/mainwindow.cpp @@ -109,6 +109,7 @@ void MainWindow::on_connectType_currentIndexChanged(int index) if (ui->portEdit->text().isEmpty()) ui->portEdit->setText(QLatin1Literal("127.0.0.1:502")); } + ui->listenOnlyBox->setEnabled(type == Serial); if (!modbusDevice) { ui->connectButton->setDisabled(true); @@ -132,6 +133,17 @@ void MainWindow::on_connectType_currentIndexChanged(int index) connect(modbusDevice, &QModbusServer::errorOccurred, this, &MainWindow::handleDeviceError); + connect(ui->listenOnlyBox, &QCheckBox::toggled, this, [this](bool toggled) { + if (modbusDevice) + modbusDevice->setValue(QModbusServer::ListenOnlyMode, toggled); + }); + emit ui->listenOnlyBox->toggled(ui->listenOnlyBox->isChecked()); + connect(ui->setBusyBox, &QCheckBox::toggled, this, [this](bool toggled) { + if (modbusDevice) + modbusDevice->setValue(QModbusServer::DeviceBusy, toggled ? 0xffff : 0x0000); + }); + emit ui->setBusyBox->toggled(ui->setBusyBox->isChecked()); + setupDeviceData(); } } diff --git a/examples/serialbus/modbus/slave/mainwindow.ui b/examples/serialbus/modbus/slave/mainwindow.ui index 61a0ba4..2a2107e 100644 --- a/examples/serialbus/modbus/slave/mainwindow.ui +++ b/examples/serialbus/modbus/slave/mainwindow.ui @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>516</width> - <height>377</height> + <height>396</height> </rect> </property> <property name="windowTitle"> @@ -15,6 +15,12 @@ </property> <widget class="QWidget" name="centralWidget"> <layout class="QVBoxLayout" name="verticalLayout"> + <property name="topMargin"> + <number>9</number> + </property> + <property name="bottomMargin"> + <number>0</number> + </property> <item> <layout class="QGridLayout" name="gridLayout"> <item row="0" column="5"> @@ -52,19 +58,6 @@ </property> </widget> </item> - <item row="0" column="4"> - <spacer name="horizontalSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> <item row="0" column="6"> <widget class="QSpinBox" name="serverEdit"> <property name="sizePolicy"> @@ -81,6 +74,19 @@ </property> </widget> </item> + <item row="0" column="4"> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> <item row="0" column="1"> <widget class="QComboBox" name="connectType"> <item> @@ -128,6 +134,37 @@ </layout> </item> <item> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QCheckBox" name="setBusyBox"> + <property name="text"> + <string>Set server busy</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="listenOnlyBox"> + <property name="text"> + <string>Set server listen only</string> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_2"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item> <spacer name="verticalSpacer"> <property name="orientation"> <enum>Qt::Vertical</enum> @@ -145,52 +182,35 @@ </item> <item> <layout class="QGridLayout" name="gridLayout_2"> - <item row="0" column="0"> - <widget class="QLabel" name="coils"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Maximum" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text"> - <string>Coils</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QLabel" name="discreteInputs"> + <item row="3" column="1"> + <widget class="QCheckBox" name="disc_2"> <property name="text"> - <string>Discrete Inputs</string> + <string>2</string> </property> </widget> </item> - <item row="0" column="2"> - <widget class="QLabel" name="address"> + <item row="3" column="2"> + <widget class="QLabel" name="label_23"> <property name="text"> - <string>Address</string> + <string>2</string> </property> <property name="alignment"> <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> </property> </widget> </item> - <item row="0" column="3"> - <widget class="QLabel" name="inputRegisters"> - <property name="text"> - <string>Input Registers</string> + <item row="3" column="4"> + <widget class="QLineEdit" name="holdReg_2"> + <property name="maxLength"> + <number>32767</number> </property> - </widget> - </item> - <item row="0" column="4"> - <widget class="QLabel" name="holdingRegisters"> - <property name="text"> - <string>Holding Registers</string> + <property name="placeholderText"> + <string>Hexadecimal A-F, a-f, 0-9.</string> </property> </widget> </item> - <item row="1" column="0"> - <widget class="QCheckBox" name="coils_0"> + <item row="4" column="0"> + <widget class="QCheckBox" name="coils_3"> <property name="sizePolicy"> <sizepolicy hsizetype="Maximum" vsizetype="Fixed"> <horstretch>0</horstretch> @@ -198,39 +218,39 @@ </sizepolicy> </property> <property name="text"> - <string>0</string> + <string>3</string> </property> </widget> </item> - <item row="1" column="1"> - <widget class="QCheckBox" name="disc_0"> - <property name="text"> - <string>0</string> + <item row="3" column="3"> + <widget class="QLineEdit" name="inReg_2"> + <property name="maxLength"> + <number>32767</number> + </property> + <property name="placeholderText"> + <string>Hexadecimal A-F, a-f, 0-9.</string> </property> </widget> </item> - <item row="1" column="2"> - <widget class="QLabel" name="label_21"> + <item row="4" column="1"> + <widget class="QCheckBox" name="disc_3"> <property name="text"> - <string>0</string> - </property> - <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + <string>3</string> </property> </widget> </item> - <item row="1" column="3"> - <widget class="QLineEdit" name="inReg_0"> - <property name="maxLength"> - <number>32767</number> + <item row="4" column="2"> + <widget class="QLabel" name="label_11"> + <property name="text"> + <string>3</string> </property> - <property name="placeholderText"> - <string>Hexadecimal A-F, a-f, 0-9.</string> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> </property> </widget> </item> - <item row="1" column="4"> - <widget class="QLineEdit" name="holdReg_0"> + <item row="4" column="3"> + <widget class="QLineEdit" name="inReg_3"> <property name="maxLength"> <number>32767</number> </property> @@ -239,8 +259,8 @@ </property> </widget> </item> - <item row="2" column="0"> - <widget class="QCheckBox" name="coils_1"> + <item row="5" column="0"> + <widget class="QCheckBox" name="coils_4"> <property name="sizePolicy"> <sizepolicy hsizetype="Maximum" vsizetype="Fixed"> <horstretch>0</horstretch> @@ -248,29 +268,39 @@ </sizepolicy> </property> <property name="text"> - <string>1</string> + <string>4</string> </property> </widget> </item> - <item row="2" column="1"> - <widget class="QCheckBox" name="disc_1"> + <item row="4" column="4"> + <widget class="QLineEdit" name="holdReg_3"> + <property name="maxLength"> + <number>32767</number> + </property> + <property name="placeholderText"> + <string>Hexadecimal A-F, a-f, 0-9.</string> + </property> + </widget> + </item> + <item row="5" column="1"> + <widget class="QCheckBox" name="disc_4"> <property name="text"> - <string>1</string> + <string>4</string> </property> </widget> </item> - <item row="2" column="2"> - <widget class="QLabel" name="label_22"> + <item row="5" column="2"> + <widget class="QLabel" name="label_8"> <property name="text"> - <string>1</string> + <string>4</string> </property> <property name="alignment"> <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> </property> </widget> </item> - <item row="2" column="3"> - <widget class="QLineEdit" name="inReg_1"> + <item row="5" column="3"> + <widget class="QLineEdit" name="inReg_4"> <property name="maxLength"> <number>32767</number> </property> @@ -279,8 +309,8 @@ </property> </widget> </item> - <item row="2" column="4"> - <widget class="QLineEdit" name="holdReg_1"> + <item row="5" column="4"> + <widget class="QLineEdit" name="holdReg_4"> <property name="maxLength"> <number>32767</number> </property> @@ -289,8 +319,8 @@ </property> </widget> </item> - <item row="3" column="0"> - <widget class="QCheckBox" name="coils_2"> + <item row="6" column="0"> + <widget class="QCheckBox" name="coils_5"> <property name="sizePolicy"> <sizepolicy hsizetype="Maximum" vsizetype="Fixed"> <horstretch>0</horstretch> @@ -298,39 +328,39 @@ </sizepolicy> </property> <property name="text"> - <string>2</string> + <string>5</string> </property> </widget> </item> - <item row="3" column="1"> - <widget class="QCheckBox" name="disc_2"> - <property name="text"> - <string>2</string> + <item row="6" column="3"> + <widget class="QLineEdit" name="inReg_5"> + <property name="maxLength"> + <number>32767</number> + </property> + <property name="placeholderText"> + <string>Hexadecimal A-F, a-f, 0-9.</string> </property> </widget> </item> - <item row="3" column="2"> - <widget class="QLabel" name="label_23"> + <item row="6" column="1"> + <widget class="QCheckBox" name="disc_5"> <property name="text"> - <string>2</string> - </property> - <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + <string>5</string> </property> </widget> </item> - <item row="3" column="3"> - <widget class="QLineEdit" name="inReg_2"> - <property name="maxLength"> - <number>32767</number> + <item row="6" column="2"> + <widget class="QLabel" name="label_12"> + <property name="text"> + <string>5</string> </property> - <property name="placeholderText"> - <string>Hexadecimal A-F, a-f, 0-9.</string> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> </property> </widget> </item> - <item row="3" column="4"> - <widget class="QLineEdit" name="holdReg_2"> + <item row="6" column="4"> + <widget class="QLineEdit" name="holdReg_5"> <property name="maxLength"> <number>32767</number> </property> @@ -339,8 +369,8 @@ </property> </widget> </item> - <item row="4" column="0"> - <widget class="QCheckBox" name="coils_3"> + <item row="7" column="0"> + <widget class="QCheckBox" name="coils_6"> <property name="sizePolicy"> <sizepolicy hsizetype="Maximum" vsizetype="Fixed"> <horstretch>0</horstretch> @@ -348,39 +378,12 @@ </sizepolicy> </property> <property name="text"> - <string>3</string> - </property> - </widget> - </item> - <item row="4" column="1"> - <widget class="QCheckBox" name="disc_3"> - <property name="text"> - <string>3</string> - </property> - </widget> - </item> - <item row="4" column="2"> - <widget class="QLabel" name="label_11"> - <property name="text"> - <string>3</string> - </property> - <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - </widget> - </item> - <item row="4" column="3"> - <widget class="QLineEdit" name="inReg_3"> - <property name="maxLength"> - <number>32767</number> - </property> - <property name="placeholderText"> - <string>Hexadecimal A-F, a-f, 0-9.</string> + <string>6</string> </property> </widget> </item> - <item row="4" column="4"> - <widget class="QLineEdit" name="holdReg_3"> + <item row="1" column="4"> + <widget class="QLineEdit" name="holdReg_0"> <property name="maxLength"> <number>32767</number> </property> @@ -389,8 +392,8 @@ </property> </widget> </item> - <item row="5" column="0"> - <widget class="QCheckBox" name="coils_4"> + <item row="2" column="0"> + <widget class="QCheckBox" name="coils_1"> <property name="sizePolicy"> <sizepolicy hsizetype="Maximum" vsizetype="Fixed"> <horstretch>0</horstretch> @@ -398,29 +401,29 @@ </sizepolicy> </property> <property name="text"> - <string>4</string> + <string>1</string> </property> </widget> </item> - <item row="5" column="1"> - <widget class="QCheckBox" name="disc_4"> + <item row="2" column="1"> + <widget class="QCheckBox" name="disc_1"> <property name="text"> - <string>4</string> + <string>1</string> </property> </widget> </item> - <item row="5" column="2"> - <widget class="QLabel" name="label_8"> + <item row="2" column="2"> + <widget class="QLabel" name="label_22"> <property name="text"> - <string>4</string> + <string>1</string> </property> <property name="alignment"> <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> </property> </widget> </item> - <item row="5" column="3"> - <widget class="QLineEdit" name="inReg_4"> + <item row="2" column="3"> + <widget class="QLineEdit" name="inReg_1"> <property name="maxLength"> <number>32767</number> </property> @@ -429,8 +432,8 @@ </property> </widget> </item> - <item row="5" column="4"> - <widget class="QLineEdit" name="holdReg_4"> + <item row="2" column="4"> + <widget class="QLineEdit" name="holdReg_1"> <property name="maxLength"> <number>32767</number> </property> @@ -439,8 +442,8 @@ </property> </widget> </item> - <item row="6" column="0"> - <widget class="QCheckBox" name="coils_5"> + <item row="3" column="0"> + <widget class="QCheckBox" name="coils_2"> <property name="sizePolicy"> <sizepolicy hsizetype="Maximum" vsizetype="Fixed"> <horstretch>0</horstretch> @@ -448,29 +451,39 @@ </sizepolicy> </property> <property name="text"> - <string>5</string> + <string>2</string> </property> </widget> </item> - <item row="6" column="1"> - <widget class="QCheckBox" name="disc_5"> - <property name="text"> - <string>5</string> + <item row="10" column="3"> + <widget class="QLineEdit" name="inReg_9"> + <property name="maxLength"> + <number>32767</number> + </property> + <property name="placeholderText"> + <string>Hexadecimal A-F, a-f, 0-9.</string> </property> </widget> </item> - <item row="6" column="2"> - <widget class="QLabel" name="label_12"> + <item row="10" column="2"> + <widget class="QLabel" name="label_16"> <property name="text"> - <string>5</string> + <string>9</string> </property> <property name="alignment"> <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> </property> </widget> </item> - <item row="6" column="3"> - <widget class="QLineEdit" name="inReg_5"> + <item row="10" column="1"> + <widget class="QCheckBox" name="disc_9"> + <property name="text"> + <string>9</string> + </property> + </widget> + </item> + <item row="10" column="4"> + <widget class="QLineEdit" name="holdReg_9"> <property name="maxLength"> <number>32767</number> </property> @@ -479,8 +492,8 @@ </property> </widget> </item> - <item row="6" column="4"> - <widget class="QLineEdit" name="holdReg_5"> + <item row="7" column="3"> + <widget class="QLineEdit" name="inReg_6"> <property name="maxLength"> <number>32767</number> </property> @@ -489,19 +502,6 @@ </property> </widget> </item> - <item row="7" column="0"> - <widget class="QCheckBox" name="coils_6"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Maximum" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text"> - <string>6</string> - </property> - </widget> - </item> <item row="7" column="1"> <widget class="QCheckBox" name="disc_6"> <property name="text"> @@ -509,26 +509,6 @@ </property> </widget> </item> - <item row="7" column="2"> - <widget class="QLabel" name="label_13"> - <property name="text"> - <string>6</string> - </property> - <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - </widget> - </item> - <item row="7" column="3"> - <widget class="QLineEdit" name="inReg_6"> - <property name="maxLength"> - <number>32767</number> - </property> - <property name="placeholderText"> - <string>Hexadecimal A-F, a-f, 0-9.</string> - </property> - </widget> - </item> <item row="7" column="4"> <widget class="QLineEdit" name="holdReg_6"> <property name="maxLength"> @@ -552,21 +532,21 @@ </property> </widget> </item> - <item row="8" column="1"> - <widget class="QCheckBox" name="disc_7"> + <item row="7" column="2"> + <widget class="QLabel" name="label_13"> <property name="text"> - <string>7</string> + <string>6</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> </property> </widget> </item> - <item row="8" column="2"> - <widget class="QLabel" name="label_14"> + <item row="8" column="1"> + <widget class="QCheckBox" name="disc_7"> <property name="text"> <string>7</string> </property> - <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> </widget> </item> <item row="8" column="3"> @@ -579,6 +559,16 @@ </property> </widget> </item> + <item row="8" column="2"> + <widget class="QLabel" name="label_14"> + <property name="text"> + <string>7</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> <item row="8" column="4"> <widget class="QLineEdit" name="holdReg_7"> <property name="maxLength"> @@ -629,6 +619,19 @@ </property> </widget> </item> + <item row="10" column="0"> + <widget class="QCheckBox" name="coils_9"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Maximum" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>9</string> + </property> + </widget> + </item> <item row="9" column="4"> <widget class="QLineEdit" name="holdReg_8"> <property name="maxLength"> @@ -639,38 +642,72 @@ </property> </widget> </item> - <item row="10" column="0"> - <widget class="QCheckBox" name="coils_9"> + <item row="0" column="1"> + <widget class="QLabel" name="discreteInputs"> + <property name="text"> + <string>Discrete Inputs</string> + </property> + </widget> + </item> + <item row="0" column="3"> + <widget class="QLabel" name="inputRegisters"> + <property name="text"> + <string>Input Registers</string> + </property> + </widget> + </item> + <item row="0" column="0"> + <widget class="QLabel" name="coils"> <property name="sizePolicy"> - <sizepolicy hsizetype="Maximum" vsizetype="Fixed"> + <sizepolicy hsizetype="Maximum" vsizetype="Preferred"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> <property name="text"> - <string>9</string> + <string>Coils</string> </property> </widget> </item> - <item row="10" column="1"> - <widget class="QCheckBox" name="disc_9"> + <item row="0" column="2"> + <widget class="QLabel" name="address"> <property name="text"> - <string>9</string> + <string>Address</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> </property> </widget> </item> - <item row="10" column="2"> - <widget class="QLabel" name="label_16"> + <item row="0" column="4"> + <widget class="QLabel" name="holdingRegisters"> <property name="text"> - <string>9</string> + <string>Holding Registers</string> </property> - <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </widget> + </item> + <item row="1" column="0"> + <widget class="QCheckBox" name="coils_0"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Maximum" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>0</string> </property> </widget> </item> - <item row="10" column="3"> - <widget class="QLineEdit" name="inReg_9"> + <item row="1" column="1"> + <widget class="QCheckBox" name="disc_0"> + <property name="text"> + <string>0</string> + </property> + </widget> + </item> + <item row="1" column="3"> + <widget class="QLineEdit" name="inReg_0"> <property name="maxLength"> <number>32767</number> </property> @@ -679,13 +716,13 @@ </property> </widget> </item> - <item row="10" column="4"> - <widget class="QLineEdit" name="holdReg_9"> - <property name="maxLength"> - <number>32767</number> + <item row="1" column="2"> + <widget class="QLabel" name="label_21"> + <property name="text"> + <string>0</string> </property> - <property name="placeholderText"> - <string>Hexadecimal A-F, a-f, 0-9.</string> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> </property> </widget> </item> @@ -696,10 +733,13 @@ <property name="orientation"> <enum>Qt::Vertical</enum> </property> + <property name="sizeType"> + <enum>QSizePolicy::MinimumExpanding</enum> + </property> <property name="sizeHint" stdset="0"> <size> <width>20</width> - <height>8</height> + <height>0</height> </size> </property> </spacer> |