Skip to content

Commit 0effe6e

Browse files
committed
Added REPORT_SERVER_ID (17, 0x11) function to client's scanner
1 parent f82777d commit 0effe6e

File tree

4 files changed

+23
-15
lines changed

4 files changed

+23
-15
lines changed

src/client/gui/scanner/client_dialogscannerrequest.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ mbClientDialogScannerRequest::mbClientDialogScannerRequest(QWidget *parent) :
5858
m_funcNums.append(MBF_READ_EXCEPTION_STATUS );
5959
m_funcNums.append(MBF_WRITE_MULTIPLE_COILS );
6060
m_funcNums.append(MBF_WRITE_MULTIPLE_REGISTERS );
61+
m_funcNums.append(MBF_REPORT_SERVER_ID );
6162
m_funcNums.append(MBF_MASK_WRITE_REGISTER );
6263
m_funcNums.append(MBF_READ_WRITE_MULTIPLE_REGISTERS );
6364

@@ -191,6 +192,7 @@ mbClientScanner::FuncParams mbClientDialogScannerRequest::getCurrentFunc() const
191192
func.count = 1;
192193
break;
193194
case MBF_READ_EXCEPTION_STATUS:
195+
case MBF_REPORT_SERVER_ID:
194196
func.func = funcNum;
195197
break;
196198
}
@@ -220,6 +222,7 @@ void mbClientDialogScannerRequest::setCurrentFunc(const mbClientScanner::FuncPar
220222
ui->spOffset1->setValue(f.offset);
221223
break;
222224
case MBF_READ_EXCEPTION_STATUS:
225+
case MBF_REPORT_SERVER_ID:
223226
break;
224227
default:
225228
return;

src/client/gui/scanner/client_scanner.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ mbClientScanner::FuncParams mbClientScanner::toFuncParams(const QString &sf, boo
180180
}
181181
break;
182182
case MBF_READ_EXCEPTION_STATUS:
183+
case MBF_REPORT_SERVER_ID:
183184
if (i < s.length())
184185
okInner = false;
185186
f.func = func;
@@ -225,6 +226,7 @@ QString mbClientScanner::toString(const FuncParams &f)
225226
.arg(Strings::instance().func_param_sep)
226227
.arg(f.offset);
227228
case MBF_READ_EXCEPTION_STATUS:
229+
case MBF_REPORT_SERVER_ID:
228230
return QString("%1%2").arg(Strings::instance().func_prefix).arg(f.func, 2, 10, QChar('0'));
229231
default:
230232
return QString();

src/client/gui/scanner/client_scannerthread.cpp

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ void mbClientScannerThread::run()
103103

104104

105105
Modbus::Settings settings = m_settings;
106-
uint8_t dummy[MB_MAX_BYTES];
106+
uint8_t dummy[MB_MAX_BYTES+1];
107107
memset(dummy, 0, sizeof(dummy));
108108

109109
quint32 deviceCount = 0;
@@ -160,7 +160,7 @@ void mbClientScannerThread::run()
160160
QString sPortUnit = QString("%1,Unit=%2").arg(sPort, QString::number(unit));
161161
clientPort->setObjectName(sPortUnit.toLatin1().constData());
162162
m_scanner->setStatDevice(sPortUnit);
163-
Modbus::StatusCode status;
163+
Modbus::StatusCode status = Modbus::Status_Bad;
164164
bool deviceIsFound = false;
165165
Q_FOREACH (const mbClientScanner::FuncParams &f, m_request)
166166
{
@@ -171,37 +171,40 @@ void mbClientScannerThread::run()
171171
switch (f.func)
172172
{
173173
case MBF_READ_COILS:
174-
status = clientPort->readCoils(static_cast<uint16_t>(unit), f.offset, f.count, dummy);
174+
status = clientPort->readCoils(static_cast<uint8_t>(unit), f.offset, f.count, dummy);
175175
break;
176176
case MBF_READ_DISCRETE_INPUTS:
177-
status = clientPort->readDiscreteInputs(static_cast<uint16_t>(unit), f.offset, f.count, dummy);
177+
status = clientPort->readDiscreteInputs(static_cast<uint8_t>(unit), f.offset, f.count, dummy);
178178
break;
179179
case MBF_READ_HOLDING_REGISTERS:
180-
status = clientPort->readHoldingRegisters(static_cast<uint16_t>(unit), f.offset, f.count, reinterpret_cast<uint16_t*>(dummy));
180+
status = clientPort->readHoldingRegisters(static_cast<uint8_t>(unit), f.offset, f.count, reinterpret_cast<uint16_t*>(dummy));
181181
break;
182182
case MBF_READ_INPUT_REGISTERS:
183-
status = clientPort->readInputRegisters(static_cast<uint16_t>(unit), f.offset, f.count, reinterpret_cast<uint16_t*>(dummy));
183+
status = clientPort->readInputRegisters(static_cast<uint8_t>(unit), f.offset, f.count, reinterpret_cast<uint16_t*>(dummy));
184184
break;
185185
case MBF_WRITE_SINGLE_COIL:
186-
status = clientPort->writeSingleCoil(static_cast<uint16_t>(unit), f.offset, 0);
186+
status = clientPort->writeSingleCoil(static_cast<uint8_t>(unit), f.offset, 0);
187187
break;
188188
case MBF_WRITE_SINGLE_REGISTER:
189-
status = clientPort->writeSingleRegister(static_cast<uint16_t>(unit), f.offset, 0);
189+
status = clientPort->writeSingleRegister(static_cast<uint8_t>(unit), f.offset, 0);
190190
break;
191191
case MBF_READ_EXCEPTION_STATUS:
192-
status = clientPort->readExceptionStatus(static_cast<uint16_t>(unit), dummy);
192+
status = clientPort->readExceptionStatus(static_cast<uint8_t>(unit), dummy);
193193
break;
194194
case MBF_WRITE_MULTIPLE_COILS:
195-
status = clientPort->writeMultipleCoils(static_cast<uint16_t>(unit), f.offset, f.count, dummy);
195+
status = clientPort->writeMultipleCoils(static_cast<uint8_t>(unit), f.offset, f.count, dummy);
196196
break;
197197
case MBF_WRITE_MULTIPLE_REGISTERS:
198-
status = clientPort->writeMultipleRegisters(static_cast<uint16_t>(unit), f.offset, f.count, reinterpret_cast<uint16_t*>(dummy));
198+
status = clientPort->writeMultipleRegisters(static_cast<uint8_t>(unit), f.offset, f.count, reinterpret_cast<uint16_t*>(dummy));
199+
break;
200+
case MBF_REPORT_SERVER_ID:
201+
status = clientPort->reportServerID(static_cast<uint8_t>(unit), &dummy[0], &dummy[1]);
199202
break;
200203
case MBF_MASK_WRITE_REGISTER:
201-
status = clientPort->maskWriteRegister(static_cast<uint16_t>(unit), f.offset, 0, 0);
204+
status = clientPort->maskWriteRegister(static_cast<uint8_t>(unit), f.offset, 0, 0);
202205
break;
203206
case MBF_READ_WRITE_MULTIPLE_REGISTERS:
204-
status = clientPort->readWriteMultipleRegisters(static_cast<uint16_t>(unit), f.offset, f.count, reinterpret_cast<uint16_t*>(dummy), f.offset, f.count, reinterpret_cast<uint16_t*>(dummy));
207+
status = clientPort->readWriteMultipleRegisters(static_cast<uint8_t>(unit), f.offset, f.count, reinterpret_cast<uint16_t*>(dummy), f.offset, f.count, reinterpret_cast<uint16_t*>(dummy));
205208
break;
206209
}
207210

src/server/runtime/server_portrunnable.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,14 +106,14 @@ void mbServerPortRunnable::slotBytesRx(const Modbus::Char *source, const uint8_t
106106

107107
void mbServerPortRunnable::slotAsciiTx(const Modbus::Char *source, const uint8_t* buff, uint16_t size)
108108
{
109-
mbServer::LogTx(source, Modbus::bytesToString(buff, size).data());
109+
mbServer::LogTx(source, Modbus::asciiToString(buff, size).data());
110110
m_stat.countTx++;
111111
m_serverPort->setStatCountTx(m_stat.countTx);
112112
}
113113

114114
void mbServerPortRunnable::slotAsciiRx(const Modbus::Char *source, const uint8_t* buff, uint16_t size)
115115
{
116-
mbServer::LogRx(source, Modbus::bytesToString(buff, size).data());
116+
mbServer::LogRx(source, Modbus::asciiToString(buff, size).data());
117117
m_stat.countRx++;
118118
m_serverPort->setStatCountRx(m_stat.countRx);
119119
}

0 commit comments

Comments
 (0)