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 }