| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -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 "; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |