| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -21,52 +21,14 @@ void ModBusMaster::init() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    connect(&objsimModbus, &Simulatermodbus::coilIsReady , this, &ModBusMaster::modbusReplyRecievedSimulate); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    qDebug() << " modBusMaster::init " <<QThread::currentThreadId() ; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    objsimModbus.init(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    /* close();
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    modbusDevice = nullptr; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    modbusDevice = new QModbusRtuSerialMaster(this); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    connect(modbusDevice, &QModbusClient::errorOccurred, [this](QModbusDevice::Error) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        throw serialPortException(modbusDevice->errorString()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    }); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					     | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    if (!modbusDevice) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        throw serialPortException("Could not create Modbus master."); */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void ModBusMaster::open(QString serialPort , int slaveAddress) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    qDebug() << "imodBusMaster::open " << QThread::currentThreadId() ; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    objsimModbus.open(serialPort, slaveAddress); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    /* _serialPort = serialPort;
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    _slaveAddress = slaveAddress; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    if (!modbusDevice) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    if (modbusDevice->state() != QModbusDevice::ConnectedState) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        modbusDevice->setConnectionParameter(QModbusDevice::SerialPortNameParameter, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                             serialPort); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        modbusDevice->setConnectionParameter(QModbusDevice::SerialParityParameter, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                             _modbusSettings.modbusSetting.parity); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        modbusDevice->setConnectionParameter(QModbusDevice::SerialBaudRateParameter, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                             _modbusSettings.modbusSetting.baud); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        modbusDevice->setConnectionParameter(QModbusDevice::SerialDataBitsParameter, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                             _modbusSettings.modbusSetting.dataBits); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        modbusDevice->setConnectionParameter(QModbusDevice::SerialStopBitsParameter, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                             _modbusSettings.modbusSetting.stopBits); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        modbusDevice->setTimeout(_modbusSettings.modbusSetting.responseTime); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        modbusDevice->setNumberOfRetries(_modbusSettings.modbusSetting.numberOfRetries); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        emit modbusConnectionState(true); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    if (!modbusDevice->connectDevice()) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        throw serialPortException(modbusDevice->errorString()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    }  */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void ModBusMaster::close() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    if (modbusDevice) | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -118,30 +80,8 @@ void ModBusMaster::setMultipleRegister(int startAddress, quint16 writeSize , QVe | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					QBitArray ModBusMaster::getCoil(int startAddress, quint16 readSize) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    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(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    coils.resize(static_cast<int>(num)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    for (uint i = 0; i < unit.valueCount(); i++) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        coils.setBit((unit.value(i))); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return coils ; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void ModBusMaster::modbusReplyRecieved() | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |