Exemple #1
0
 public bool connect(IPAddress ip, ushort port, bool reconnect = false)
 {
     try
     {
         omronPlc.Close();
     }
     catch { }
     this.ip   = ip;
     this.port = port;
     if (reconnect)
     {
         ConnectionStatus = ConnectionStatusEnum.RECONNECTING;
         AutoReconnectAfterConnectionLostCounter++;
     }
     else
     {
         ConnectionStatus = ConnectionStatusEnum.CONNECTING;
     }
     tcpCommand.SetTCPParams(ip, port);
     if (!tryAndConnect())
     {
         if (ConnectionStatus != ConnectionStatusEnum.DISCONNECTED &&
             ConnectionStatus != ConnectionStatusEnum.RECONNECTING)
         {
             ConnectionStatus          = ConnectionStatusEnum.CONNECTION_FAILED;
             connectionMonitor.Enabled = false;
         }
         return(false);
     }
     ConnectionStatus = ConnectionStatusEnum.CONNECTED;
     AutoReconnectAfterConnectionLostCounter = 0;
     connectionMonitor.Enabled = true;
     return(true);
 }
Exemple #2
0
        private bool tryAndConnect()
        {
            Func <bool> testDataRead = (() =>
            {
                try {
                    if (omronPlc.finsConnectionDataRead(0))
                    {
                        return(true);
                    }
                }
                catch (Exception e) { return(false); }
                return(false);
            });
            Func <bool> testNewConnect = (() =>
            {
                try
                {
                    omronPlc = new OmronPLC(mcOMRON.TransportType.Tcp);
                    tcpCommand = ((mcOMRON.tcpFINSCommand)omronPlc.FinsCommand);
                    tcpCommand.SetTCPParams(ip, port);
                    if (omronPlc.Connect())   //why exception
                    //omronPlc.Close();
                    {
                        return(true);
                    }
                }
                catch (Exception e) { return(false); }
                return(false);
            });

            if (testDataRead())
            {
                return(true);
            }
            else if (testNewConnect())
            {
                return(true);
            }
            return(false);
        }