diff --git a/Common/Hardware/WaterMeter/MechanicalMeter/FM2014/FM2014Core/FM2014.cs b/Common/Hardware/WaterMeter/MechanicalMeter/FM2014/FM2014Core/FM2014.cs
index 5e25e077..2dd23f72 100644
--- a/Common/Hardware/WaterMeter/MechanicalMeter/FM2014/FM2014Core/FM2014.cs
+++ b/Common/Hardware/WaterMeter/MechanicalMeter/FM2014/FM2014Core/FM2014.cs
@@ -269,7 +269,7 @@ namespace Sensus.Common.Hardware.WaterMeter.MechanicalMeter.FM2014.FM2014Core
if (int.TryParse(refPulseStr, NumberStyles.HexNumber, new CultureInfo("en"), out var refPulses))
{
- var response = new FM2014CmdDef.CmdResponse(FM2014CmdDef.CmdName.CMD_REF_GET_PLS_CTR, "",
+ var response = new FM2014CmdDef.CmdResponse(FM2014CmdDef.CmdName.CMD_REF_GET_PLS_CTR, infoRef,
refPulses);
OnRawRecordReceived?.Invoke(this, new ProcessExecEventArgs(infoRef, specificInfoObj: response));
}
@@ -281,7 +281,7 @@ namespace Sensus.Common.Hardware.WaterMeter.MechanicalMeter.FM2014.FM2014Core
if (int.TryParse(dutPulseStr, NumberStyles.HexNumber, new CultureInfo("en"), out var dutPulses))
{
- var response = new FM2014CmdDef.CmdResponse(FM2014CmdDef.CmdName.CMD_DUT_GET_PLS_CTR, "",
+ var response = new FM2014CmdDef.CmdResponse(FM2014CmdDef.CmdName.CMD_DUT_GET_PLS_CTR, infoDut,
dutPulses);
OnRawRecordReceived?.Invoke(this, new ProcessExecEventArgs(infoDut, specificInfoObj: response));
}
@@ -371,10 +371,21 @@ namespace Sensus.Common.Hardware.WaterMeter.MechanicalMeter.FM2014.FM2014Core
ReceiveTaskIsActive = false;
// Reset measurement
var cmdCode = FM2014CmdDef.GetCmdChar(FM2014CmdDef.CmdName.CMD_RST_MEAS);
+ var infoStr = FM2014CmdDef.GetCmdInfo(FM2014CmdDef.CmdName.CMD_RST_MEAS);
// Read out the serial number of this FM2014
SerialPort?.Write($"{cmdCode}{_eos}");
+
// Wait until FM2014 calibration finished
- Thread.Sleep(4000);
+ var resetDelayCtr_ms = 4000;
+ const Int32 loopTime_ms = 500;
+ do
+ {
+ var response = new FM2014CmdDef.CmdResponse(FM2014CmdDef.CmdName.CMD_RST_MEAS, infoStr,
+ resetDelayCtr_ms);
+ OnRawRecordReceived?.Invoke(this, new ProcessExecEventArgs(infoStr, specificInfoObj: response));
+ Thread.Sleep(loopTime_ms);
+ resetDelayCtr_ms -= loopTime_ms;
+ } while (resetDelayCtr_ms > 0);
return true;
}
diff --git a/MiniPrf/Ui/FrmMainMiniPrf.cs b/MiniPrf/Ui/FrmMainMiniPrf.cs
index 5e552b3f..ff9d9341 100644
--- a/MiniPrf/Ui/FrmMainMiniPrf.cs
+++ b/MiniPrf/Ui/FrmMainMiniPrf.cs
@@ -604,12 +604,24 @@ namespace Sensus.MiniPrf.Ui
#endregion
#region Buttons and Controls
+ ///
+ /// Establish connection to FM2014 with individual address and read out FM2014 info.
+ ///
+ ///
+ /// - Initial.
+ ///
private void btnConnect_Click(Object sender, EventArgs e)
{
_startTime = DateTimeOffset.UtcNow;
Connect();
}
+ ///
+ /// Start and stop the manual REF calibration.
+ ///
+ ///
+ /// - Initial.
+ ///
private void btnManualRefCalibration_Click(Object sender, EventArgs e)
{
if (!_fm2014.ReceiveTaskIsActive)
@@ -631,6 +643,12 @@ namespace Sensus.MiniPrf.Ui
}
}
+ ///
+ /// Selected COM port item has changed.
+ ///
+ ///
+ /// - Initial.
+ ///
private void cbxFM2014ComPort_SelectedValueChanged(Object sender, EventArgs e)
{
if (_toleranceIdx != cbxFM2014TolerancePercent.SelectedIndex ||
@@ -647,18 +665,18 @@ namespace Sensus.MiniPrf.Ui
#region Event handler
+ ///
+ /// Feedback from FM2014.
+ ///
+ ///
+ /// - Initial.
+ ///
private void DataReceived_Handler(Object sender, ProcessExecEventArgs e)
{
var resp = (FM2014CmdDef.CmdResponse)e.SpecificInfoObj;
if (resp.IntValue != null)
- LogText(resp.IntValue.ToString());
-
- // Return to standby
- if (!_fm2014.ReceiveTaskIsActive)
- {
- ActionControl(false);
- }
+ LogText($"{resp.AnswerStr}: {resp.IntValue:D}");
}
#endregion
}