bugFix - Morrisville - SerialNr, WMBegginValue

Add support for `ICommonRegReader` interface, enhance `ISmartReader` functionality, and update water meter state handling logic across multiple classes.
This commit is contained in:
Michal Buzik 2025-11-21 14:14:23 +01:00
parent 3a2fc50fec
commit 06a401a1ff
11 changed files with 90 additions and 31 deletions

View File

@ -134,12 +134,8 @@ namespace TBF.Rig.DataEntry.PoseidonCmd
PoseidonReader poseidonReader = (reader as PoseidonReader);
if (waterMeters.Count > iterator)
{
if(string.IsNullOrEmpty(poseidonReader.SerialNr))
if(!string.IsNullOrEmpty(poseidonReader.SerialNr))
waterMeters[iterator].SerialNr = poseidonReader.SerialNr;
else
{
waterMeters[iterator].SerialNr = "*";
}
}
}

View File

@ -506,15 +506,9 @@ namespace TBF.Rig.RegisterReaders.IPerlReader.implementations
get { return wmVolume; }
}
public double BeginWMState
{
get { return beginWMState; }
}
public double BeginWMState { get { return beginWMState; } set { beginWMState = value; } }
public double EndWMState
{
get { return endWMState; }
}
public double EndWMState { get { return endWMState; } set { endWMState = value; } }
public IOperation ReadDatastreamOp()
{

View File

@ -17,10 +17,11 @@ using TBF.Rig.Generic;
using TBF.Rig.GenericDevices;
using TBF.Rig.RegisterReaders.SerialStream;
using TBF.Rig.RegisterReaders.StandingStartStop;
using TBF.Rig.Uni.SharedDialogs.SmartMetersCommunication.common;
namespace TBF.Rig.RegisterReaders.PoseidonCmdStartStop
{
public class PoseidonReader : ComponentBase, IDevice, IRegReaderDatastream, ISessionDataMngmnt, IOperation
public class PoseidonReader : ComponentBase, IDevice, IRegReaderDatastream, ISessionDataMngmnt, IOperation, ICommonRegReader
{
private static readonly ILog log = LogManager.GetLogger(typeof(PoseidonReader));
public override string ToString() { return string.Format("{0}({1})", ClassName, Cfg.ToString(-1)); }
@ -134,10 +135,10 @@ namespace TBF.Rig.RegisterReaders.PoseidonCmdStartStop
public int WMPulses { get { return wmPulses; } }
public int WMRefPulses { get { return wmRefPulses; } }
public double WMVolume { get { return wmVolume; } }
public double BeginWMState { get { return beginWMState; } }
public double EndWMState { get { return endWMState; } }
public double BeginWMState { get { return beginWMState; } set { beginWMState = value;} }
public double EndWMState { get { return endWMState; } set { endWMState = value;} }
public double WMTestTime { get { return wmTestTime; } }
public string SerialNr { get => wmSerialNr; }
public string SerialNr { get => wmSerialNr; set => wmSerialNr = value; }
double beginWMState;

View File

@ -369,8 +369,8 @@ namespace TBF.Rig.RegisterReaders.PoseidonReader
public int WMPulses { get { return wmPulses; } }
public int WMRefPulses { get { return wmRefPulses; }}
public double WMVolume { get { return wmVolume; } }
public double BeginWMState { get { return beginWMState; } }
public double EndWMState { get { return endWMState; } }
public double BeginWMState { get { return beginWMState;} set => beginWMState = value; }
public double EndWMState { get { return endWMState; } set => endWMState = value; }
public IOperation ReadDatastreamOp()
{
return this;

View File

@ -17,7 +17,18 @@ namespace TBF.Rig.RegisterReaders.PoseidonReader.implementations
public class PoseidonReader : ComponentBase, IDevice, IRegReaderDatastream, ISessionDataMngmnt, IOperation, ISmartReader
{
private static readonly ILog log = LogManager.GetLogger(typeof(PoseidonReader));
public PoseidonReader()
{
_pulsesPerLtr = 0;
_ltrsPerPulse = 0;
_wmPulses = 0;
_wmRefPulses = 0;
_wmVolume = 0;
_beginWmState = 0;
_endWmState = 0;
}
public override string ToString()
{
return string.Format("{0}({1})", ClassName, Cfg.ToString(-1));
@ -101,13 +112,23 @@ namespace TBF.Rig.RegisterReaders.PoseidonReader.implementations
throw new System.NotImplementedException();
}
public double PulsesPerLtr { get; }
public double LtrsPerPulse { get; }
public int WMPulses { get; }
public int WMRefPulses { get; }
public double WMVolume { get; }
public double BeginWMState { get; }
public double EndWMState { get; }
private double _pulsesPerLtr ;
private double _ltrsPerPulse ;
private int _wmPulses ;
private int _wmRefPulses ;
private double _wmVolume ;
private double _beginWmState ;
private double _endWmState ;
public double PulsesPerLtr { get => _pulsesPerLtr; }
public double LtrsPerPulse { get => _ltrsPerPulse; }
public int WMPulses { get => _wmPulses; }
public int WMRefPulses { get =>_wmRefPulses; }
public double WMVolume { get =>_wmVolume; }
public double BeginWMState { get => _beginWmState; set => _beginWmState = value; }
public double EndWMState { get => _endWmState; set => _endWmState = value; }
public IOperation ReadDatastreamOp()
{
throw new System.NotImplementedException();

View File

@ -9,6 +9,7 @@ using Common;
using TBF.Boxes;
using TBF.Resources;
using TBF.Rig.GenericDevices;
using TBF.Rig.Uni.SharedDialogs.SmartMetersCommunication.common;
using TBF.UiBridge;
namespace TBF.Rig.TestMethods.StandingStart
@ -511,6 +512,9 @@ namespace TBF.Rig.TestMethods.StandingStart
for (int i = 0; i < waterMetersCount; i++)
{
GenericDevices.IRegReader rr = sensPath.RegisterReaders[i];
if (rr is ISmartReader)
(rr as ISmartReader).BeginWMState = dataEntryCmpnt.WMStartState(i);
if (rr is Rig.RegisterReaders.StandingStartStop.RegisterReader)
(rr as Rig.RegisterReaders.StandingStartStop.RegisterReader).BeginWMState = dataEntryCmpnt.WMStartState(i);
@ -763,6 +767,9 @@ namespace TBF.Rig.TestMethods.StandingStart
{
GenericDevices.IRegReader rr = sensPath.RegisterReaders[i];
if (rr is ISmartReader)
(rr as ISmartReader).EndWMState = dataEntryCmpnt.WMEndState(i);
if (rr is Rig.RegisterReaders.StandingStartStop.RegisterReader)
(rr as Rig.RegisterReaders.StandingStartStop.RegisterReader).EndWMState = dataEntryCmpnt.WMEndState(i);

View File

@ -11,6 +11,7 @@ using Config.Entities;
using TBF.Boxes;
using TBF.Resources;
using TBF.Rig.GenericDevices;
using TBF.Rig.Uni.SharedDialogs.SmartMetersCommunication.common;
using TBF.UiBridge;
namespace TBF.Rig.TestMethods.StandingStartMassCollection
@ -593,8 +594,15 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection
{
for (int i = 0; i < waterMetersCount; i++)
{
IRegReader rr = sensPath.RegisterReaders[i];
if (rr is ICommonRegReader)
{
(rr as ICommonRegReader).BeginWMState = dataEntryCmpnt.WMStartState(i);
}
if (rr is Rig.RegisterReaders.StandingStartStop.RegisterReader)
(rr as Rig.RegisterReaders.StandingStartStop.RegisterReader).BeginWMState = dataEntryCmpnt.WMStartState(i);
@ -951,6 +959,10 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection
for (int i = 0; i < waterMetersCount; i++)
{
GenericDevices.IRegReader rr = sensPath.RegisterReaders[i];
if (rr is ICommonRegReader)
(rr as ICommonRegReader).EndWMState = dataEntryCmpnt.WMEndState(i);
if (rr is Rig.RegisterReaders.StandingStartStop.RegisterReader)
(rr as Rig.RegisterReaders.StandingStartStop.RegisterReader).EndWMState = dataEntryCmpnt.WMEndState(i);
@ -1246,6 +1258,14 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection
&& (tstRslt.ErrorFlags == 0);
meterRslt.TestDone = true;
tstRslt.TestDone = true;
if (regReader is ICommonRegReader regReaderCommon)
// if (meterRslt.WaterMeter != null
// && tstRslt is ICommonRegReader tstRsltCommon
// && !string.IsNullOrEmpty(tstRsltCommon.SerialNr))
{
meterRslt.WaterMeter.SerialNr = regReaderCommon.SerialNr;
}
}
}
}

View File

@ -187,8 +187,8 @@ namespace TBF.Rig.TestMethods.iPerlCommunication.iPerlHead
///
public int WMPulses { get { return wmPulses; } }
public int WMRefPulses { get { return wmRefPulses; } }
public double BeginWMState { get { return beginWMState; } }
public double EndWMState { get { return endWMState; } }
public double BeginWMState { get { return beginWMState; } set { beginWMState = value; }}
public double EndWMState { get { return endWMState; } set { endWMState = value;} }
public double WMVolume { get { return wmVolume; } }
public double WMTestTime { get { return wmTestTime; } }

View File

@ -0,0 +1,16 @@
using Common;
using TBF.Rig.GenericDevices;
namespace TBF.Rig.Uni.SharedDialogs.SmartMetersCommunication.common
{
public interface ICommonRegReader : IRegReader
{
new string Name { get; }
new DebugMode DebugLevel { get; set; }
public string SerialNr { get; set; }
new double BeginWMState { get; set; } /// Test begin state of the water meter
new double EndWMState { get; set; } /// Test end state of the water meter
}
}

View File

@ -5,11 +5,14 @@ using TBF.Rig.RegisterReaders.CommonRR;
namespace TBF.Rig.Uni.SharedDialogs.SmartMetersCommunication.common
{
public interface ISmartReader : IRegReader
public interface ISmartReader : ICommonRegReader
{
new string Name { get; }
new DebugMode DebugLevel { get; set; }
public string SerialNr { get; }
new string SerialNr { get; set; }
new double BeginWMState { get; set; } /// Test begin state of the water meter
new double EndWMState { get; set; } /// Test end state of the water meter
public string CommInterface { get; }
public int RfidComPortNr { get; }

View File

@ -2064,6 +2064,7 @@
<Compile Include="Rig\Uni\RegValve\SetFlowOp.cs" />
<Compile Include="Rig\Uni\RegValve\SetRegValvePositionOp.cs" />
<Compile Include="Rig\Uni\SharedDialogs\SmartMetersCommunication\AllCompletedEventArgs.cs" />
<Compile Include="Rig\Uni\SharedDialogs\SmartMetersCommunication\common\ICommonRegReader.cs" />
<Compile Include="Rig\Uni\SharedDialogs\SmartMetersCommunication\common\ICorrections.cs" />
<Compile Include="Rig\Uni\SharedDialogs\SmartMetersCommunication\common\ISmartReader.cs" />
<Compile Include="Rig\Uni\SharedDialogs\SmartMetersCommunication\implementations\IPerlCorrections.cs" />