FM2014: - reset extended

This commit is contained in:
Thomas Wiedebusch 2026-01-12 17:06:54 +01:00
parent 963df837dc
commit 735525c2c2
2 changed files with 39 additions and 10 deletions

View File

@ -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;
}

View File

@ -604,12 +604,24 @@ namespace Sensus.MiniPrf.Ui
#endregion
#region Buttons and Controls
/// <summary>
/// Establish connection to FM2014 with individual address and read out FM2014 info.
/// </summary>
/// <remarks date="2023-Jan-04" author="Thomas Wiedebusch">
/// - Initial.
/// </remarks>
private void btnConnect_Click(Object sender, EventArgs e)
{
_startTime = DateTimeOffset.UtcNow;
Connect();
}
/// <summary>
/// Start and stop the manual REF calibration.
/// </summary>
/// <remarks date="2023-Jan-04..12" author="Thomas Wiedebusch">
/// - Initial.
/// </remarks>
private void btnManualRefCalibration_Click(Object sender, EventArgs e)
{
if (!_fm2014.ReceiveTaskIsActive)
@ -631,6 +643,12 @@ namespace Sensus.MiniPrf.Ui
}
}
/// <summary>
/// Selected COM port item has changed.
/// </summary>
/// <remarks date="2023-Jan-04" author="Thomas Wiedebusch">
/// - Initial.
/// </remarks>
private void cbxFM2014ComPort_SelectedValueChanged(Object sender, EventArgs e)
{
if (_toleranceIdx != cbxFM2014TolerancePercent.SelectedIndex ||
@ -647,18 +665,18 @@ namespace Sensus.MiniPrf.Ui
#region Event handler
/// <summary>
/// Feedback from FM2014.
/// </summary>
/// <remarks date="2023-Jan-04..12" author="Thomas Wiedebusch">
/// - Initial.
/// </remarks>
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
}