add MagFlux TestResults for calibration

This commit is contained in:
Roland Drabesch
2023-06-01 13:21:26 +02:00
parent 85e1b5acc1
commit 3acb7daead
11 changed files with 229 additions and 127 deletions
+1 -1
View File
@@ -155,7 +155,7 @@
</site> </site>
<site name="MeterProcessState" id="2"> <site name="MeterProcessState" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool"> <application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Users\SZLATEV\source\repos\laa_production\Common\Service\MeterProcessState" /> <virtualDirectory path="/" physicalPath="C:\Users\drabesch_ro\Repo\lab\la_operations\laa_production\Common\Service\MeterProcessState" />
</application> </application>
<bindings> <bindings>
<binding protocol="http" bindingInformation="*:56011:localhost" /> <binding protocol="http" bindingInformation="*:56011:localhost" />
@@ -220,7 +220,6 @@
<Compile Include="EventArguments\RegisterUpdateEventArgs.cs" /> <Compile Include="EventArguments\RegisterUpdateEventArgs.cs" />
<Compile Include="EventArguments\RequestResponseDataEventArgs.cs" /> <Compile Include="EventArguments\RequestResponseDataEventArgs.cs" />
<Compile Include="MeasurementRecords\CalibrationRecord.cs" /> <Compile Include="MeasurementRecords\CalibrationRecord.cs" />
<Compile Include="MeasurementRecords\FlowDeviations.cs" />
<Compile Include="MeasurementRecords\FlowTestRecord.cs" /> <Compile Include="MeasurementRecords\FlowTestRecord.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="RadioConfigurationParams.cs" /> <Compile Include="RadioConfigurationParams.cs" />
@@ -1168,6 +1168,11 @@ namespace Xylem.Common.Hardware.WaterMeter.MagFlux.MagFluxCore
} }
} }
public void WriteCalibrationTestBench(List<WaterMeter.DataPackages.MeasurementRecords.FlowDeviations> results)
{
//todo: convert to CalibrationPoints in L per H
}
/// <inheritdoc/> /// <inheritdoc/>
void IMeter.SetupFromConfigFile(Int32 slot, Boolean ignoreCorruptedData, Boolean useRequest, Boolean useStreaming) void IMeter.SetupFromConfigFile(Int32 slot, Boolean ignoreCorruptedData, Boolean useRequest, Boolean useStreaming)
{ {
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
namespace Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.MeasurementRecords namespace Xylem.Common.Hardware.WaterMeter.DataPackages.MeasurementRecords
{ {
public class FlowDeviations public class FlowDeviations
{ {
@@ -257,6 +257,7 @@
<Compile Include="BatchActions\BatchCallStopMeasurement.cs" /> <Compile Include="BatchActions\BatchCallStopMeasurement.cs" />
<Compile Include="Consts\DisplayCodes.cs" /> <Compile Include="Consts\DisplayCodes.cs" />
<Compile Include="Consts\ErrorState.cs" /> <Compile Include="Consts\ErrorState.cs" />
<Compile Include="DataPackages\FlowDeviations.cs" />
<Compile Include="IMeterBatch.cs" /> <Compile Include="IMeterBatch.cs" />
<Compile Include="MeterBatch.cs" /> <Compile Include="MeterBatch.cs" />
<Compile Include="IMeter.cs" /> <Compile Include="IMeter.cs" />
@@ -2,7 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.MeasurementRecords; using Xylem.Common.Hardware.WaterMeter.DataPackages.MeasurementRecords;
using Xylem.Common.Hardware.WaterMeter.WaterMeterCore; using Xylem.Common.Hardware.WaterMeter.WaterMeterCore;
namespace XylemCommonUiLegacyGenCtl.DataPackage namespace XylemCommonUiLegacyGenCtl.DataPackage
@@ -5,6 +5,10 @@ namespace XylemCommonUiLegacyGenCtl.DataPackage
{ {
public class TestSetupContainer public class TestSetupContainer
{ {
public TestSetupContainer()
{
meterTestResults = new MeterTestResults[10];
}
public bool WatingForDecision { get; set; } = true; public bool WatingForDecision { get; set; } = true;
public TempSouceType TempSouce { get; set; } public TempSouceType TempSouce { get; set; }
@@ -25,5 +25,8 @@ namespace XylemCommonUiLegacyGenCtl
void SetTestSetupContainer(dynamic container); void SetTestSetupContainer(dynamic container);
dynamic GetTestSetupContainer();
} }
} }
+10 -2
View File
@@ -268,6 +268,7 @@ namespace XylemCommonUiLegacyGenCtl
} }
else if (Mode == MeterTypes.MagFlux) else if (Mode == MeterTypes.MagFlux)
{ {
MessageBox.Show("Start MagFlux ZeroFlow");
var meterBatch = new MeterBatch(); var meterBatch = new MeterBatch();
foreach (var item in TestsetuptContainer?.meterTestSettings) foreach (var item in TestsetuptContainer?.meterTestSettings)
@@ -277,7 +278,9 @@ namespace XylemCommonUiLegacyGenCtl
var newMeter = new MagFluxMeter(); var newMeter = new MagFluxMeter();
newMeter.Login(); newMeter.Login();
newMeter.SerialNumber = item.SerialNr; newMeter.SerialNumber = item.SerialNr;
meterBatch.AddMeter(newMeter); meterBatch.AddMeter(newMeter);
newMeter.InitCalibration();
} }
} }
@@ -301,7 +304,7 @@ namespace XylemCommonUiLegacyGenCtl
for (int i = 0; i <= c; i++) for (int i = 0; i <= c; i++)
{ {
TestsetuptContainer.meterTestResults[c] = new MeterTestResults(); TestsetuptContainer.meterTestResults[c] = new MeterTestResults();
TestsetuptContainer.meterTestResults[c].Results = new List<Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.MeasurementRecords.FlowDeviations>(); TestsetuptContainer.meterTestResults[c].Results = new List<Xylem.Common.Hardware.WaterMeter.DataPackages.MeasurementRecords.FlowDeviations>();
} }
@@ -312,7 +315,7 @@ namespace XylemCommonUiLegacyGenCtl
TestsetuptContainer.meterTestResults[meter.Slot - 1].meterType = MeterTypes.MagFlux; TestsetuptContainer.meterTestResults[meter.Slot - 1].meterType = MeterTypes.MagFlux;
TestsetuptContainer.meterTestResults[meter.Slot - 1].Slot = meter.Slot; TestsetuptContainer.meterTestResults[meter.Slot - 1].Slot = meter.Slot;
TestsetuptContainer.meterTestResults[meter.Slot - 1].SerialNr = meter.SerialNumber; TestsetuptContainer.meterTestResults[meter.Slot - 1].SerialNr = meter.SerialNumber;
TestsetuptContainer.meterTestResults[meter.Slot - 1].Results.Add(new Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.MeasurementRecords.FlowDeviations() { RefTimeS = testTime, MeasuredRefFlowQmPerH = 0, RequierdTimeS = testTime, RequierdFlowQmPerH = 0, MeasuredDutFlowQmPerH = resU.DutFlowRateCmPh.Value, DutTimeS = resU.DutTimeS }); TestsetuptContainer.meterTestResults[meter.Slot - 1].Results.Add(new Xylem.Common.Hardware.WaterMeter.DataPackages.MeasurementRecords.FlowDeviations() { RefTimeS = testTime, MeasuredRefFlowQmPerH = 0, RequierdTimeS = testTime, RequierdFlowQmPerH = 0, MeasuredDutFlowQmPerH = resU.DutFlowRateCmPh.Value, DutTimeS = resU.DutTimeS });
} }
@@ -414,5 +417,10 @@ public void SetTestSetupContainer(dynamic vbContainer)
TestsetuptContainer = vbContainer; TestsetuptContainer = vbContainer;
} }
} }
public dynamic GetTestSetupContainer()
{
return TestsetuptContainer;
}
} }
} }
+7 -1
View File
@@ -186,13 +186,19 @@ namespace XylemCommonUiLegacyGenCtl
testSetup.meterTestSettings[Slot - 1] = new MeterTestSettings(); testSetup.meterTestSettings[Slot - 1] = new MeterTestSettings();
} }
if (testSetup.meterTestSettings[Slot - 1] == null)
{
testSetup.meterTestResults[Slot - 1] = new MeterTestResults();
}
testSetup.meterTestSettings[Slot - 1].Slot = Slot; testSetup.meterTestSettings[Slot - 1].Slot = Slot;
testSetup.meterTestSettings[Slot - 1].SerialNr = SerialNr; testSetup.meterTestSettings[Slot - 1].SerialNr = SerialNr;
testSetup.meterTestSettings[Slot - 1].FlowAdjustment = FlowAdjustment; testSetup.meterTestSettings[Slot - 1].FlowAdjustment = FlowAdjustment;
testSetup.meterTestSettings[Slot - 1].FlowAdjustmentTarget = Convert.ToDecimal(FlowAdjustmentTarget); testSetup.meterTestSettings[Slot - 1].FlowAdjustmentTarget = Convert.ToDecimal(FlowAdjustmentTarget);
testSetup.meterTestSettings[Slot - 1].PreAdjustment = PreAdjustment; testSetup.meterTestSettings[Slot - 1].PreAdjustment = PreAdjustment;
testSetup.meterTestSettings[Slot - 1].FlowTesting = FlowTesting; testSetup.meterTestSettings[Slot - 1].FlowTesting = FlowTesting;
testSetup.meterTestSettings[Slot - 1].meterType = Xylem.Common.Hardware.WaterMeter.WaterMeterCore.MeterTypes.Cordonel; testSetup.meterTestSettings[Slot - 1].meterType = Xylem.Common.Hardware.WaterMeter.WaterMeterCore.MeterTypes.MagFlux;
} }
+196 -120
View File
@@ -786,8 +786,8 @@ namespace XylemCommonUiLegacyGenCtl
return; return;
} }
} }
//; //;
uniMeter.WriteLog("Add from AddAllMeters"); uniMeter.WriteLog("Add from AddAllMeters");
} }
@@ -886,11 +886,14 @@ namespace XylemCommonUiLegacyGenCtl
TestSetupContainer = new TestSetupContainer(); TestSetupContainer = new TestSetupContainer();
TestSetupContainer.AllChanelsRequired = true; TestSetupContainer.AllChanelsRequired = true;
TestSetupContainer.meterTestSettings = new MeterTestSettings[10]; TestSetupContainer.meterTestSettings = new MeterTestSettings[10];
TestSetupContainer.meterTestResults = new MeterTestResults[10];
} }
if (!TestSetupContainer.meterTestSettings.Any(f => f != null && f.Slot == slot)) if (!TestSetupContainer.meterTestSettings.Any(f => f != null && f.Slot == slot))
{ {
TestSetupContainer.meterTestSettings[slot] = new MeterTestSettings() { SerialNr = serialNumber, Slot = slot, FlowAdjustment = true, FlowTesting = true }; TestSetupContainer.meterTestSettings[slot] = new MeterTestSettings() { SerialNr = serialNumber, Slot = slot, FlowAdjustment = true, FlowTesting = true };
TestSetupContainer.meterTestResults[slot] = new MeterTestResults() { SerialNr = serialNumber, Slot = slot, meterType = MeterTypes.MagFlux, Results = new List<Xylem.Common.Hardware.WaterMeter.DataPackages.MeasurementRecords.FlowDeviations>() };
} }
AddMeter(serialNumber, slot, true); AddMeter(serialNumber, slot, true);
} }
@@ -987,6 +990,28 @@ namespace XylemCommonUiLegacyGenCtl
var meter = batch.ListOfMeters.First(f => f.Slot == slot); var meter = batch.ListOfMeters.First(f => f.Slot == slot);
var state = Xylem.Common.Hardware.WaterMeter.WaterMeterCore.Consts.DisplayCodes.FlowTested; var state = Xylem.Common.Hardware.WaterMeter.WaterMeterCore.Consts.DisplayCodes.FlowTested;
if (meter is MagFluxMeter mag)
{
var sb = new StringBuilder();
if (TestSetupContainer.meterTestSettings.Any(s => s.Slot == slot && s.PreAdjustment))
{
var result = TestSetupContainer.meterTestResults.First(s => s.Slot == slot);
sb.AppendLine($"Results: {result.SerialNr} on ep. {result.Slot}");
foreach (var flowDeviations in result.Results)
{
sb.AppendLine($"RefFlow {flowDeviations.MeasuredRefFlowQmPerH} (for {flowDeviations.RefTimeS} Seconds) vs DutFlow {flowDeviations.MeasuredDutFlowQmPerH} (for {flowDeviations.DutTimeS} Seconds)");
}
mag.WriteCalibrationTestBench(result.Results);
}
MessageBox.Show($"{sb}");
return;
}
if (!Succeed) if (!Succeed)
{ {
if (meter is GenesisMeter gen) if (meter is GenesisMeter gen)
@@ -1100,7 +1125,7 @@ namespace XylemCommonUiLegacyGenCtl
if ((meter is GenesisMeter genesisMeter)) if ((meter is GenesisMeter genesisMeter))
{ {
AddMeterToGrid(meter.Slot, meter.SerialNumber, genesisMeter.PcbId, IsFlyingStartStop); AddMeterToGrid(meter.Slot, meter.SerialNumber, genesisMeter.PcbId, IsFlyingStartStop);
} }
else if ((meter is MagFluxMeter fluxMeter)) else if ((meter is MagFluxMeter fluxMeter))
{ {
@@ -1217,8 +1242,8 @@ namespace XylemCommonUiLegacyGenCtl
} }
Thread.Sleep(sleepTimeS * 1000); Thread.Sleep(sleepTimeS * 1000);
//Run as long the Checktime is not zero or we dont have a meter left without progress //Run as long the Checktime is not zero or we dont have a meter left without progress
while (TotalTimeForCheck >= 0 && SlotsWithoutProgress.Any()) while (TotalTimeForCheck >= 0 && SlotsWithoutProgress.Any())
{ {
Thread.Sleep(sleepTimeS * 1000); Thread.Sleep(sleepTimeS * 1000);
TotalTimeForCheck -= sleepTimeS; TotalTimeForCheck -= sleepTimeS;
@@ -1233,13 +1258,13 @@ namespace XylemCommonUiLegacyGenCtl
{ {
var r = ((GenesisMeter)meter).GetMainMeasurementResult(null, null, true); var r = ((GenesisMeter)meter).GetMainMeasurementResult(null, null, true);
//when Start and Stop Record have different Volumes the meter is ready for test, //when Start and Stop Record have different Volumes the meter is ready for test,
//if a measurement hasn't finished, the StopRecord is an intermediate record, as //if a measurement hasn't finished, the StopRecord is an intermediate record, as
//this will be used for intermediate tolerance calculation. //this will be used for intermediate tolerance calculation.
//ReSharper disable once CompareOfFloatsByEqualityOperator as the rounding will take place in the //ReSharper disable once CompareOfFloatsByEqualityOperator as the rounding will take place in the
//Cordonel and only an unequally value needs to be detected //Cordonel and only an unequally value needs to be detected
//when Start and Stop Record have diffrent Volumes the meter is ready for test //when Start and Stop Record have diffrent Volumes the meter is ready for test
if (r.DutStartRecord.GetVolumeCm() != r.DutStopRecord.GetVolumeCm()) if (r.DutStartRecord.GetVolumeCm() != r.DutStopRecord.GetVolumeCm())
{ {
_logger.Info($" Meter {meter.Slot} Meter has progress {r.DutVolumeCm}"); _logger.Info($" Meter {meter.Slot} Meter has progress {r.DutVolumeCm}");
((GenesisMeter)meter).StopMeasurement(); ((GenesisMeter)meter).StopMeasurement();
@@ -1422,8 +1447,8 @@ namespace XylemCommonUiLegacyGenCtl
else else
{ {
Int32 retrys = 0; Int32 retrys = 0;
//remove channel filter 0 //remove channel filter 0
var onlyChnl = _checkAllChannels ? null : (Int32?)0; var onlyChnl = _checkAllChannels ? null : (Int32?)0;
while (item.GetMeasurementState(onlyChnl) != MeasurementStates.IsCompleted && retrys < nrOfRetrys) while (item.GetMeasurementState(onlyChnl) != MeasurementStates.IsCompleted && retrys < nrOfRetrys)
{ {
@@ -1526,11 +1551,42 @@ namespace XylemCommonUiLegacyGenCtl
_logger.Debug($"Start Record: TimeS={result.Value.DutStartRecord.GetTimeS()}, VolumeCm={result.Value.DutStartRecord.GetVolumeCm()}"); _logger.Debug($"Start Record: TimeS={result.Value.DutStartRecord.GetTimeS()}, VolumeCm={result.Value.DutStartRecord.GetVolumeCm()}");
_logger.Debug($"End Record: TimeS={result.Value.DutStopRecord.GetTimeS()}, VolumeCm={result.Value.DutStopRecord.GetVolumeCm()}"); _logger.Debug($"End Record: TimeS={result.Value.DutStopRecord.GetTimeS()}, VolumeCm={result.Value.DutStopRecord.GetVolumeCm()}");
var sbError = string.Empty; var sbError = string.Empty;
if (ErrorMetersAlarms.ContainsKey(Slot) && ErrorMetersAlarms[Slot].HasFlag(TestBenchRelatedAlarms)) if (ErrorMetersAlarms.ContainsKey(Slot) && ErrorMetersAlarms[Slot].HasFlag(TestBenchRelatedAlarms))
{ {
var MeterAlarms = ErrorMetersAlarms[Slot].GetHashCode(); var MeterAlarms = ErrorMetersAlarms[Slot].GetHashCode();
sbError = $"ErrorCode{MeterAlarms}"; sbError = $"ErrorCode{MeterAlarms}";
} }
if (Chnnl == 0)
{
var results = TestSetupContainer.meterTestResults.First(f => f != null && f.Slot == Slot);
if (results == null)
{
MessageBox.Show("No TestContainer found");
}
else
{
if (results.Results == null)
{
results.Results = new List<Xylem.Common.Hardware.WaterMeter.DataPackages.MeasurementRecords.FlowDeviations>();
}
if (!results.Results.Any(f => f.MeasuredRefFlowQmPerH == result.Value.RefFlowRateCmPh))
{
results.Results.Add(new Xylem.Common.Hardware.WaterMeter.DataPackages.MeasurementRecords.FlowDeviations()
{
MeasuredRefFlowQmPerH = result.Value.RefFlowRateCmPh ?? 0,
RefTimeS = result.Value.RefTimeS ?? 0,
RequierdFlowQmPerH = result.Value.RefFlowRateCmPh ?? 0,
RequierdTimeS = result.Value.RefTimeS ?? 0,
MeasuredDutFlowQmPerH = result.Value.DutFlowRateCmPh ?? 0,
DutTimeS = result.Value.DutTimeS,
});
}
}
}
return new Results(result.Value, sbError); return new Results(result.Value, sbError);
} }
@@ -1617,7 +1673,7 @@ namespace XylemCommonUiLegacyGenCtl
updateCellToInput("Zielwert Justage [%]", baseMeter.Slot, false); updateCellToInput("Zielwert Justage [%]", baseMeter.Slot, false);
updateCell("Zielwert Justage [%]", baseMeter.Slot, (Double)settings.FlowAdjustmentTarget, 2, Color.Beige); updateCell("Zielwert Justage [%]", baseMeter.Slot, (Double)settings.FlowAdjustmentTarget, 2, Color.Beige);
} }
} }
} }
@@ -1697,17 +1753,17 @@ namespace XylemCommonUiLegacyGenCtl
PredictedTs = predictedTs; PredictedTs = predictedTs;
RefError = refError; RefError = refError;
currentMode = Mode.AutoRefresh; currentMode = Mode.AutoRefresh;
//this.RefreshTimer.Interval = 10000; //this.RefreshTimer.Interval = 10000;
//this.RefreshTimer.Tick += new EventHandler(this.RefreshTimer_Tick); //this.RefreshTimer.Tick += new EventHandler(this.RefreshTimer_Tick);
//this.RefreshTimer.Enabled = true; //this.RefreshTimer.Enabled = true;
pgbUpdate.Maximum = 10000; pgbUpdate.Maximum = 10000;
updateLabelCollection(); updateLabelCollection();
ExpertMode(cbxExpert.Checked); ExpertMode(cbxExpert.Checked);
// dgvBatch.Size = new Size(SizeOfMeter, dgvBatch.Size.Height); // dgvBatch.Size = new Size(SizeOfMeter, dgvBatch.Size.Height);
pgbEndTime.Maximum = (Int32)predictedTs; pgbEndTime.Maximum = (Int32)predictedTs;
})); }));
} }
@@ -1776,104 +1832,104 @@ namespace XylemCommonUiLegacyGenCtl
{ {
//if (item is GenesisMeter) //if (item is GenesisMeter)
//{ //{
var settings = TestSetupContainer.meterTestSettings.First(f => f != null && f.Slot == item.Slot); var settings = TestSetupContainer.meterTestSettings.First(f => f != null && f.Slot == item.Slot);
if ((IsAdjustment && !settings.FlowAdjustment) || (!IsAdjustment && !settings.FlowTesting)) if ((IsAdjustment && !settings.FlowAdjustment) || (!IsAdjustment && !settings.FlowTesting))
{
updateCell("Status", item.Slot, "-", Color.Gray);
continue;
}
var _meter = item;
var onlyChnl = _checkAllChannels ? null : (Int32?)0;
var ProcessStatus = item.GetMeasurementState(onlyChnl);
listOfStates.Add(ProcessStatus);
String textState;
var statusColor = Color.Empty;
switch (ProcessStatus)
{
case MeasurementStates.IsCompleted:
textState = "Messung beendet";
statusColor = Color.Green;
break;
case MeasurementStates.IsRunning:
case MeasurementStates.IsWaitingForIntermediateData:
textState = "Messung läuft";
break;
case MeasurementStates.NotStarted:
default:
textState = "nicht gestartet";
break;
case MeasurementStates.IsWaitingForStartData:
case MeasurementStates.IsWaitingForEndData:
textState = "warte auf Daten";
statusColor = Color.Yellow;
break;
}
updateCell("Status", _meter.Slot, textState, statusColor);
Double? testTime = null;
if (IsFlyingStartStop)
{
testTime = RefTestTime;
}
if (ProcessStatus != MeasurementStates.NotStarted)
{
var interResult = new List<MeasurementResults>();
if (ProcessStatus == MeasurementStates.IsRunning || ProcessStatus == MeasurementStates.IsWaitingForIntermediateData)
{ {
updateCell("Status", item.Slot, "-", Color.Gray); if (_checkAllChannels)
continue;
}
var _meter = item;
var onlyChnl = _checkAllChannels ? null : (Int32?)0;
var ProcessStatus = item.GetMeasurementState(onlyChnl);
listOfStates.Add(ProcessStatus);
String textState;
var statusColor = Color.Empty;
switch (ProcessStatus)
{
case MeasurementStates.IsCompleted:
textState = "Messung beendet";
statusColor = Color.Green;
break;
case MeasurementStates.IsRunning:
case MeasurementStates.IsWaitingForIntermediateData:
textState = "Messung läuft";
break;
case MeasurementStates.NotStarted:
default:
textState = "nicht gestartet";
break;
case MeasurementStates.IsWaitingForStartData:
case MeasurementStates.IsWaitingForEndData:
textState = "warte auf Daten";
statusColor = Color.Yellow;
break;
}
updateCell("Status", _meter.Slot, textState, statusColor);
Double? testTime = null;
if (IsFlyingStartStop)
{
testTime = RefTestTime;
}
if (ProcessStatus != MeasurementStates.NotStarted)
{
var interResult = new List<MeasurementResults>();
if (ProcessStatus == MeasurementStates.IsRunning || ProcessStatus == MeasurementStates.IsWaitingForIntermediateData)
{ {
if (_checkAllChannels) interResult = _meter.GetAllMeasurementResults(CurrentRefVolume, testTime, true);
{
interResult = _meter.GetAllMeasurementResults(CurrentRefVolume, testTime, true);
}
else
{
interResult.Add(_meter.GetMainMeasurementResult(CurrentRefVolume, testTime, true));
}
}
else if (ProcessStatus == MeasurementStates.IsCompleted)
{
if (_checkAllChannels)
{
interResult = _meter.GetAllMeasurementResults(CurrentRefVolume, testTime);
}
else
{
interResult.Add(_meter.GetMainMeasurementResult(CurrentRefVolume, testTime));
}
}
if (interResult != null && interResult.Any())
{
foreach (var channelResult in interResult)
{
var prefix = "";
if (channelResult.Channel > 0)
{
prefix = $"Pfad {channelResult.Channel} ";
}
updateCell($"{prefix}Druchfluss [m³/h]", _meter.Slot, channelResult.DutFlowRateCmPh ?? 0, 4);
updateCell($"{prefix}Volumen [m³]", _meter.Slot, Math.Abs(channelResult.DutVolumeCm), 4);
updateCell($"{prefix}Zeit [S]", _meter.Slot, channelResult.DutTimeS);
if (channelResult.DeviationDutToRefPer.HasValue)
{
updateCell($"{prefix}Fehler [%]", _meter.Slot,
channelResult.DeviationDutToRefPer.Value, 2,
getErrorColor(channelResult.DeviationDutToRefPer.Value, _meter.Slot));
} }
else else
{ {
interResult.Add(_meter.GetMainMeasurementResult(CurrentRefVolume, testTime, true)); updateCell($"{prefix}Fehler [%]", _meter.Slot,
} "NaN",
} getErrorColor(100, _meter.Slot));
else if (ProcessStatus == MeasurementStates.IsCompleted)
{
if (_checkAllChannels)
{
interResult = _meter.GetAllMeasurementResults(CurrentRefVolume, testTime);
}
else
{
interResult.Add(_meter.GetMainMeasurementResult(CurrentRefVolume, testTime));
}
}
if (interResult != null && interResult.Any())
{
foreach (var channelResult in interResult)
{
var prefix = "";
if (channelResult.Channel > 0)
{
prefix = $"Pfad {channelResult.Channel} ";
}
updateCell($"{prefix}Druchfluss [m³/h]", _meter.Slot, channelResult.DutFlowRateCmPh ?? 0, 4);
updateCell($"{prefix}Volumen [m³]", _meter.Slot, Math.Abs(channelResult.DutVolumeCm), 4);
updateCell($"{prefix}Zeit [S]", _meter.Slot, channelResult.DutTimeS);
if (channelResult.DeviationDutToRefPer.HasValue)
{
updateCell($"{prefix}Fehler [%]", _meter.Slot,
channelResult.DeviationDutToRefPer.Value, 2,
getErrorColor(channelResult.DeviationDutToRefPer.Value, _meter.Slot));
}
else
{
updateCell($"{prefix}Fehler [%]", _meter.Slot,
"NaN",
getErrorColor(100, _meter.Slot));
}
} }
} }
} }
}
//} //}
} }
catch (Exception e) catch (Exception e)
@@ -1887,9 +1943,9 @@ namespace XylemCommonUiLegacyGenCtl
currentMode = Mode.View; currentMode = Mode.View;
TryInvoke(new Action(() => TryInvoke(new Action(() =>
{ {
//this.RefreshTimer.Enabled = false; //this.RefreshTimer.Enabled = false;
//this.pnlEndTime.Visible = false; //this.pnlEndTime.Visible = false;
})); }));
} }
else else
{ {
@@ -1898,8 +1954,8 @@ namespace XylemCommonUiLegacyGenCtl
TryInvoke(new Action(() => TryInvoke(new Action(() =>
{ {
//this.RefreshTimer.Enabled = true; //this.RefreshTimer.Enabled = true;
})); }));
stopWatch.Start(); stopWatch.Start();
} }
@@ -1947,8 +2003,8 @@ namespace XylemCommonUiLegacyGenCtl
{ {
if (item is GenesisMeter) if (item is GenesisMeter)
{ {
// ((GenesisMeter)item).(); // ((GenesisMeter)item).();
} }
} }
Thread.Sleep(1000); Thread.Sleep(1000);
@@ -2016,8 +2072,8 @@ namespace XylemCommonUiLegacyGenCtl
genesis.ReLogin(); genesis.ReLogin();
genesis.BuildAndCheckCalibFactorsAllChannels(StoreRefVolume, StoreTestTimeRef, calFactor); genesis.BuildAndCheckCalibFactorsAllChannels(StoreRefVolume, StoreTestTimeRef, calFactor);
//genesis.SetCalibFactorsAllChannels(true); //genesis.SetCalibFactorsAllChannels(true);
genesis.SetCalibFactorsAllChannels(); genesis.SetCalibFactorsAllChannels();
return new Tuple<Boolean, Int32>(true, baseMeter.Slot); return new Tuple<Boolean, Int32>(true, baseMeter.Slot);
} }
@@ -2038,8 +2094,8 @@ namespace XylemCommonUiLegacyGenCtl
var t = new Task(() => var t = new Task(() =>
{ {
// ReSharper disable once CoVariantArrayConversion // ReSharper disable once CoVariantArrayConversion
Task.WaitAll(taskList.ToArray()); Task.WaitAll(taskList.ToArray());
Boolean overallResult = true; Boolean overallResult = true;
foreach (var item in taskList) foreach (var item in taskList)
@@ -2268,6 +2324,26 @@ namespace XylemCommonUiLegacyGenCtl
sb.AppendLine($"meterType={item.meterType}"); sb.AppendLine($"meterType={item.meterType}");
} }
_logger.Info($"SetTestSetupContainer ({sb}) "); _logger.Info($"SetTestSetupContainer ({sb}) ");
foreach (var item in container.meterTestResults)
{
if (item == null)
{
continue;
}
sb.AppendLine($"Slot={item.Slot}");
sb.AppendLine($"Sr={item.SerialNr}");
foreach (var flows in item.Results)
{
sb.AppendLine($"MeasuredRefFlowQmPerH={flows.MeasuredRefFlowQmPerH}");
sb.AppendLine($"MeasuredDutFlowQmPerH={flows.MeasuredDutFlowQmPerH}");
}
}
MessageBox.Show(sb.ToString()); MessageBox.Show(sb.ToString());
TestSetupContainer = vbContainer; TestSetupContainer = vbContainer;
_currentState = BatchState.TestContainerIsReady; _currentState = BatchState.TestContainerIsReady;