laatzen/ZeroFlowTool/TemperatureFieldTempCal.cs
2021-10-01 11:12:07 +02:00

290 lines
12 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Windows.Forms;
using System.Globalization;
namespace GenesisZeroFlow
{
public partial class TemperatureFieldTempCal : Form
{
public static class DisplayTempCal
{
public static void TemperatureInputForm2Visible(Boolean visible)
{
if (TemperatureFieldTempCal._TemperatureFieldTempCal.InvokeRequired)
{
TemperatureFieldTempCal._TemperatureFieldTempCal.Invoke((Action<Boolean>)TemperatureInputForm2Visible, visible);
return;
}
TemperatureFieldTempCal._TemperatureFieldTempCal.l_TempField_Meter1.Visible = visible;
TemperatureFieldTempCal._TemperatureFieldTempCal.nUD_TempField_Celsius1.Visible = visible;
}
public static void TemperatureDisplayForm2Visible(Boolean visible)
{
if (TemperatureFieldTempCal._TemperatureFieldTempCal.InvokeRequired)
{
TemperatureFieldTempCal._TemperatureFieldTempCal.Invoke((Action<Boolean>)TemperatureDisplayForm2Visible, visible);
return;
}
TemperatureFieldTempCal._TemperatureFieldTempCal.l_TemperaturePath0.Visible = visible;
TemperatureFieldTempCal._TemperatureFieldTempCal.l_TemperatureDispPath0.Visible = visible;
TemperatureFieldTempCal._TemperatureFieldTempCal.l_TemperaturePath1.Visible = visible;
TemperatureFieldTempCal._TemperatureFieldTempCal.l_TemperatureDispPath1.Visible = visible;
TemperatureFieldTempCal._TemperatureFieldTempCal.l_TemperaturePath2.Visible = visible;
TemperatureFieldTempCal._TemperatureFieldTempCal.l_TemperatureDispPath2.Visible = visible;
}
public static void TemperatureDisplayForm2(UInt16 path, double? text, CultureInfo Culture)
{
try
{
if (text.HasValue)
{
var resultText = text.Value.ToString("0.0000", Culture);
if (path == Constants.PATH0 && TemperatureFieldTempCal._TemperatureFieldTempCal.l_TemperatureDispPath0.Text == resultText)
return;
if (path == Constants.PATH1 && TemperatureFieldTempCal._TemperatureFieldTempCal.l_TemperatureDispPath1.Text == resultText)
return;
if (path == Constants.PATH2 && TemperatureFieldTempCal._TemperatureFieldTempCal.l_TemperatureDispPath2.Text == resultText)
return;
if (TemperatureFieldTempCal._TemperatureFieldTempCal.InvokeRequired)
{
TemperatureFieldTempCal._TemperatureFieldTempCal.Invoke((Action<UInt16, double?, CultureInfo>)TemperatureDisplayForm2, path, text, Culture);
return;
}
switch (path)
{
case Constants.PATH0:
TemperatureFieldTempCal._TemperatureFieldTempCal.l_TemperatureDispPath0.Text = resultText;
break;
case Constants.PATH1:
TemperatureFieldTempCal._TemperatureFieldTempCal.l_TemperatureDispPath1.Text = resultText;
break;
case Constants.PATH2:
TemperatureFieldTempCal._TemperatureFieldTempCal.l_TemperatureDispPath2.Text = resultText;
break;
}
}
}
catch (Exception)
{
// MessageBox.Show("exception");
}
}
}
private static double AddTemp(ushort path, double value)
{
var r = 0.0;
switch (path)
{
case Constants.PATH0:
TemperatureDispPath0.Add(value);
if (TemperatureDispPath0.Count > 20)
{
TemperatureDispPath0.RemoveAt(0);
}
if (!TemperatureDispPath0.Any())
{
return -100;
}
TemperatureDispPath0.ForEach(a => r = r + a);
r = r / TemperatureDispPath0.Count;
break;
case Constants.PATH1:
TemperatureDispPath1.Add(value);
if (TemperatureDispPath1.Count > 20)
{
TemperatureDispPath1.RemoveAt(0);
}
if (!TemperatureDispPath1.Any())
{
return -100;
}
TemperatureDispPath1.ForEach(a => r = r + a);
r = r / TemperatureDispPath1.Count;
break;
case Constants.PATH2:
TemperatureDispPath2.Add(value);
if (TemperatureDispPath2.Count > 20)
{
TemperatureDispPath2.RemoveAt(0);
}
if (!TemperatureDispPath2.Any())
{
return -100;
}
TemperatureDispPath2.ForEach(a => r = r + a);
r = r / TemperatureDispPath2.Count;
break;
}
return r;
}
public TemperatureFieldTempCal()
{
InitializeComponent();
_TemperatureFieldTempCal = this;
tmrUpdateTemp.Enabled = true;
}
public static TemperatureFieldTempCal _TemperatureFieldTempCal;
static List<double> TemperatureDispPath0 = new List<double>();
static List<double> TemperatureDispPath1 = new List<double>();
static List<double> TemperatureDispPath2 = new List<double>();
public Double GetValueMeter1()
{
return (Double)nUD_TempField_Celsius1.Value;
}
public void SetEnabledGbLogging(Boolean enabled)
{
gB_Logging.Enabled = enabled;
}
private void btn_TempField_OK_Click(object sender, EventArgs e)
{
cB_Logging.Checked = false;
TemperatureFieldTempCal._TemperatureFieldTempCal.Close();
frmTempCalibration._frmTempCalibration.SetWaitForTemperatureFieldTempCal(false);
}
private void TemperatureFieldTempCal_Load(object sender, EventArgs e)
{
frmTempCalibration._frmTempCalibration.ThirdFormOpenIndicator = true;
Thread.CurrentThread.CurrentCulture = frmTempCalibration._frmTempCalibration.GetGlobalCulture();
nUD_TempField_Celsius1.Value = (Decimal)((Double)nUD_TempField_Celsius1.Value + 0.01);
nUD_TempField_Celsius1.Value = (Decimal)((Double)nUD_TempField_Celsius1.Value - 0.01);
TemperatureFieldTempCal.DisplayTempCal.TemperatureInputForm2Visible(frmTempCalibration._frmTempCalibration.GetAdjustmentSelectedStatus());
TemperatureFieldTempCal.DisplayTempCal.TemperatureDisplayForm2Visible(frmTempCalibration._frmTempCalibration.GetMeasurementSelectedStatus());
if (frmTempCalibration._frmTempCalibration.GetMeasurementSelectedStatus())
this.Text = "SENSUS Hannover - TEMPERATURE MEASUREMENT";
else
this.Text = "SENSUS Hannover - TEMPERATURE ADJUSTMENT";
l_LoggingStatus.Text = "Status: Logging not yet started";
}
private void TemperatureFieldTempCal_FormClosing(object sender, FormClosingEventArgs e)
{
tmrUpdateTemp.Enabled = false;
frmTempCalibration._frmTempCalibration.SetWaitForTemperatureFieldTempCal(false);
Misc.WaitNMilliseconds(100);
frmTempCalibration._frmTempCalibration.ThirdFormOpenIndicator = false;
//TemperatureFieldTempCal._TemperatureFieldTempCal.Close();
}
private void nUD_TempField_Celsius1_KeyDown(object sender, KeyEventArgs e)
{
LevaeFormOnEnterIsPressed(sender, e);
}
private void TemperatureFieldTempCal_KeyDown(object sender, KeyEventArgs e)
{
LevaeFormOnEnterIsPressed(sender, e);
}
private void LevaeFormOnEnterIsPressed(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
btn_TempField_OK_Click(sender, EventArgs.Empty);
}
}
private void nUD_TempField_Celsius1_ValueChanged(object sender, EventArgs e)
{
//if (sender is NumericUpDown)
//{
// var NumericUpDownSender = (NumericUpDown)sender;
//}
}
private void nUD_TempField_Celsius1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar.Equals('.') || e.KeyChar.Equals(','))
{
e.KeyChar = '.';
}
}
String TemperatureLoggingPath = String.Empty;
private void cB_Logging_CheckedChanged(object sender, EventArgs e)
{
CultureInfo Culture = frmTempCalibration._frmTempCalibration.GetGlobalCulture();
DateTime Time = System.DateTime.Now;
String Logfiletime = Time.ToString(Formats.LogFileDateTimeString, Culture);
String Headertime = Time.ToString(Formats.HeaderFileDateTimeString, Culture);
String Statustime = Time.ToString(Formats.HeaderFileDateTimeString, Culture);
if (cB_Logging.Checked)
{
TemperatureLoggingPath = $@"..\TemperatureCalibrator_TemperatureLogging_{Logfiletime}.txt";
String Header = $"Genesis Temperature Calibrator ; Date = {Headertime}; Operator = {Environment.UserName}\n";
frmTempCalibration._frmTempCalibration.SetDataToLog(Header);
l_LoggingStatus.Text = $"Status: Logging started at {Statustime}";
frmTempCalibration._frmTempCalibration.SetLoggingIndicatorTempTest(true);
}
else
{
frmTempCalibration._frmTempCalibration.SetLoggingIndicatorTempTest(false);
l_LoggingStatus.Text = $"Status: Logging stopped at {Statustime}";
Logging.WriteToFile(frmTempCalibration._frmTempCalibration.GetDataToLog(), TemperatureLoggingPath);
frmTempCalibration._frmTempCalibration.SetDataToLog(String.Empty);
}
}
private void tmrUpdateTemp_Tick(object sender, EventArgs e)
{
CultureInfo Culture = frmTempCalibration._frmTempCalibration.GetGlobalCulture();
var DecodedAllMeters = frmTempCalibration._frmTempCalibration.GetDecodedAllMeters();
for (ushort Path = 0; Path < 3; Path++)
{
if (frmTempCalibration._frmTempCalibration.GetAdjustmentSelectedStatus())
frmTempCalibration.DisplayTempCal.TempCalSetTemperatureLabel(Path, Math.Round(DecodedAllMeters[Path].TemperatureDegC, 5).ToString("0.00", Culture));
else
{
if (frmTempCalibration._frmTempCalibration.ThirdFormOpenIndicator)
TemperatureFieldTempCal.DisplayTempCal.TemperatureDisplayForm2(Path, Math.Round(DecodedAllMeters[Path].TemperatureDegC, 5), Culture);
}
}
frmTempCalibration._frmTempCalibration.FlushBuffer();
}
}
}