Skip to content

Commit b4d02ad

Browse files
committed
Continue to work to improve Modbus Scanner
1 parent 9dbe667 commit b4d02ad

File tree

6 files changed

+111
-43
lines changed

6 files changed

+111
-43
lines changed

src/client/gui/scanner/client_scanner.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -424,6 +424,7 @@ void mbClientScanner::clear()
424424
{
425425
QWriteLocker _(&m_lock);
426426
m_deviceInfoList.clear();
427+
setStatDevice(QString());
427428
setStatCountTx(0);
428429
setStatCountRx(0);
429430
setStatPercent(0);
@@ -444,6 +445,15 @@ void mbClientScanner::stopScanning()
444445
m_thread->stop();
445446
}
446447

448+
void mbClientScanner::setStatDevice(const QString &device)
449+
{
450+
if (m_stat.device != device)
451+
{
452+
m_stat.device = device;
453+
Q_EMIT statDeviceChanged(device);
454+
}
455+
}
456+
447457
void mbClientScanner::setStatCountTx(quint32 count)
448458
{
449459
if (m_stat.countTx != count)

src/client/gui/scanner/client_scanner.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ class mbClientScanner : public QObject
127127
inline int deviceCount() const { return m_deviceInfoList.count(); }
128128
QString deviceInfoStr(int i) const;
129129
void deviceAdd(const Modbus::Settings &settings);
130+
inline QString statDevice () const { return m_stat.device ; }
130131
inline quint32 statCountTx() const { return m_stat.countTx; }
131132
inline quint32 statCountRx() const { return m_stat.countRx; }
132133
inline quint32 statPercent() const { return m_stat.percent; }
@@ -136,6 +137,7 @@ class mbClientScanner : public QObject
136137
void clear();
137138
void startScanning(const Modbus::Settings &settings);
138139
void stopScanning();
140+
void setStatDevice(const QString &device);
139141
void setStatCountTx(quint32 count);
140142
void setStatCountRx(quint32 count);
141143
void setStatPercent(quint32 percent);
@@ -144,6 +146,7 @@ class mbClientScanner : public QObject
144146
void deviceAdded(int index);
145147
void cleared();
146148
void stateChanged(bool run);
149+
void statDeviceChanged(const QString &name);
147150
void statCountTxChanged(quint32 count);
148151
void statCountRxChanged(quint32 count);
149152
void statPercentChanged(quint32 percent);
@@ -170,11 +173,13 @@ private Q_SLOTS:
170173
{
171174
Statistics()
172175
{
176+
173177
countTx = 0;
174178
countRx = 0;
175179
percent = 0;
176180
}
177181

182+
QString device;
178183
quint32 countTx;
179184
quint32 countRx;
180185
quint32 percent;

src/client/gui/scanner/client_scannerthread.cpp

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -120,13 +120,13 @@ void mbClientScannerThread::run()
120120
settings[name] = v;
121121
}
122122
ModbusClientPort *clientPort = Modbus::createClientPort(settings, false);
123-
QString sName;
123+
QString sPort;
124124
switch (clientPort->type())
125125
{
126126
case Modbus::ASC:
127127
clientPort->connect(&ModbusClientPort::signalTx, this, &mbClientScannerThread::slotAsciiTx);
128128
clientPort->connect(&ModbusClientPort::signalRx, this, &mbClientScannerThread::slotAsciiRx);
129-
sName = QString("Scanner ASC:%1:%2:%3%4%5")
129+
sPort = QString("ASC:%1:%2:%3%4%5")
130130
.arg(static_cast<ModbusSerialPort*>(clientPort->port())->portName(),
131131
QString::number(static_cast<ModbusSerialPort*>(clientPort->port())->baudRate()),
132132
QString::number(static_cast<ModbusSerialPort*>(clientPort->port())->dataBits()),
@@ -136,7 +136,7 @@ void mbClientScannerThread::run()
136136
case Modbus::RTU:
137137
clientPort->connect(&ModbusClientPort::signalTx, this, &mbClientScannerThread::slotBytesTx);
138138
clientPort->connect(&ModbusClientPort::signalRx, this, &mbClientScannerThread::slotBytesRx);
139-
sName = QString("Scanner RTU:%1:%2:%3%4%5")
139+
sPort = QString("RTU:%1:%2:%3%4%5")
140140
.arg(static_cast<ModbusSerialPort*>(clientPort->port())->portName(),
141141
QString::number(static_cast<ModbusSerialPort*>(clientPort->port())->baudRate()),
142142
QString::number(static_cast<ModbusSerialPort*>(clientPort->port())->dataBits()),
@@ -146,17 +146,19 @@ void mbClientScannerThread::run()
146146
default:
147147
clientPort->connect(&ModbusClientPort::signalTx, this, &mbClientScannerThread::slotBytesTx);
148148
clientPort->connect(&ModbusClientPort::signalRx, this, &mbClientScannerThread::slotBytesRx);
149-
sName = QString("Scanner TCP:%1:%2")
149+
sPort = QString("TCP:%1:%2")
150150
.arg(static_cast<ModbusTcpPort*>(clientPort->port())->host(),
151151
QString::number(static_cast<ModbusTcpPort*>(clientPort->port())->port()));
152152
break;
153153
}
154-
clientPort->setObjectName(sName.toLatin1().constData());
155-
mbClient::LogInfo(s.name, QString("Begin scanning '%1'").arg(sName));
154+
mbClient::LogInfo(s.name, QString("Begin scanning '%1'").arg(sPort));
156155
for (uint16_t unit = m_unitStart; unit <= m_unitEnd; unit++)
157156
{
158157
if (!m_ctrlRun)
159158
break;
159+
QString sPortUnit = QString("%1,Unit=%2").arg(sPort, QString::number(unit));
160+
clientPort->setObjectName(sPortUnit.toLatin1().constData());
161+
m_scanner->setStatDevice(sPortUnit);
160162
Modbus::StatusCode status;
161163
bool deviceIsFound = false;
162164
Q_FOREACH (const mbClientScanner::FuncParams &f, m_request)
@@ -218,41 +220,41 @@ void mbClientScannerThread::run()
218220
}
219221
else if (Modbus::StatusIsBad(status))
220222
{
221-
mbClient::LogInfo(sName, QString("Unit=%1, Error (%2): %3").arg(QString::number(unit), QString::number(status, 16), clientPort->lastErrorText()));
223+
mbClient::LogInfo(s.name, QString("%1, Error (%2): %3").arg(sPortUnit, QString::number(status, 16), clientPort->lastErrorText()));
222224
}
223225
if (!m_ctrlRun)
224226
break;
225227
}
226228
m_scanner->setStatPercent(++deviceCount*100/m_combinationCountAll);
227229
}
228230
clientPort->close();
229-
mbClient::LogInfo(s.name, QString("End scanning '%1'").arg(sName));
231+
mbClient::LogInfo(s.name, QString("End scanning '%1'").arg(sPort));
230232
delete clientPort;
231233
}
232234
mbClient::LogInfo(s.name, QStringLiteral("Finish scanning"));
233235
}
234236

235237
void mbClientScannerThread::slotBytesTx(const Modbus::Char *source, const uint8_t *buff, uint16_t size)
236238
{
237-
mbClient::LogTxRx(mbClientScanner::Strings::instance().name + QString(" ") + source, QStringLiteral("Tx: ") + Modbus::bytesToString(buff, size).data());
239+
mbClient::LogTxRx(mbClientScanner::Strings::instance().name, source + QStringLiteral(" Tx: ") + Modbus::bytesToString(buff, size).data());
238240
incStatTx();
239241
}
240242

241243
void mbClientScannerThread::slotBytesRx(const Modbus::Char *source, const uint8_t *buff, uint16_t size)
242244
{
243-
mbClient::LogTxRx(mbClientScanner::Strings::instance().name + QString(" ") + source, QStringLiteral("Rx: ") + Modbus::bytesToString(buff, size).data());
245+
mbClient::LogTxRx(mbClientScanner::Strings::instance().name, source + QStringLiteral(" Rx: ") + Modbus::bytesToString(buff, size).data());
244246
incStatRx();
245247
}
246248

247249
void mbClientScannerThread::slotAsciiTx(const Modbus::Char *source, const uint8_t *buff, uint16_t size)
248250
{
249-
mbClient::LogTxRx(mbClientScanner::Strings::instance().name + QString(" ") + source, QStringLiteral("Tx: ") + Modbus::asciiToString(buff, size).data());
251+
mbClient::LogTxRx(mbClientScanner::Strings::instance().name, source + QStringLiteral(" Tx: ") + Modbus::asciiToString(buff, size).data());
250252
incStatTx();
251253
}
252254

253255
void mbClientScannerThread::slotAsciiRx(const Modbus::Char *source, const uint8_t *buff, uint16_t size)
254256
{
255-
mbClient::LogTxRx(mbClientScanner::Strings::instance().name + QString(" ") + source, QStringLiteral("Rx: ") + Modbus::asciiToString(buff, size).data());
257+
mbClient::LogTxRx(mbClientScanner::Strings::instance().name, source + QStringLiteral(" Rx: ") + Modbus::asciiToString(buff, size).data());
256258
incStatRx();
257259
}
258260

src/client/gui/scanner/client_scannerui.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,12 @@ mbClientScannerUi::mbClientScannerUi(QWidget *parent) :
4949
const Modbus::Defaults &md = Modbus::Defaults::instance();
5050

5151
m_scanner = new mbClientScanner(this);
52+
setStatDevice (m_scanner->statDevice ());
5253
setStatCountTx(m_scanner->statCountTx());
5354
setStatCountRx(m_scanner->statCountRx());
5455
setStatPercent(m_scanner->statPercent());
5556
connect(m_scanner, &mbClientScanner::stateChanged, this, &mbClientScannerUi::stateChange);
57+
connect(m_scanner, &mbClientScanner::statDeviceChanged , this, &mbClientScannerUi::setStatDevice );
5658
connect(m_scanner, &mbClientScanner::statCountTxChanged, this, &mbClientScannerUi::setStatCountTx);
5759
connect(m_scanner, &mbClientScanner::statCountRxChanged, this, &mbClientScannerUi::setStatCountRx);
5860
connect(m_scanner, &mbClientScanner::statPercentChanged, this, &mbClientScannerUi::setStatPercent);
@@ -329,16 +331,23 @@ void mbClientScannerUi::stateChange(bool run)
329331
ui->btnAddAll->setEnabled(enable);
330332
ui->btnClear ->setEnabled(enable);
331333
ui->btnStart ->setEnabled(enable);
334+
ui->grCommon ->setEnabled(enable);
335+
ui->grPort ->setEnabled(enable);
336+
}
337+
338+
void mbClientScannerUi::setStatDevice(const QString &device)
339+
{
340+
ui->lbStatDevice->setText(device);
332341
}
333342

334343
void mbClientScannerUi::setStatCountTx(quint32 count)
335344
{
336-
ui->lnStatTx->setText(QString::number(count));
345+
ui->lbStatTx->setText(QString::number(count));
337346
}
338347

339348
void mbClientScannerUi::setStatCountRx(quint32 count)
340349
{
341-
ui->lnStatRx->setText(QString::number(count));
350+
ui->lbStatRx->setText(QString::number(count));
342351
}
343352

344353
void mbClientScannerUi::setStatPercent(quint32 p)

src/client/gui/scanner/client_scannerui.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ private Q_SLOTS:
6767
private Q_SLOTS:
6868
void setType(int type);
6969
void stateChange(bool run);
70+
void setStatDevice(const QString &device);
7071
void setStatCountTx(quint32 count);
7172
void setStatCountRx(quint32 count);
7273
void setStatPercent(quint32 p);

src/client/gui/scanner/client_scannerui.ui

Lines changed: 70 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<rect>
77
<x>0</x>
88
<y>0</y>
9-
<width>609</width>
9+
<width>548</width>
1010
<height>516</height>
1111
</rect>
1212
</property>
@@ -40,7 +40,7 @@
4040
<widget class="QWidget" name="layoutWidget">
4141
<layout class="QHBoxLayout" name="horizontalLayout_3" stretch="0,1">
4242
<item>
43-
<widget class="QGroupBox" name="groupBox_3">
43+
<widget class="QGroupBox" name="grCommon">
4444
<property name="title">
4545
<string>Common</string>
4646
</property>
@@ -145,7 +145,7 @@
145145
</widget>
146146
</item>
147147
<item>
148-
<widget class="QGroupBox" name="groupBox_2">
148+
<widget class="QGroupBox" name="grPort">
149149
<property name="title">
150150
<string>Port</string>
151151
</property>
@@ -365,9 +365,53 @@
365365
</widget>
366366
<widget class="QWidget" name="layoutWidget2">
367367
<layout class="QVBoxLayout" name="verticalLayout_2">
368+
<item>
369+
<widget class="QWidget" name="widget_2" native="true">
370+
<layout class="QHBoxLayout" name="horizontalLayout_7" stretch="0,1">
371+
<property name="spacing">
372+
<number>1</number>
373+
</property>
374+
<property name="leftMargin">
375+
<number>2</number>
376+
</property>
377+
<property name="topMargin">
378+
<number>2</number>
379+
</property>
380+
<property name="rightMargin">
381+
<number>2</number>
382+
</property>
383+
<property name="bottomMargin">
384+
<number>2</number>
385+
</property>
386+
<item>
387+
<widget class="QLabel" name="label_9">
388+
<property name="text">
389+
<string>Current:</string>
390+
</property>
391+
</widget>
392+
</item>
393+
<item>
394+
<widget class="QLabel" name="lbStatDevice">
395+
<property name="minimumSize">
396+
<size>
397+
<width>100</width>
398+
<height>0</height>
399+
</size>
400+
</property>
401+
<property name="text">
402+
<string>-</string>
403+
</property>
404+
<property name="alignment">
405+
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
406+
</property>
407+
</widget>
408+
</item>
409+
</layout>
410+
</widget>
411+
</item>
368412
<item>
369413
<widget class="QWidget" name="widget" native="true">
370-
<layout class="QHBoxLayout" name="horizontalLayout_6">
414+
<layout class="QHBoxLayout" name="horizontalLayout_6" stretch="0,0,0,0,1">
371415
<property name="spacing">
372416
<number>2</number>
373417
</property>
@@ -391,30 +435,24 @@
391435
</widget>
392436
</item>
393437
<item>
394-
<widget class="QLineEdit" name="lnStatTx">
395-
<property name="enabled">
396-
<bool>false</bool>
397-
</property>
398-
<property name="maximumSize">
438+
<widget class="QLabel" name="lbStatTx">
439+
<property name="minimumSize">
399440
<size>
400441
<width>70</width>
401-
<height>16777215</height>
442+
<height>0</height>
402443
</size>
403444
</property>
404-
<property name="text">
405-
<string>0</string>
406-
</property>
407-
<property name="frame">
408-
<bool>true</bool>
445+
<property name="frameShape">
446+
<enum>QFrame::Box</enum>
409447
</property>
410-
<property name="readOnly">
411-
<bool>true</bool>
448+
<property name="frameShadow">
449+
<enum>QFrame::Sunken</enum>
412450
</property>
413-
<property name="cursorMoveStyle">
414-
<enum>Qt::LogicalMoveStyle</enum>
451+
<property name="text">
452+
<string>0</string>
415453
</property>
416-
<property name="clearButtonEnabled">
417-
<bool>false</bool>
454+
<property name="alignment">
455+
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
418456
</property>
419457
</widget>
420458
</item>
@@ -426,21 +464,24 @@
426464
</widget>
427465
</item>
428466
<item>
429-
<widget class="QLineEdit" name="lnStatRx">
430-
<property name="enabled">
431-
<bool>false</bool>
432-
</property>
433-
<property name="maximumSize">
467+
<widget class="QLabel" name="lbStatRx">
468+
<property name="minimumSize">
434469
<size>
435470
<width>70</width>
436-
<height>16777215</height>
471+
<height>0</height>
437472
</size>
438473
</property>
474+
<property name="frameShape">
475+
<enum>QFrame::Box</enum>
476+
</property>
477+
<property name="frameShadow">
478+
<enum>QFrame::Sunken</enum>
479+
</property>
439480
<property name="text">
440481
<string>0</string>
441482
</property>
442-
<property name="frame">
443-
<bool>true</bool>
483+
<property name="alignment">
484+
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
444485
</property>
445486
</widget>
446487
</item>

0 commit comments

Comments
 (0)