Пример #1
0
        private void reiniciarThreadConexao()
        {
            // Ícone sem conexão
            ProcessIcon.ChangeIcon((int)ProcessIcon.ICONS.Red);

            logger.Warn("Retentando conexão com ModBus...");
            // Interrompe as threads de produção dado que a conexão caiu
            pararThreads();
            // Inicia a thread de tentativas de conexão.
            iniciarThreadConexao();
        }
Пример #2
0
        static void Main()
        {
            Assembly assembly  = Assembly.GetExecutingAssembly();
            var      attribute = (GuidAttribute)assembly.GetCustomAttributes(typeof(GuidAttribute), true)[0];
            var      appGuid   = attribute.Value;

            using (Mutex mutex = new Mutex(false, "Global\\" + appGuid))
            {
                bool interfaceStarted = false;
                // Show the system tray icon.
                using (ProcessIcon pi = new ProcessIcon())
                {
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);


                    if (!mutex.WaitOne(0, false))
                    {
                        MessageBox.Show("Programa já em execução!");
                        return;
                    }

                    CheckAndTransmit checkAndTransmit = null;
                    try
                    {
                        checkAndTransmit             = new CheckAndTransmit();
                        checkAndTransmit.ProcessIcon = pi;
                        pi.Display(checkAndTransmit);
                        pi.ChangeIcon((int)ProcessIcon.ICONS.Red);
                        checkAndTransmit.iniciarThreadConexao();
                        // Make sure the application runs!
                        Application.Run();
                    }
                    catch (Exception ex)
                    {
                        checkAndTransmit.LOGGER.Fatal("************* Não foi possível iniciar o processo *************");
                        checkAndTransmit.LOGGER.Fatal(ex.Message);
                    }
                }
            }
        }
Пример #3
0
        public void iniciarThreadConexao()
        {
            // Iniciando/Reiniciando travas.
            transmissionSemaphore = new Semaphore(1, 1);

            string enderecoModBus = modbusRegistry.obterModBusEndereco();
            int    portaModBus    = modbusRegistry.obterModBusPorta();

            ThreadConexao = new Thread(() =>
            {
                bool conectado = false;

                databaseCheckerShouldRun = true;

                while (conectado == false && DatabaseCheckerShouldRun)
                {
                    try
                    {
                        modbusClient = new ModbusClient(enderecoModBus, portaModBus);    //Ip-Address and Port of Modbus-TCP-Server
                        modbusClient.Connect();                                          //Connect to Server
                        conectado = true;
                        ProcessIcon.ChangeIcon((int)ProcessIcon.ICONS.Normal);
                    }
                    catch (Exception ex)
                    {
                        logger.Error("Erro ao conectar ao servidor: " + ex.Message);
                        logger.Warn("Tentando novamente em 3 segundos...");
                        Thread.Sleep(3000);
                    }
                }

                iniciarThreadPrincipal();
                iniciarThreadHeartBeat();
                ThreadConexao.Join();
            });
            ThreadConexao.Name = "Conexão";
            ThreadConexao.Start();
        }