예제 #1
0
        private void Run()
        {
            TMData    lastTelemetryData = new TMData();
            Stopwatch sw = new Stopwatch();

            sw.Start();

            while (!isStopped)
            {
                try
                {
                    TMData telemetryData = (TMData)readSharedMemory(typeof(TMData), sharedMemoryFile);
                    IsConnected = true;

                    if (telemetryData.Object.Timestamp != lastTelemetryData.Object.Timestamp)
                    {
                        //Debuglog("Get Data");
                        IsRunning = true;

                        sw.Restart();

                        TelemetryEventArgs args = new TelemetryEventArgs(new TMTelemetryInfo(telemetryData, lastTelemetryData));

                        RaiseEvent(OnTelemetryUpdate, args);
                        lastTelemetryData = telemetryData;
                    }
                    else if (sw.ElapsedMilliseconds > 500)
                    {
                        IsRunning = false;
                    }

                    Thread.Sleep(SamplePeriod);
                }
                catch (Exception e)
                {
                    LogError("TMTelemetryProvider Exception while processing data", e);
                    IsConnected = false;
                    IsRunning   = false;
                    Thread.Sleep(1000);
                }
            }

            IsConnected = false;
            IsRunning   = false;
        }
예제 #2
0
 public TMTelemetryInfo(TMData telemetryData, TMData lastTelemetryData)
 {
     _telemetryData = telemetryData;
 }