#include "ModbusCCMgr.h" #include "ZTLog.h" #include "EngLog.h" CModbusCCMgr::CModbusCCMgr(CModbusRepository *Repo, int ModbusPort, int DevID) : CModbusBackend(Repo) { mModbusServer = new QTcpServer(); mDeviceID = DevID; mModbusPort = ModbusPort; connect(mModbusServer,SIGNAL(newConnection()),this,SLOT(NewModbusConnection())); mModbusMode = MODBUS_SLAVE_MODE; } CModbusCCMgr::~CModbusCCMgr() { delete mModbusServer; } int CModbusCCMgr::StartModbusCCServer() { mModbusServer->listen(QHostAddress::Any,mModbusPort); CZTLog::instance()->AddLogString(QString("Serveur Modbus Commande Centralisée démarré sur le port %1").arg(mModbusPort),true); return 1; } void CModbusCCMgr::NewModbusConnection() { mModbusTCPSocketHandle = mModbusServer->nextPendingConnection(); if(mModbusTCPSocketHandle != 0) { mDataLinkValid = true; connect(mModbusTCPSocketHandle,SIGNAL(readyRead()),this,SLOT(ModbusDataReady())); connect(mModbusTCPSocketHandle,SIGNAL(disconnected()),this,SLOT(ConnectionLost())); //qDebug("ModbusCC: Connection with CC established"); CZTLog::instance()->AddLogString(QString("Connection Modbus avec la CC établie. IP[%1]").arg(mModbusTCPSocketHandle->peerAddress().toString()),true); emit ModbusCCConnected(); } } void CModbusCCMgr::ConnectionLost() { ModbusLinkDisconnected(); emit ModbusCCDisconnected(); CZTLog::instance()->AddLogString(QString("Connection Modbus avec la CC rompue."),true); } bool CModbusCCMgr::IsModbusConnected() { return mDataLinkValid; } void CModbusCCMgr::RegistersDatabaseUpdated(quint16 StartAddress, quint16 Length) { Q_UNUSED(StartAddress) Q_UNUSED(Length) emit RepoHasChanged(); } void CModbusCCMgr::ModbusRequestException(quint8 ExceptionCode, quint8 FctCode) { //qDebug("Modbus CC: Request exception occured. ExceptCode: [%d], FctCode: [%d]",ExceptionCode,FctCode); CEngLog::instance()->AddLogString(QString("Modbus CC: Exception de requête. ExceptionCode[%1], FctCode[%2]").arg(ExceptionCode).arg(FctCode)); }