diff --git a/Common/Hardware/WaterMeter/MechanicalMeter/FM2014/FM2014Core/FM2014.cs b/Common/Hardware/WaterMeter/MechanicalMeter/FM2014/FM2014Core/FM2014.cs
index e8df3d4b..05260ebb 100644
--- a/Common/Hardware/WaterMeter/MechanicalMeter/FM2014/FM2014Core/FM2014.cs
+++ b/Common/Hardware/WaterMeter/MechanicalMeter/FM2014/FM2014Core/FM2014.cs
@@ -148,7 +148,7 @@ namespace Sensus.Common.Hardware.WaterMeter.MechanicalMeter.FM2014.FM2014Core
///
/// FM2014 minimal pulses for REF and DUT time measurement.
///
- public const UInt16 PULSES_TIME_MEASUREMENT_INPUT_MIN = 1;
+ public const UInt16 PULSES_TIME_MEASUREMENT_INPUT_MIN = 0;
///
/// FM2014 maximal pulses for REF and DUT time measurement.
diff --git a/FM2014TestApp/Ui/Fm2014sTest/FM2014TestBenchWindow.xaml b/FM2014TestApp/Ui/Fm2014sTest/FM2014TestBenchWindow.xaml
index d2ee94dd..93ce931b 100644
--- a/FM2014TestApp/Ui/Fm2014sTest/FM2014TestBenchWindow.xaml
+++ b/FM2014TestApp/Ui/Fm2014sTest/FM2014TestBenchWindow.xaml
@@ -14,17 +14,14 @@
@@ -382,17 +379,20 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -436,13 +436,13 @@
-
-
+
+
-
+
diff --git a/FM2014TestApp/Ui/Fm2014sTest/FM2014TestBenchWindow.xaml.cs b/FM2014TestApp/Ui/Fm2014sTest/FM2014TestBenchWindow.xaml.cs
index cedfa405..719b7e55 100644
--- a/FM2014TestApp/Ui/Fm2014sTest/FM2014TestBenchWindow.xaml.cs
+++ b/FM2014TestApp/Ui/Fm2014sTest/FM2014TestBenchWindow.xaml.cs
@@ -585,11 +585,11 @@ namespace Sensus.Ui.FM2014TestBench
tabRefToScaleCalibration.Header = Properties.Resources.StrGbxManualRefCalibration;
// Menu setup
- hlpMenu.Header = Properties.Resources.StrLblHelp;
- optMenu.Header = Properties.Resources.StrLblOptions;
- optMenuLogin.Header = Properties.Resources.StrLblOptionsLogin;
- optMenuLogout.Header = Properties.Resources.StrLblOptionsLogout;
- optMenuChangePassword.Header = Properties.Resources.StrLblOptionsChangePassword;
+ //hlpMenu.Header = Properties.Resources.StrLblHelp;
+ //optMenu.Header = Properties.Resources.StrLblOptions;
+ //optMenuLogin.Header = Properties.Resources.StrLblOptionsLogin;
+ //optMenuLogout.Header = Properties.Resources.StrLblOptionsLogout;
+ //optMenuChangePassword.Header = Properties.Resources.StrLblOptionsChangePassword;
portMenu.Content = Properties.Resources.StrLblComPort;
// Static labels for all devices
@@ -597,7 +597,7 @@ namespace Sensus.Ui.FM2014TestBench
lblLifeTimeText.Content = Properties.Resources.StrLblLifetime;
lblSlotSelection.Content = Properties.Resources.StrLblSlotSelection;
- // DUT to REF Regulation Setup
+ // DUT to REF Regulation
lblRefPulsesPerCm.Content = Properties.Resources.StrLblRefPulsesPerCmRatio;
lblDutPulsesPerCm.Content = Properties.Resources.StrLblDutPulsesPerCmRatio;
lblScaleRefToDut.Content = Properties.Resources.StrLblRefToDutScale;
@@ -610,18 +610,24 @@ namespace Sensus.Ui.FM2014TestBench
chkUseDampedTolerance.Content = Properties.Resources.StrChkUseDampedTolerance;
btnDutToRefRegulation.Content = Properties.Resources.StrBtnStartRegulation;
- // DUT to REF Calibration
+ // Time measurement / DUT to REF Calibration
+ rbtRefTimeMeasurement.Content = Properties.Resources.StrSelectRefTimeMeasurement;
+ rbtDutTimeMeasurement.Content = Properties.Resources.StrSelectDutTimeMeasurement;
+ rbtDutToRefCalibration.Content = Properties.Resources.StrSelectDutToRefCalibration;
+ rbtDutToRefCalibration.IsChecked = true;
lblRefPulsesRequired.Content = Properties.Resources.StrLblRefPulsesRequired;
lblDutPulsesRequired.Content = Properties.Resources.StrLblDutPulsesRequired;
lblDoublePulseDeadtime.Content = Properties.Resources.StrLblDoublePulseDeadTime;
lblDutToRefTolMax.Content = Properties.Resources.StrLblDutToRefToleranceMax;
lblDutToRefTolMin.Content = Properties.Resources.StrLblDutToRefToleranceMin;
- // Manual REF to Volume Calibration
- lblRefPulsesMeasured.Content = Properties.Resources.StrLblRefPulsesMeasured;
+ // Pulse counter measurement / Manual REF to Volume Calibration
+ chkRefPulsesMeasured.Content = Properties.Resources.StrLblRefPulsesMeasured;
+ chkRefPulsesMeasured.IsChecked = true;
tbxRefPulsesMeasured.Text = "";
tbxRefPulsesMeasured.IsReadOnly = true;
chkDutPulsesMeasured.Content = Properties.Resources.StrLblDutPulsesMeasured;
+ chkDutPulsesMeasured.IsChecked = false;
tbxDutPulsesMeasured.Text = "";
tbxDutPulsesMeasured.IsReadOnly = true;
lblVolumeMeasuredLiters.Content = Properties.Resources.StrLblVolumeMeasured;
@@ -1039,26 +1045,38 @@ namespace Sensus.Ui.FM2014TestBench
tbxRefPulsesPerCm.IsReadOnly = true;
tbxDutPulsesPerCm.IsReadOnly = true;
});
+
+ // Program settings
+ UiElmEnable(cbxToleranceDisplayRange, false);
+ UiElmEnable(cbxProgramComPort, false);
+ foreach (var slotSelector in SlotSelections)
+ {
+ UiElmEnable(slotSelector, false);
+ }
+
+ // Time measurement / DUT to REF calibration
UiElmEnable(tbxRefPulsesRequired, false);
UiElmEnable(tbxDutPulsesRequired, false);
UiElmEnable(tbxDoublePulseDeadtime, false);
UiElmEnable(tbxDutToRefTolMax, false);
UiElmEnable(tbxDutToRefTolMin, false);
+ UiElmEnable(rbtDutToRefCalibration, false);
+ UiElmEnable(rbtRefTimeMeasurement, false);
+ UiElmEnable(rbtDutTimeMeasurement, false);
+
+ // Regulation measurement
UiElmEnable(tbxRefPulsesPerCm, false);
UiElmEnable(tbxDutPulsesPerCm, false);
UiElmEnable(tbxScaleRefToDut, false); // Is permanent read only
UiElmEnable(cbxToleranceDisplayAttenuation, false);
- UiElmEnable(cbxToleranceDisplayRange, false);
- UiElmEnable(cbxProgramComPort, false);
+
+ // Pulse counter measurement / manual REF to Volume calibration
UiElmEnable(tbxRefPulsesMeasured, false); // Is permanent read only
- UiElmEnable(chkDutPulsesMeasured, false);
UiElmEnable(tbxDutPulsesMeasured, false); // Is permanent read only
+ UiElmEnable(chkRefPulsesMeasured, false);
+ UiElmEnable(chkDutPulsesMeasured, false);
UiElmEnable(tbxVolumeMeasuredLiters, false);
UiElmEnable(tbxRefPulsesPerCmCalib, false); // Is permanent read only
- foreach (var slotSelector in SlotSelections)
- {
- UiElmEnable(slotSelector, false);
- }
}
///
@@ -1079,9 +1097,12 @@ namespace Sensus.Ui.FM2014TestBench
UpdateContentControl(btnDutToRefRegulation, Properties.Resources.StrBtnStartRegulation);
var dutPulseMeasurementIsActive = false;
+ var refPulseMeasurementIsActive = true;
// Enable manual input
Dispatcher.Invoke(() =>
{
+ if (chkRefPulsesMeasured.IsChecked != null)
+ refPulseMeasurementIsActive = (Boolean)chkRefPulsesMeasured.IsChecked;
if (chkDutPulsesMeasured.IsChecked != null)
dutPulseMeasurementIsActive = (Boolean)chkDutPulsesMeasured.IsChecked;
tbxVolumeMeasuredLiters.IsReadOnly = false;
@@ -1089,28 +1110,37 @@ namespace Sensus.Ui.FM2014TestBench
tbxDutPulsesPerCm.IsReadOnly = false;
});
- //// Enable setting selections
+ // Program settings
+ UiElmEnable(cbxToleranceDisplayRange, true);
+ UiElmEnable(cbxProgramComPort, true);
+ foreach (var slotSelector in SlotSelections)
+ {
+ UiElmEnable(slotSelector, true);
+ }
+
+ // Time measurement / DUT to REF calibration
UiElmEnable(tbxRefPulsesRequired, true);
UiElmEnable(tbxDutPulsesRequired, true);
UiElmEnable(tbxDoublePulseDeadtime, true);
UiElmEnable(tbxDutToRefTolMax, true);
UiElmEnable(tbxDutToRefTolMin, true);
+ UiElmEnable(rbtDutToRefCalibration, true);
+ UiElmEnable(rbtRefTimeMeasurement, true);
+ UiElmEnable(rbtDutTimeMeasurement, true);
+
+ // Regulation measurement
UiElmEnable(tbxRefPulsesPerCm, true);
UiElmEnable(tbxDutPulsesPerCm, true);
UiElmEnable(tbxScaleRefToDut, true); // Is permanent read only
UiElmEnable(cbxToleranceDisplayAttenuation, true);
- UiElmEnable(cbxToleranceDisplayRange, true);
- UiElmEnable(cbxProgramComPort, true);
- UiElmEnable(tbxRefPulsesMeasured, true); // Is permanent read only
+
+ // Pulse counter measurement / manual REF to Volume calibration
+ UiElmEnable(chkRefPulsesMeasured, true);
UiElmEnable(chkDutPulsesMeasured, true);
+ UiElmEnable(tbxRefPulsesMeasured, refPulseMeasurementIsActive); // Is permanent read only
UiElmEnable(tbxDutPulsesMeasured, dutPulseMeasurementIsActive); // Is permanent read only
UiElmEnable(tbxVolumeMeasuredLiters, true);
UiElmEnable(tbxRefPulsesPerCmCalib, true); // Is permanent read only
-
- foreach (var slotSelector in SlotSelections)
- {
- UiElmEnable(slotSelector, true);
- }
}
#endregion ---------------------------------------- ActivationControls ----------------------------------------
@@ -1325,14 +1355,50 @@ namespace Sensus.Ui.FM2014TestBench
foreach (var measLbl in MeasurementLabels)
UiElmEnable(measLbl, false, false);
+ UInt16? refPulsesRequired = null;
+ UInt16? dutPulsesRequired = null;
+
+ Dispatcher.Invoke(() =>
+ {
+ if ((rbtDutToRefCalibration.IsChecked != null && (Boolean)rbtDutToRefCalibration.IsChecked) ||
+ (rbtRefTimeMeasurement.IsChecked != null && (Boolean)rbtRefTimeMeasurement.IsChecked))
+ {
+ refPulsesRequired = (UInt16)_fm2014Common.RefPulsesRequired;
+ }
+
+ if ((rbtDutToRefCalibration.IsChecked != null && (Boolean)rbtDutToRefCalibration.IsChecked) ||
+ (rbtDutTimeMeasurement.IsChecked != null && (Boolean)rbtDutTimeMeasurement.IsChecked))
+ {
+ dutPulsesRequired = (UInt16)_fm2014Common.DutPulsesRequired;
+ }
+ });
+
// Set the measurement labels
- UpdateContentControl(MeasurementLabels[CAL_LBL_IDX_REF_REQ_PLS], Properties.Resources.StrLblRefPulsesRequired);
- UpdateContentControl(MeasurementLabels[CAL_LBL_IDX_REF_RMN_PLS], Properties.Resources.StrLblRefPulsesRemaining);
- UpdateContentControl(MeasurementLabels[CAL_LBL_IDX_DUT_REQ_PLS], Properties.Resources.StrLblDutPulsesRequired);
- UpdateContentControl(MeasurementLabels[CAL_LBL_IDX_DUT_RMN_PLS], Properties.Resources.StrLblDutPulsesRemaining);
- UpdateContentControl(MeasurementLabels[CAL_LBL_IDX_REF_MEAS_TMR], Properties.Resources.StrLblRefTimeMeasured);
- UpdateContentControl(MeasurementLabels[CAL_LBL_IDX_DUT_MEAS_TMR], Properties.Resources.StrLblDutTimeMeasured);
- UpdateContentControl(MeasurementLabels[CAL_LBL_IDX_DUT_TO_REF_TOL], Properties.Resources.StrLblDutToRefToleranceMeasured);
+ if (refPulsesRequired != null)
+ {
+ UpdateContentControl(MeasurementLabels[CAL_LBL_IDX_REF_REQ_PLS],
+ Properties.Resources.StrLblRefPulsesRequired);
+ UpdateContentControl(MeasurementLabels[CAL_LBL_IDX_REF_RMN_PLS],
+ Properties.Resources.StrLblRefPulsesRemaining);
+ UpdateContentControl(MeasurementLabels[CAL_LBL_IDX_REF_MEAS_TMR], Properties.Resources.StrLblRefTimeMeasured);
+ }
+
+ if (dutPulsesRequired != null)
+ {
+ UpdateContentControl(MeasurementLabels[CAL_LBL_IDX_DUT_REQ_PLS],
+ Properties.Resources.StrLblDutPulsesRequired);
+ UpdateContentControl(MeasurementLabels[CAL_LBL_IDX_DUT_RMN_PLS],
+ Properties.Resources.StrLblDutPulsesRemaining);
+ UpdateContentControl(MeasurementLabels[CAL_LBL_IDX_DUT_MEAS_TMR], Properties.Resources.StrLblDutTimeMeasured);
+ }
+
+ if (refPulsesRequired != null && dutPulsesRequired != null)
+ {
+
+ UpdateContentControl(MeasurementLabels[CAL_LBL_IDX_DUT_TO_REF_TOL],
+ Properties.Resources.StrLblDutToRefToleranceMeasured);
+ }
+
UiElmEnable(MeasurementLabels[CAL_LBL_IDX_REF_REQ_PLS], true);
UiElmEnable(MeasurementLabels[CAL_LBL_IDX_REF_RMN_PLS], true);
UiElmEnable(MeasurementLabels[CAL_LBL_IDX_DUT_REQ_PLS], true);
@@ -1352,8 +1418,10 @@ namespace Sensus.Ui.FM2014TestBench
ucFM2014.EnableMeasurements(CAL_MEASURE_COUNT);
// Set initial required pulses as those are static upon the entire measurement
- ucFM2014.SetValue(CAL_LBL_IDX_REF_REQ_PLS, $"{_fm2014Common.RefPulsesRequired:D}");
- ucFM2014.SetValue(CAL_LBL_IDX_DUT_REQ_PLS, $"{_fm2014Common.DutPulsesRequired:D}");
+ if (refPulsesRequired != null)
+ ucFM2014.SetValue(CAL_LBL_IDX_REF_REQ_PLS, $"{_fm2014Common.RefPulsesRequired:D}");
+ if (dutPulsesRequired != null)
+ ucFM2014.SetValue(CAL_LBL_IDX_DUT_REQ_PLS, $"{_fm2014Common.DutPulsesRequired:D}");
// Set thresholds for tolerance verification
fm2014.DutToRefCalibrationToleranceMax_percent = _fm2014Common.DutToRefCalibrationToleranceMax_percent;
@@ -1364,9 +1432,7 @@ namespace Sensus.Ui.FM2014TestBench
if (_programConfigurationSetupHasChanged)
StoreProgramConfiguration();
- if (FM2014.PulseTimeMeasurement((UInt16)_fm2014Common.RefPulsesRequired,
- (UInt16)_fm2014Common.DutPulsesRequired,
- _fm2014Common.DoublePulseDeadtime_ms))
+ if (FM2014.PulseTimeMeasurement(refPulsesRequired, dutPulsesRequired, _fm2014Common.DoublePulseDeadtime_ms))
{
_autoProgressBar = false;
ActionControl(true);
@@ -1442,7 +1508,7 @@ namespace Sensus.Ui.FM2014TestBench
///
/// Start and stop the manual REF calibration measurement.
///
- ///
+ ///
/// - Initial.
///
private void btnRefToVolumeCalibration_Click(Object sender, EventArgs e)
@@ -1469,7 +1535,12 @@ namespace Sensus.Ui.FM2014TestBench
return;
var measureDutPulses = false;
- Dispatcher.Invoke(() => measureDutPulses = chkDutPulsesMeasured.IsChecked ?? false);
+ var measureRefPulses = false;
+ Dispatcher.Invoke(() =>
+ {
+ measureDutPulses = chkDutPulsesMeasured.IsChecked ?? false;
+ measureRefPulses = chkRefPulsesMeasured.IsChecked ?? false;
+ });
// Adjust the user control
foreach (var fm2014 in FM2014.RegisteredFm2014s.Where(x => x.IsLoggedOn))
@@ -1483,7 +1554,7 @@ namespace Sensus.Ui.FM2014TestBench
if (_programConfigurationSetupHasChanged || _programConfigurationSetupHasChanged)
StoreProgramConfiguration();
- if (FM2014.PulseCounterMeasurement(true, measureDutPulses))
+ if (FM2014.PulseCounterMeasurement(measureRefPulses, measureDutPulses))
{
_autoProgressBar = true;
ActionControl(true);
@@ -1641,6 +1712,22 @@ namespace Sensus.Ui.FM2014TestBench
}));
}
+ ///
+ /// Enable/Disable input
+ ///
+ ///
+ ///
+ private void chkRefPulseMeasurement_CheckChanged(Object sender, EventArgs e)
+ {
+ Dispatcher.Invoke(() =>
+ {
+ var isChecked = false;
+ if (chkRefPulsesMeasured.IsChecked != null)
+ isChecked = (Boolean)chkRefPulsesMeasured.IsChecked;
+ UiElmEnable(tbxRefPulsesMeasured, isChecked);
+ });
+ }
+
///
/// Enable/Disable input
///
diff --git a/FM2014TestApp/Ui/Fm2014sTest/Properties/Resources.Designer.cs b/FM2014TestApp/Ui/Fm2014sTest/Properties/Resources.Designer.cs
index 66bc0836..8145e4c8 100644
--- a/FM2014TestApp/Ui/Fm2014sTest/Properties/Resources.Designer.cs
+++ b/FM2014TestApp/Ui/Fm2014sTest/Properties/Resources.Designer.cs
@@ -178,7 +178,7 @@ namespace Sensus.Ui.Fm2014TestBench.Properties {
}
///
- /// Looks up a localized string similar to DUT to REF Calibration.
+ /// Looks up a localized string similar to DUT to REF Calibration/Tome Measurement.
///
internal static string StrGbxDutToRefCalibration {
get {
@@ -196,7 +196,7 @@ namespace Sensus.Ui.Fm2014TestBench.Properties {
}
///
- /// Looks up a localized string similar to REF to Volume Calibration.
+ /// Looks up a localized string similar to REF to Volume Calibration / Pulse Counter.
///
internal static string StrGbxManualRefCalibration {
get {
@@ -563,5 +563,32 @@ namespace Sensus.Ui.Fm2014TestBench.Properties {
return ResourceManager.GetString("StrMsgPcDateTime", resourceCulture);
}
}
+
+ ///
+ /// Looks up a localized string similar to DUT Pulse Time Measurement.
+ ///
+ internal static string StrSelectDutTimeMeasurement {
+ get {
+ return ResourceManager.GetString("StrSelectDutTimeMeasurement", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to DUT to REF Calibration.
+ ///
+ internal static string StrSelectDutToRefCalibration {
+ get {
+ return ResourceManager.GetString("StrSelectDutToRefCalibration", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to REF Time Measurement.
+ ///
+ internal static string StrSelectRefTimeMeasurement {
+ get {
+ return ResourceManager.GetString("StrSelectRefTimeMeasurement", resourceCulture);
+ }
+ }
}
}
diff --git a/FM2014TestApp/Ui/Fm2014sTest/Properties/Resources.de.resx b/FM2014TestApp/Ui/Fm2014sTest/Properties/Resources.de.resx
index b418c374..4d2fa37c 100644
--- a/FM2014TestApp/Ui/Fm2014sTest/Properties/Resources.de.resx
+++ b/FM2014TestApp/Ui/Fm2014sTest/Properties/Resources.de.resx
@@ -187,7 +187,7 @@
In FM2014 speichern
- REF zu Volumen Kalibrierung
+ REF zu Volumen Kalibrierung / Impulszähler
REF Erfaßte Imulse:
@@ -226,7 +226,7 @@
DUT Erfaßte Impulse:
- DUT zu REF Kalibrierung
+ DUT zu REF Kalibrierung / Zeitmessung
_Optionen
@@ -285,4 +285,13 @@
Anwenden
+
+ DUT zu REF Kalibrierung
+
+
+ REF Impulszeitmessung
+
+
+ DUT Impulszeitmessung
+
\ No newline at end of file
diff --git a/FM2014TestApp/Ui/Fm2014sTest/Properties/Resources.resx b/FM2014TestApp/Ui/Fm2014sTest/Properties/Resources.resx
index d3dc3404..ea4de883 100644
--- a/FM2014TestApp/Ui/Fm2014sTest/Properties/Resources.resx
+++ b/FM2014TestApp/Ui/Fm2014sTest/Properties/Resources.resx
@@ -187,7 +187,7 @@
Save to FM2014
- REF to Volume Calibration
+ REF to Volume Calibration / Pulse Counter
REF Captured Pulses:
@@ -226,7 +226,7 @@
DUT Captured Pulses:
- DUT to REF Calibration
+ DUT to REF Calibration/Tome Measurement
_Options
@@ -285,4 +285,13 @@
Use Settings
+
+ DUT to REF Calibration
+
+
+ REF Time Measurement
+
+
+ DUT Pulse Time Measurement
+
\ No newline at end of file