Détection automatique Modbus

Détection automatique au démarrage de la présence du HPC sur le réseau.
Si oui, le Modbus est activé, si non les I/O discrets sont utilisés.
This commit is contained in:
jfmartel
2017-11-10 14:53:04 -05:00
parent 6500e25bd5
commit cd943fea9e
5 changed files with 70 additions and 32 deletions
+22 -1
View File
@@ -54,6 +54,27 @@ int CModbusCCMgr::StartModbusCCServer()
return 1;
}
bool CModbusCCMgr::CheckForCCPartner(const int msTimeout, const int port)
{
QTcpServer *DummyServer = new QTcpServer();
DummyServer->listen(QHostAddress::Any,port);
if(DummyServer->waitForNewConnection(msTimeout) == true)
{
QTcpSocket* DummySocket = DummyServer->nextPendingConnection();
DummySocket->disconnectFromHost();
DummySocket->waitForDisconnected(1000);
delete DummySocket;
DummyServer->close();
delete DummyServer;
return true;
}
DummyServer->close();
delete DummyServer;
return false;
}
int CModbusCCMgr::CloseModbusCCServer()
{
mModbusServer->close();
@@ -74,7 +95,7 @@ int CModbusCCMgr::CloseModbusCCServer()
delete mModbusTCPSocketHandle;
}
CZTLog::instance()->AddLogString(QString("Serveur Modbus Commande Centralisée démarré sur le port %1").arg(mModbusPort),true);
CZTLog::instance()->AddLogString(QString("Serveur Modbus Commande Centralisée fermé"),true);
return 1;
}
+1
View File
@@ -32,6 +32,7 @@ public:
int StartModbusCCServer();
int CloseModbusCCServer();
bool IsModbusConnected();
static bool CheckForCCPartner(const int msTimeout, const int port);