Beispiel #1
0
        /// <summary>
        /// Pings each available simulator device currently connected to this software.
        /// </summary>
        void SimulatorPingTimer_Elapsed(object sender, ElapsedEventArgs e)
        {
            timerTickCnt++;

            if (this.simulatorSetupType == CBaseSimulator.SimulatorSetupTypes.OneDevice)
            {
                CBaseSimulator simulator = SimulatorController.SingleSimulatorMode.SimulatorControl.Instance.GetOstererSimulator();
                string         id        = simulator.GetDeviceId(); //retrieve the id of the device to see whether it is still connected or not
                SimulatorPingTimer.Start();
                return;
            }

            List <CBaseSimulator> Simulators = SimulatorController.MultiSimulatorMode.SimulatorControl.Instance.GetAllConnectedSimulators();

            if (Simulators == null)
            {
                SimulatorPingTimer.Start();
                return;
            }

            foreach (CBaseSimulator device in Simulators)
            {
                string id;

                if (device is SerialSimulatorServices.CSerialSimulator)
                {
                    if ((device as SerialSimulatorServices.CSerialSimulator).IsConnected)
                    {
                        if ((device as SerialSimulatorServices.CSerialSimulator).LastUsageTime < DateTime.Now.AddMinutes(-10d))
                        {
                            id = (device as SerialSimulatorServices.CSerialSimulator).GetDeviceId();
                        }
                    }
                    else if (device is NgMattApiWrapper.CngMattSimulator)
                    {
                        id = device.GetDeviceId(); //this does not actually communicate with the device as this is not needed for ngMatts
                    }
                    else
                    {
                        OnErrorOccured?.Invoke(this, "Fehler im Watchdog beim überprüfen der Simulatorverbindungen. Unbekannter Typ: " + device.GetType().ToString());
                    }
                }
            }

            SimulatorPingTimer.Start();
        }