|
|
@ -23,6 +23,11 @@ void ModbusWrapper::init() |
|
|
|
connect(&_workerThread, &QThread::started, &loop, &QEventLoop::quit); |
|
|
|
loop.exec(); |
|
|
|
|
|
|
|
connect(this, |
|
|
|
&ModbusWrapper::getConnectionStateOrder, |
|
|
|
&_modbusMaster, |
|
|
|
&ModbusMaster::getConnectionState, |
|
|
|
Qt::BlockingQueuedConnection); |
|
|
|
connect(this, |
|
|
|
&ModbusWrapper::initOrder, |
|
|
|
&_modbusMaster, |
|
|
@ -74,6 +79,11 @@ void ModbusWrapper::init() |
|
|
|
&_modbusMaster, |
|
|
|
&ModbusMaster::setMultipleRegister, |
|
|
|
Qt::BlockingQueuedConnection); |
|
|
|
connect(this, |
|
|
|
&ModbusWrapper::closeOrder, |
|
|
|
&_modbusMaster, |
|
|
|
&ModbusMaster::close, |
|
|
|
Qt::BlockingQueuedConnection); |
|
|
|
|
|
|
|
ExpConfig exp; |
|
|
|
emit initOrder(exp); |
|
|
@ -83,6 +93,68 @@ void ModbusWrapper::init() |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/*************************************************************************************************/ |
|
|
|
void ModbusWrapper::close() |
|
|
|
{ |
|
|
|
|
|
|
|
if (_workerThread.isRunning()) |
|
|
|
{ |
|
|
|
emit closeOrder(); |
|
|
|
_workerThread.quit(); |
|
|
|
_workerThread.wait(); |
|
|
|
disconnect(this, |
|
|
|
&ModbusWrapper::getConnectionStateOrder, |
|
|
|
&_modbusMaster, |
|
|
|
&ModbusMaster::getConnectionState); |
|
|
|
disconnect(this, |
|
|
|
&ModbusWrapper::initOrder, |
|
|
|
&_modbusMaster, |
|
|
|
&ModbusMaster::init); |
|
|
|
disconnect(this, |
|
|
|
&ModbusWrapper::connectOrder, |
|
|
|
&_modbusMaster, |
|
|
|
&ModbusMaster::connectToDevice); |
|
|
|
disconnect(this, |
|
|
|
&ModbusWrapper::getCoilOrder, |
|
|
|
&_modbusMaster, |
|
|
|
&ModbusMaster::getCoil); |
|
|
|
disconnect(this, |
|
|
|
&ModbusWrapper::getInputCoilOrder, |
|
|
|
&_modbusMaster, |
|
|
|
&ModbusMaster::getInputCoil); |
|
|
|
disconnect(this, |
|
|
|
&ModbusWrapper::getHoldingRegisterOrder, |
|
|
|
&_modbusMaster, |
|
|
|
&ModbusMaster::getHoldingRegister); |
|
|
|
disconnect(this, |
|
|
|
&ModbusWrapper::getInputRegisterOrder, |
|
|
|
&_modbusMaster, |
|
|
|
&ModbusMaster::getInputRegister); |
|
|
|
|
|
|
|
disconnect(this, |
|
|
|
&ModbusWrapper::setSingleCoilOrder, |
|
|
|
&_modbusMaster, |
|
|
|
&ModbusMaster::setSingleCoil); |
|
|
|
disconnect(this, |
|
|
|
&ModbusWrapper::setMultipleCoilOrder, |
|
|
|
&_modbusMaster, |
|
|
|
&ModbusMaster::setMultipleCoil); |
|
|
|
disconnect(this, |
|
|
|
&ModbusWrapper::setSingleRegisterOrder, |
|
|
|
&_modbusMaster, |
|
|
|
&ModbusMaster::setSingleRegister); |
|
|
|
disconnect(this, |
|
|
|
&ModbusWrapper::setMultipleRegisterOrder, |
|
|
|
&_modbusMaster, |
|
|
|
&ModbusMaster::setMultipleRegister); |
|
|
|
disconnect(this, |
|
|
|
&ModbusWrapper::closeOrder, |
|
|
|
&_modbusMaster, |
|
|
|
&ModbusMaster::close); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
/*************************************************************************************************/ |
|
|
|
QBitArray ModbusWrapper::getCoil(int startAddress, quint16 readSize) |
|
|
|
{ |
|
|
@ -182,6 +254,12 @@ void ModbusWrapper::setMultipleRegister(int startAddress, |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/*************************************************************************************************/ |
|
|
|
bool ModbusWrapper::getStatus() |
|
|
|
{ |
|
|
|
return emit getConnectionStateOrder(); |
|
|
|
} |
|
|
|
|
|
|
|
/*************************************************************************************************/ |
|
|
|
void ModbusWrapper::connectToDevice(ModbusConfig modbusConfig) |
|
|
|
{ |
|
|
|