|
|
@ -18,10 +18,12 @@ ModBusMaster::~ModBusMaster() |
|
|
|
|
|
|
|
void ModBusMaster::init() |
|
|
|
{ |
|
|
|
qDebug() << " modBusMaster::init " <<QThread::currentThreadId() ; |
|
|
|
objsimModbus.init(); |
|
|
|
connect(&objsimModbus, &Simulatermodbus::coilIsReady , this, &ModBusMaster::modbusReplyRecievedSimulate); |
|
|
|
qDebug() << " modBusMaster::init " <<QThread::currentThreadId() ; |
|
|
|
objsimModbus.init(); |
|
|
|
|
|
|
|
/* close();
|
|
|
|
|
|
|
|
/* close();
|
|
|
|
modbusDevice = nullptr; |
|
|
|
|
|
|
|
modbusDevice = new QModbusRtuSerialMaster(this); |
|
|
@ -37,10 +39,10 @@ void ModBusMaster::init() |
|
|
|
|
|
|
|
void ModBusMaster::open(QString serialPort , int slaveAddress) |
|
|
|
{ |
|
|
|
qDebug() << "imodBusMaster::open " << QThread::currentThreadId() ; |
|
|
|
objsimModbus.open(serialPort, slaveAddress); |
|
|
|
qDebug() << "imodBusMaster::open " << QThread::currentThreadId() ; |
|
|
|
objsimModbus.open(serialPort, slaveAddress); |
|
|
|
|
|
|
|
/* _serialPort = serialPort;
|
|
|
|
/* _serialPort = serialPort;
|
|
|
|
_slaveAddress = slaveAddress; |
|
|
|
if (!modbusDevice) |
|
|
|
return; |
|
|
@ -116,16 +118,17 @@ void ModBusMaster::setMultipleRegister(int startAddress, quint16 writeSize , QVe |
|
|
|
|
|
|
|
QBitArray ModBusMaster::getCoil(int startAddress, quint16 readSize) |
|
|
|
{ |
|
|
|
qDebug() << " QThread::currentThreadId() getCoil befor" <<QThread::currentThreadId() ; |
|
|
|
|
|
|
|
objsimModbus.readCoil(startAddress,readSize); |
|
|
|
return clientCoil; |
|
|
|
/*
|
|
|
|
qDebug() << " QThread::currentThreadId() getCoil befor" <<QThread::currentThreadId() ; |
|
|
|
QModbusDataUnit unit = readRequest(QModbusDataUnit::RegisterType::Coils, startAddress, readSize); |
|
|
|
qDebug() << " QThread::currentThreadId() getCoil after" <<QThread::currentThreadId() ; |
|
|
|
mutex.lock(); |
|
|
|
if(!freeThread) |
|
|
|
modBusAnswerNotReady.wait(&mutex); |
|
|
|
mutex.unlock(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QBitArray coils; |
|
|
|
coils.resize(2); |
|
|
|
auto num = unit.valueCount(); |
|
|
@ -134,12 +137,15 @@ QBitArray ModBusMaster::getCoil(int startAddress, quint16 readSize) |
|
|
|
{ |
|
|
|
coils.setBit((unit.value(i))); |
|
|
|
} |
|
|
|
return coils ; |
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return coils ; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
void ModBusMaster::modbusReplyRecieved() |
|
|
|
{ |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
@ -254,24 +260,11 @@ bool ModBusMaster::checkForError(QModbusReply *_reply) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
void ModBusMaster::modbusReplyRecieved() |
|
|
|
void ModBusMaster::modbusReplyRecievedSimulate(QBitArray coilDataFromClient) |
|
|
|
{ |
|
|
|
qDebug() << " QThread::currentThreadId() inside slot" <<QThread::currentThreadId() ; |
|
|
|
// auto reply = qobject_cast<QModbusReply *>(sender());
|
|
|
|
// if (!reply)
|
|
|
|
// return;
|
|
|
|
|
|
|
|
// modbusReplyFromClient = reply;
|
|
|
|
freeThread=true; |
|
|
|
mutex.lock(); |
|
|
|
if (freeThread) |
|
|
|
modBusAnswerNotReady.wakeAll(); |
|
|
|
mutex.unlock(); |
|
|
|
|
|
|
|
// reply->deleteLater();
|
|
|
|
|
|
|
|
clientCoil = coilDataFromClient; |
|
|
|
} |
|
|
|
|
|
|
|
void ModBusMaster::writeRequest(QModbusDataUnit::RegisterType registerType, int startAddress, quint16 writeSize) |
|
|
|
{ |
|
|
|
qDebug() << " ---- setSingleCoil coilFlag writeRequest "; |
|
|
|