142 lines
4.2 KiB
C#
142 lines
4.2 KiB
C#
namespace Xylem.Common.Ui.GenesisToolBox.Infrastructure
|
|
{
|
|
using System;
|
|
using System.IO;
|
|
using System.Timers;
|
|
|
|
internal interface ITempMeterForm
|
|
{
|
|
void AddMessage(string message);
|
|
|
|
double GetAverageTOF();
|
|
|
|
void StartRecording();
|
|
|
|
void InvokeOnUIThread(Action action);
|
|
}
|
|
|
|
partial class AutomaticTemperatureCalibration
|
|
{
|
|
private readonly string pcbId;
|
|
private readonly ITempMeterForm tempMeterForm;
|
|
private readonly TemperatureSource temperatureSource;
|
|
|
|
private string messurementsFile;
|
|
private Timer startTimer;
|
|
private Timer resultsTimer;
|
|
|
|
public AutomaticTemperatureCalibration(string pcbId, ITempMeterForm genesisMeter)
|
|
{
|
|
this.pcbId = pcbId;
|
|
this.tempMeterForm = genesisMeter;
|
|
|
|
try
|
|
{
|
|
this.temperatureSource = new TemperatureSource();
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
this.tempMeterForm.AddMessage($"{e}");
|
|
}
|
|
}
|
|
|
|
public void StartMessuring()
|
|
{
|
|
try
|
|
{
|
|
this.messurementsFile = Path.Combine(Appsettings.WorkingDirectory, $"{this.pcbId}_{DateTime.Now:yyyyMMddHHmmss}_messurements.txt");
|
|
|
|
File.AppendAllText(this.messurementsFile, string.Empty);
|
|
|
|
this.resultsTimer = new Timer()
|
|
{
|
|
AutoReset = true,
|
|
Interval = Appsettings.MessurementStep,
|
|
};
|
|
this.resultsTimer.Elapsed += this.StartGettingResults;
|
|
|
|
this.startTimer = new Timer
|
|
{
|
|
AutoReset = true,
|
|
Interval = Appsettings.MessurementDauer,
|
|
};
|
|
this.startTimer.Elapsed += this.StartMessuring;
|
|
|
|
this.StartMessuring(null, null);
|
|
this.startTimer.Start();
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
File.AppendAllText(this.messurementsFile, $"{e}{Environment.NewLine}");
|
|
|
|
this.tempMeterForm.AddMessage($"{e}");
|
|
}
|
|
}
|
|
|
|
private void StartMessuring(Object sender, ElapsedEventArgs args)
|
|
{
|
|
try
|
|
{
|
|
if (this.resultsTimer.Enabled)
|
|
{
|
|
this.resultsTimer.Stop();
|
|
}
|
|
else
|
|
{
|
|
this.tempMeterForm.StartRecording();
|
|
this.resultsTimer.Start();
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
File.AppendAllText(this.messurementsFile, $"{e}{Environment.NewLine}");
|
|
|
|
this.tempMeterForm.AddMessage($"{e}");
|
|
}
|
|
}
|
|
|
|
private void StartGettingResults(Object sender, ElapsedEventArgs args)
|
|
{
|
|
try
|
|
{
|
|
this.tempMeterForm.InvokeOnUIThread(() =>
|
|
{
|
|
var temp = this.temperatureSource.GetTemperature();
|
|
var avgTOF = this.tempMeterForm.GetAverageTOF();
|
|
var messurement = $"{this.pcbId};{DateTime.Now:yyyy-MM-dd HH:mm:ss:fff};{temp:0.00};{avgTOF:0.0000000000}";
|
|
|
|
File.AppendAllText(this.messurementsFile, $"{messurement}{Environment.NewLine}");
|
|
|
|
this.tempMeterForm.AddMessage(messurement);
|
|
this.tempMeterForm.StartRecording();
|
|
});
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
File.AppendAllText(this.messurementsFile, $"{e}{Environment.NewLine}");
|
|
|
|
this.tempMeterForm.AddMessage($"{e}");
|
|
}
|
|
}
|
|
|
|
public void StopMessuring()
|
|
{
|
|
try
|
|
{
|
|
this.resultsTimer.Stop();
|
|
this.resultsTimer.Dispose();
|
|
this.resultsTimer = null;
|
|
|
|
this.startTimer.Stop();
|
|
this.startTimer.Dispose();
|
|
this.startTimer = null;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
File.AppendAllText(this.messurementsFile, $"{e}{Environment.NewLine}");
|
|
|
|
this.tempMeterForm.AddMessage($"{e}");
|
|
}
|
|
}
|
|
}
|
|
} |