2424#include " ui_client_dialogdevice.h"
2525
2626#include < QMetaEnum>
27- #include < QSerialPort>
28- #include < QSerialPortInfo>
2927#include < QIntValidator>
3028
31- #include < ModbusPortTCP .h>
32- # include < ModbusPortSerial.h >
29+ #include < ModbusQt .h>
30+
3331#include < client.h>
3432#include < project/client_project.h>
3533#include < project/client_port.h>
@@ -53,13 +51,12 @@ mbClientDialogDevice::mbClientDialogDevice(QWidget *parent) :
5351{
5452 ui->setupUi (this );
5553
56- QMetaEnum e ;
54+ QStringList ls ;
5755
5856 mbClientPort::Defaults dPort = mbClientPort::Defaults::instance ();
5957 mbClientDevice::Defaults dDevice = mbClientDevice::Defaults::instance ();
6058
61- Modbus::PortTCP::Defaults td = Modbus::PortTCP::Defaults::instance ();
62- Modbus::PortSerial::Defaults sd = Modbus::PortSerial::Defaults::instance ();
59+ Modbus::Defaults d = Modbus::Defaults::instance ();
6360
6461 QSpinBox* sp;
6562 QLineEdit* ln;
@@ -76,103 +73,87 @@ mbClientDialogDevice::mbClientDialogDevice(QWidget *parent) :
7673 sp->setMaximum (255 );
7774 sp->setValue (dDevice.unit ); // default unit address
7875 // Port
79- connect (ui->cmbPortType , SIGNAL (currentIndexChanged (int )), this , SLOT (setPortType (int )));
76+ connect (ui->cmbPort , SIGNAL (currentIndexChanged (int )), this , SLOT (setPort (int )));
8077
8178 // Port Name
8279 ln = ui->lnPortName ;
8380 ln->setText (dPort.name );
8481 // Type
8582 cmb = ui->cmbPortType ;
86- e = QMetaEnum::fromType< Modbus::Type>( );
87- for ( int i = 0 ; i < e. keyCount (); i++)
88- cmb->addItem (QString (e. key (i) ));
89- cmb->setCurrentText (e. valueToKey (Modbus::TCP));
83+ cmb-> addItem ( Modbus::toString ( Modbus::ASC) );
84+ cmb-> addItem ( Modbus::toString (Modbus::RTU));
85+ cmb->addItem (Modbus::toString (Modbus::TCP ));
86+ cmb->setCurrentText (Modbus::toString (Modbus::TCP));
9087 ui->stackedWidget ->setCurrentWidget (ui->pgTCP );
91- connect (ui-> cmbPort , SIGNAL (currentIndexChanged (int )), this , SLOT (setPort (int )));
88+ connect (cmb , SIGNAL (currentIndexChanged (int )), this , SLOT (setPortType (int )));
9289
9390 // --------------------- SERIAL ---------------------
9491 // Serial Port
9592 cmb = ui->cmbSerialPortName ;
96- QList<QSerialPortInfo> ports = QSerialPortInfo::availablePorts ();
97- Q_FOREACH (QSerialPortInfo port, ports)
98- cmb->addItem (port. portName () );
93+ QStringList ports = Modbus::availableSerialPortList ();
94+ Q_FOREACH (const QString & port, ports)
95+ cmb->addItem (port);
9996
10097 // Baud Rate
10198 cmb = ui->cmbBaudRate ;
102- e = QMetaEnum::fromType<QSerialPort::BaudRate>();
103- for (int i = 0 ; i < e.keyCount (); i++)
104- {
105- if (e.value (i) != QSerialPort::UnknownBaud)
106- cmb->addItem (QString::number (e.value (i)));
107- }
108- cmb->setCurrentText (QString::number (sd.baudRate ));
99+ Modbus::List<int32_t > baudRates = Modbus::availableBaudRate ();
100+ for (int32_t v : baudRates)
101+ cmb->addItem (QString::number (v));
102+ cmb->setCurrentText (QString::number (d.baudRate ));
109103
110104 // Data Bits
111105 cmb = ui->cmbDataBits ;
112- e = QMetaEnum::fromType<QSerialPort::DataBits>();
113- for (int i = 0 ; i < e.keyCount (); i++)
114- {
115- if (e.value (i) != QSerialPort::UnknownDataBits)
116- cmb->addItem (e.key (i));
117- }
118- cmb->setCurrentText (mb::enumKeyTypeStr<QSerialPort::DataBits>(sd.dataBits ));
106+ Modbus::List<int8_t > dataBits = Modbus::availableDataBits ();
107+ for (int8_t v : dataBits)
108+ cmb->addItem (QString::number (v));
109+ cmb->setCurrentText (QString::number (d.dataBits ));
119110
120111 // Parity
121112 cmb = ui->cmbParity ;
122- e = QMetaEnum::fromType<QSerialPort::Parity>();
123- for (int i = 0 ; i < e.keyCount (); i++)
124- {
125- if (e.value (i) != QSerialPort::UnknownParity)
126- cmb->addItem (QString (e.key (i)));
127- }
128- cmb->setCurrentText (mb::enumKeyTypeStr<QSerialPort::Parity>(sd.parity ));
113+ Modbus::List<Modbus::Parity> parity = Modbus::availableParity ();
114+ for (Modbus::Parity v : parity)
115+ cmb->addItem (Modbus::toString (v));
116+ cmb->setCurrentText (Modbus::toString (d.parity ));
129117
130118 // Stop Bits
131119 cmb = ui->cmbStopBits ;
132- e = QMetaEnum::fromType<QSerialPort::StopBits>();
133- for (int i = 0 ; i < e.keyCount (); i++)
134- {
135- if (e.value (i) != QSerialPort::UnknownStopBits)
136- cmb->addItem (QString (e.key (i)));
137- }
138- cmb->setCurrentText (mb::enumKeyTypeStr<QSerialPort::StopBits>(sd.stopBits ));
120+ Modbus::List<Modbus::StopBits> stopBits = Modbus::availableStopBits ();
121+ for (Modbus::StopBits v : stopBits)
122+ cmb->addItem (Modbus::toString (v));
123+ cmb->setCurrentText (Modbus::toString (d.stopBits ));
139124
140125 // Flow Control
141126 cmb = ui->cmbFlowControl ;
142- e = QMetaEnum::fromType<QSerialPort::FlowControl>();
143- for (int i = 0 ; i < e.keyCount (); i++)
144- {
145- if (e.value (i) != QSerialPort::UnknownFlowControl)
146- cmb->addItem (QString (e.key (i)));
147- }
148- cmb->setCurrentText (mb::enumKeyTypeStr<QSerialPort::FlowControl>(sd.flowControl ));
127+ Modbus::List<Modbus::FlowControl> flowControl = Modbus::availableFlowControl ();
128+ for (Modbus::FlowControl v : flowControl)
129+ cmb->addItem (Modbus::toString (v));
130+ cmb->setCurrentText (Modbus::toString (d.flowControl ));
149131
150132 // Timeout first byte
151133 sp = ui->spTimeoutFB ;
152134 sp->setMinimum (0 );
153135 sp->setMaximum (INT_MAX);
154- sp->setValue (sd.timeoutFirstByte ); // default unit address
155-
136+ sp->setValue (d.timeoutFirstByte ); // default slave address
156137 // Timeout first byte
157138 sp = ui->spTimeoutIB ;
158139 sp->setMinimum (0 );
159140 sp->setMaximum (INT_MAX);
160- sp->setValue (sd .timeoutInterByte ); // default unit address
141+ sp->setValue (d .timeoutInterByte ); // default slave address
161142
162143 // --------------------- TCP ---------------------
163144 // Host
164145 ln = ui->lnHost ;
165- ln->setText (td .host );
146+ ln->setText (d .host );
166147 // Port
167148 sp = ui->spPort ;
168149 sp->setMinimum (0 );
169150 sp->setMaximum (USHRT_MAX);
170- sp->setValue (td .port );
151+ sp->setValue (d .port );
171152 // Timeout
172153 sp = ui->spTimeout ;
173154 sp->setMinimum (0 );
174155 sp->setMaximum (INT_MAX);
175- sp->setValue (td .timeout );
156+ sp->setValue (d .timeout );
176157
177158 // --------------------- ADVANCED ---------------------
178159 // Max Read Coils
@@ -213,31 +194,31 @@ mbClientDialogDevice::mbClientDialogDevice(QWidget *parent) :
213194
214195 // Register Order
215196 cmb = ui->cmbRegisterOrder ;
216- e = mb::metaEnum<mb::DataOrder> ();
217- for (int i = 1 ; i < e. keyCount (); i++) // pass 'DefaultOrder' for device
218- cmb->addItem (QString (e. key (i)));
197+ ls = mb::enumDataOrderKeyList ();
198+ for (int i = 1 ; i < ls. count (); i++) // pass 'DefaultOrder' for device
199+ cmb->addItem (QString (ls. at (i)));
219200
220201 // ByteArray format
221202 cmb = ui->cmbByteArrayFormat ;
222- e = mb::metaEnum<mb::DigitalFormat> ();
223- for (int i = 1 ; i < e. keyCount (); i++) // pass 'DefaultDigitalFormat' for device
224- cmb->addItem (QString (e. key (i)));
203+ ls = mb::enumDigitalFormatKeyList ();
204+ for (int i = 1 ; i < ls. count (); i++) // pass 'DefaultDigitalFormat' for device
205+ cmb->addItem (QString (ls. at (i)));
225206
226207 // ByteArray separator
227208 ln = ui->lnByteArraySeparator ;
228209 ln->setText (mb::makeEscapeSequnces (dDevice.byteArraySeparator ));
229210
230211 // String Length Type
231212 cmb = ui->cmbStringLengthType ;
232- e = mb::metaEnum<mb::StringLengthType> ();
233- for (int i = 1 ; i < e. keyCount (); i++) // pass 'DefaultStringLengthType' for device
234- cmb->addItem (QString (e. key (i)));
213+ ls = mb::enumStringLengthTypeKeyList ();
214+ for (int i = 1 ; i < ls. count (); i++) // pass 'DefaultStringLengthType' for device
215+ cmb->addItem (QString (ls. at (i)));
235216
236217 // String Encoding
237218 cmb = ui->cmbStringEncoding ;
238- e = mb::metaEnum<mb::StringEncoding> ();
239- for (int i = 1 ; i < e. keyCount (); i++) // pass 'DefaultStringEncoding' for device
240- cmb->addItem (QString (e. key (i)));
219+ ls = mb::enumStringEncodingKeyList ();
220+ for (int i = 1 ; i < ls. count (); i++) // pass 'DefaultStringEncoding' for device
221+ cmb->addItem (QString (ls. at (i)));
241222
242223 connect (ui->buttonBox , SIGNAL (accepted ()), this , SLOT (accept ()));
243224 connect (ui->buttonBox , SIGNAL (rejected ()), this , SLOT (reject ()));
@@ -361,8 +342,7 @@ void mbClientDialogDevice::setPortName(const QString &portName)
361342void mbClientDialogDevice::fillPortForm (const MBSETTINGS &m)
362343{
363344 mbClientPort::Strings ms = mbClientPort::Strings ();
364- Modbus::PortTCP::Strings ts = Modbus::PortTCP::Strings::instance ();
365- Modbus::PortSerial::Strings ss = Modbus::PortSerial::Strings::instance ();
345+ Modbus::Strings ss = Modbus::Strings::instance ();
366346
367347 QString portName = m.value (ms.name ).toString ();
368348 // ui->cmbPort->setCurrentText(portName);
@@ -378,16 +358,15 @@ void mbClientDialogDevice::fillPortForm(const MBSETTINGS &m)
378358 ui->spTimeoutFB ->setValue (m.value (ss.timeoutFirstByte ).toInt ());
379359 ui->spTimeoutIB ->setValue (m.value (ss.timeoutInterByte ).toInt ());
380360 // --------------------- TCP ---------------------
381- ui->lnHost ->setText (m.value (ts .host ).toString ());
382- ui->spPort ->setValue (m.value (ts .port ).toInt ());
383- ui->spTimeout ->setValue (m.value (ts .timeout ).toInt ());
361+ ui->lnHost ->setText (m.value (ss .host ).toString ());
362+ ui->spPort ->setValue (m.value (ss .port ).toInt ());
363+ ui->spTimeout ->setValue (m.value (ss .timeout ).toInt ());
384364}
385365
386366void mbClientDialogDevice::fillPortData (MBSETTINGS &m)
387367{
388368 mbClientPort::Strings ms = mbClientPort::Strings ();
389- Modbus::PortTCP::Strings ts = Modbus::PortTCP::Strings::instance ();
390- Modbus::PortSerial::Strings ss = Modbus::PortSerial::Strings::instance ();
369+ Modbus::Strings ss = Modbus::Strings::instance ();
391370
392371 m[ms.name ] = ui->lnPortName ->text ();
393372 m[ms.type ] = ui->cmbPortType ->currentText ();
@@ -401,9 +380,9 @@ void mbClientDialogDevice::fillPortData(MBSETTINGS &m)
401380 m[ss.timeoutFirstByte ] = ui->spTimeoutFB ->value ();
402381 m[ss.timeoutInterByte ] = ui->spTimeoutIB ->value ();
403382 // --------------------- TCP ---------------------
404- m[ts .host ] = ui->lnHost ->text ();
405- m[ts .port ] = ui->spPort ->value ();
406- m[ts .timeout ] = ui->spTimeout ->value ();
383+ m[ss .host ] = ui->lnHost ->text ();
384+ m[ss .port ] = ui->spPort ->value ();
385+ m[ss .timeout ] = ui->spTimeout ->value ();
407386}
408387
409388void mbClientDialogDevice::setPort (int i)
0 commit comments