diff --git a/Common/Hardware/WaterMeter/MechanicalMeter/FM2014/FM2014Core/FM2014.cs b/Common/Hardware/WaterMeter/MechanicalMeter/FM2014/FM2014Core/FM2014.cs index 78e71fa9..df224b43 100644 --- a/Common/Hardware/WaterMeter/MechanicalMeter/FM2014/FM2014Core/FM2014.cs +++ b/Common/Hardware/WaterMeter/MechanicalMeter/FM2014/FM2014Core/FM2014.cs @@ -814,6 +814,7 @@ namespace Sensus.Common.Hardware.WaterMeter.MechanicalMeter.FM2014.FM2014Core DisableWriteReadActualProcessIncreasing = disableWriteReadIncrease; MaxActualProcessProgress = 1; ActualProcessProgress = 0; + ActualProcessProgress_percent = null; if (maxInitProcesses != null) { @@ -1363,6 +1364,7 @@ namespace Sensus.Common.Hardware.WaterMeter.MechanicalMeter.FM2014.FM2014Core fm2014.ErrorIsDetected = false; } + var cmdName = CmdName.CMD_NA; MeasurementInfo = Resources.StrMeasMsgCalibration; @@ -1372,7 +1374,6 @@ namespace Sensus.Common.Hardware.WaterMeter.MechanicalMeter.FM2014.FM2014Core // Check if double pulse deadtime has been set or si switched off if (DOUBLE_PULSE_DEADTIME_MIN_ms == firstActiveFm2014.DoublePulseDeadtime_ms) { - InitActualProcessProgress(3, broadcast: true); // This is a command without parameter cmdName = CmdName.CMD_SET_DBPL_UNLOCK; if (!Write(cmdName, firstActiveFm2014)) @@ -1382,7 +1383,6 @@ namespace Sensus.Common.Hardware.WaterMeter.MechanicalMeter.FM2014.FM2014Core } else { - InitActualProcessProgress(4, broadcast: true); cmdName = CmdName.CMD_SET_DPLS_LOCK_TMR; if (!Write(cmdName, firstActiveFm2014, firstActiveFm2014.DoublePulseBaseDeadTime_ms)) { @@ -1458,9 +1458,6 @@ namespace Sensus.Common.Hardware.WaterMeter.MechanicalMeter.FM2014.FM2014Core // Read the remaining REF pulses if required if (fm2014.RefPulsesRequired != 0) { - // Feed the progress counter - ActualProcessProgress = (Int32)firstActiveFm2014.RefPulsesRequired - - firstActiveFm2014.RefPulsesRemaining; cmdName = CmdName.CMD_REF_GET_PLS_RMN; info = GetCmdInfo(cmdName); if (SharedCyclicMeasSequ != CyclicMeasSequ.IDLE && Write(cmdName, fm2014)) @@ -1483,6 +1480,12 @@ namespace Sensus.Common.Hardware.WaterMeter.MechanicalMeter.FM2014.FM2014Core var response = new CmdResponse(cmdName, info, pulses); ResponseEvent(fm2014, response, statusReturn); + + // Feed the progress counter but only if not done for DUT pulses as with the first + // DUT pulse the RefPulsesRemaining will be reset to the initial value + if (firstActiveFm2014.DutPulsesRequired == 0) + ActualProcessProgress = (Int32)firstActiveFm2014.RefPulsesRequired - + firstActiveFm2014.RefPulsesRemaining; } } } @@ -1490,10 +1493,6 @@ namespace Sensus.Common.Hardware.WaterMeter.MechanicalMeter.FM2014.FM2014Core // Read the remaining DUT pulses if required if (fm2014.DutPulsesRequired != 0) { - // Feed the progress counter but only if not done for REF pulses - if (firstActiveFm2014.RefPulsesRequired == 0) - ActualProcessProgress = (Int32)firstActiveFm2014.DutPulsesRequired - - firstActiveFm2014.DutPulsesRemaining; cmdName = CmdName.CMD_DUT_GET_PLS_RMN; info = GetCmdInfo(cmdName); if (SharedCyclicMeasSequ != CyclicMeasSequ.IDLE && Write(cmdName, fm2014)) @@ -1516,6 +1515,10 @@ namespace Sensus.Common.Hardware.WaterMeter.MechanicalMeter.FM2014.FM2014Core var response = new CmdResponse(cmdName, info, pulses); ResponseEvent(fm2014, response, statusReturn); + + // Feed the progress counter + ActualProcessProgress = (Int32)firstActiveFm2014.DutPulsesRequired - + firstActiveFm2014.DutPulsesRemaining; } } } @@ -1830,7 +1833,7 @@ namespace Sensus.Common.Hardware.WaterMeter.MechanicalMeter.FM2014.FM2014Core var statusReturn = retVal ? StatusReturn.Okay : StatusReturn.Failed; ResponseEvent(fm2014, response, statusReturn); - + return retVal; } @@ -2103,7 +2106,7 @@ namespace Sensus.Common.Hardware.WaterMeter.MechanicalMeter.FM2014.FM2014Core { var strCleaned = Regex.Replace(str, "[^0-9]", string.Empty); if (byte.TryParse(strCleaned, out var attenuation) && - attenuation >= CURRENT_OUTPUT_ATTENUATION_MIN && + attenuation >= CURRENT_OUTPUT_ATTENUATION_MIN && attenuation <= CURRENT_OUTPUT_ATTENUATION_MAX) { cmdName = CmdName.CMD_MEAS_SET_ATTN; diff --git a/FM2014TestApp/Ui/Fm2014sTest/FM2014TestBenchWindow.xaml.cs b/FM2014TestApp/Ui/Fm2014sTest/FM2014TestBenchWindow.xaml.cs index 8e93b3e4..734e3b17 100644 --- a/FM2014TestApp/Ui/Fm2014sTest/FM2014TestBenchWindow.xaml.cs +++ b/FM2014TestApp/Ui/Fm2014sTest/FM2014TestBenchWindow.xaml.cs @@ -759,7 +759,7 @@ namespace Sensus.Ui.FM2014TestBench /// /// Common method to (de-)activate controls and timer. /// - /// + /// /// - Initial. /// private void ActionControl(Boolean isActive) @@ -771,7 +771,7 @@ namespace Sensus.Ui.FM2014TestBench //UiElmEnable(lblTotalProcessText, true); //UiElmEnable(lblActualProcessLabel, true); //UiElmEnable(lblTotalProcessLabel, true); - UiElmEnable(lblActualProgressPercent, true); + UiElmEnable(lblActualProgressPercent, !_autoProgressBar, !_autoProgressBar); //UiElmEnable(lblTotalProgressPercent, true); UiElmEnable(pbActualProgress, true); //UiElmEnable(pbTotalProgress, true); @@ -1076,7 +1076,7 @@ namespace Sensus.Ui.FM2014TestBench /// /// Feedback from FM2014being parsed to GUI /// - /// + /// /// - Initial. /// private void DataReceived_Handler(Object sender, ProcessExecEventArgs e) @@ -1105,7 +1105,10 @@ namespace Sensus.Ui.FM2014TestBench UpdateProgressBar(pbActualProgress, (Double)e.ActualProcessPercent); } - Dispatcher.Invoke(() => lblActualProgressPercent.Content = $@"{pbActualProgress.Value:##0.0} %"); + // A circulating process bar will be used to observe an activity, but as it restarts at the beginning + // after reaching the end, a value isn't of importance + if (!_autoProgressBar) + Dispatcher.Invoke(() => lblActualProgressPercent.Content = $@"{pbActualProgress.Value:##0.0} %"); SetTimeDisplay(); @@ -1165,6 +1168,7 @@ namespace Sensus.Ui.FM2014TestBench case CmdName.CMD_RST_MEAS: // Immediately lock all buttons and input fields until reset is finished SetFM2014AccessLocked(); + UiElmEnable(lblActualProgressPercent, true); // Check countdown of reset method if (resp.IntValue == 0) ActionControl(false); @@ -1342,7 +1346,7 @@ namespace Sensus.Ui.FM2014TestBench // Backup if meanwhile anything has changed if (_configSetupHasChanged || _calibrationSetupHasChanged) StoreFM2014SettingsToConfigFile(); - + _autoProgressBar = false; ActionControl(true); UpdateContentControl(btnDutToRefCalibration, Properties.Resources.StrBtnStopCalibration); @@ -1492,8 +1496,6 @@ namespace Sensus.Ui.FM2014TestBench var idx = fm2014.Address - 1; var ucFM2014 = (UcFM2014Device)UcFM2014s[idx]; ucFM2014.EnableMeasurements(CTR_MEASURE_COUNT); - //fm2014.RefPulseCtrOn = true; - //fm2014.DutPulseCtrOn = measureDutPulses; } if (FM2014.PulseCounterMeasurement(true, measureDutPulses)) @@ -2353,7 +2355,7 @@ namespace Sensus.Ui.FM2014TestBench { fm2014.DutPulses_per_cm = (UInt16)pulses_per_cm; } - + if (!UpdateRefToDutScale()) { tbxDutPulsesPerCm.Background = ColorProcessFailed;