@@ -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
0 commit comments