private static void AutosaveTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
 {
     AutosaveTimer.Interval = Settings.ExportSettings.AutosaveInterval * 1000;
     if (!Stm32Ads1220.AcquisitionInProgress)
     {
         AutosaveTimer.Stop();
     }
     if (AdcChannels.Values.Count > 0)
     {
         new Thread(() => { CsvExporter.AutoSave(AdcChannels.Values); }).Start();
     }
 }
 private static void Stm32Ads1220_AcquisitionDataReceived(object sender, AcquisitionEventArgs e)
 {
     Trace("App DataReceived");
     if (!AdcChannels.ContainsKey(e.Channel))
     {
         bool added = AdcChannels.TryAdd(
             e.Channel,
             new AdcChannel(e.Channel,
                            (int)Math.Ceiling(Settings.Default.AcquisitionDuration * Settings.Default.AcquisitionSpeed),
                            Settings.Default.Average, Settings.Default.AcquisitionSpeed
                            )
             );
         if (added)
         {
             AdcChannels[e.Channel].DropPoints = Settings.Default.AcqDropPoints;
             AdcChannels[e.Channel].CalculatedXColumnSelector = x => CsvExporter.OADateToSeconds(x);
             if (ChannelEnable.ContainsKey(e.Channel))
             {
                 AdcChannels[e.Channel].IsVisible = ChannelEnable[e.Channel];
             }
             if (ChannelNames.ContainsKey(e.Channel))
             {
                 AdcChannels[e.Channel].Name = ChannelNames[e.Channel];
             }
             if (ColorSet.ContainsKey(e.Channel))
             {
                 AdcChannels[e.Channel].Color = ColorSet[e.Channel];
             }
             if (ChannelMathY.ContainsKey(e.Channel))
             {
                 AdcChannels[e.Channel].MathExpressionY = ChannelMathY[e.Channel];
             }
             new Thread(() =>
             {
                 NewChannelDetected?.Invoke(Stm32Ads1220, new NewChannelDetectedEventArgs(e.Channel));
             }).Start();
         }
         else
         {
             Logger.Error(Default.msgAdcChannelConcurrency);
             return;
         }
     }
     AdcChannels[e.Channel].AddPoint(e.Value);
     if (!AutosaveTimer.Enabled)
     {
         AutosaveTimer.Start();
     }
 }