Common\..\RegisterRestorer: - multiple reading of final registers

This commit is contained in:
Thomas Wiedebusch
2023-11-30 14:13:36 +01:00
parent 26f5e5cf66
commit 02f1eadf3e
@@ -510,7 +510,8 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
}
finally
{
var actualProcessMsg = $"{Resources.StrRegisterCompare}: {strRequiredRegisterValue} ";
var actualProcessMsg = string.IsNullOrEmpty(strRequiredRegisterValue) ? "":
$"{Resources.StrRegisterCompare}: {strRequiredRegisterValue} ";
OnProcessUpdate?.Invoke(this, new ProcessExecEventArgs($@"{Resources.StrRegisterCompare}" +
$@" {ActualRegisterCtr} / {registersCount}",
@@ -549,16 +550,15 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
/// <remarks date="2023-Nov-21" author="Thomas Wiedebusch">
/// - Return false if PcbId between initial- and final-read does NOT match return false.
/// </remarks>
/// <remarks date="2023-Nov-30" author="Thomas Wiedebusch">
/// - Allow final read out as often as called even if done before.
/// </remarks>
public Boolean FinalReadRegisters()
{
if (_currentGenesis == null)
return false;
// deny update of registers if already done
if (_pcbIdFinalRegisterRead == _currentGenesis.PcbId)
return true;
_pcbIdFinalRegisterRead = _currentGenesis.PcbId;
_pcbIdFinalRegisterRead = _currentGenesis.PcbId;
// clear the contents of the restore registers if the water meter backed up was not identical
if (_pcbIdInitialRegisterRead != _pcbIdFinalRegisterRead)
{