diff --git a/TestBenchFramework/BenchControl/Elde/ControlBoardDev.cs b/TestBenchFramework/BenchControl/Elde/ControlBoardDev.cs
index 3b6d31150..9cd40d1a8 100644
--- a/TestBenchFramework/BenchControl/Elde/ControlBoardDev.cs
+++ b/TestBenchFramework/BenchControl/Elde/ControlBoardDev.cs
@@ -266,6 +266,12 @@ namespace TBF.BenchControl.Elde
/// Initialize this device
public void Initialize()
{
+ DiverterEdge = new uint[BenchControl.Elde.Diverter.Diverter.DivertersCount];
+ for (int i = 0; i < BenchControl.Elde.Diverter.Diverter.DivertersCount; i++)
+ {
+ DiverterEdge[i] = (uint)BenchControl.Elde.Diverter.Diverter.DiverterLevelsPct[i];
+ }
+
controlCom.SendCalibData(RegValveCalib,
MeretRS485Address,
controlBoardCfg.ComPortNr,
diff --git a/TestBenchFramework/BenchControl/Elde/Diverter/Diverter.cs b/TestBenchFramework/BenchControl/Elde/Diverter/Diverter.cs
index 349674824..2c8dea570 100644
--- a/TestBenchFramework/BenchControl/Elde/Diverter/Diverter.cs
+++ b/TestBenchFramework/BenchControl/Elde/Diverter/Diverter.cs
@@ -12,6 +12,23 @@ namespace TBF.BenchControl.Elde.Diverter
private static readonly ILog log = LogManager.GetLogger(typeof(Diverter));
public override string ToString() { return string.Format("Diverter({0})", Cfg.ToString(1)); }
+
+ ///
+ /// Enumeration of balances via static fields and methods
+ ///
+ static int nextIdx = 0;
+ public static new void ResetStaticProperties()
+ {
+ nextIdx = 0;
+ }
+ public static int DivertersCount { get { return nextIdx; } }
+ public static GenericDevices.IDiverter[] Diverters;
+ public static int[] DiverterLevelsPct;
+ ///
+ protected int diverterNr; /// 0-based balance number
+
+
+
readonly DiverterCfg diverterCfg;
readonly ControlBoardDev controlBoard;
readonly ulong mask; /// derived from bitPosition in the constructor
@@ -37,9 +54,27 @@ namespace TBF.BenchControl.Elde.Diverter
if (cfg.BitPosition < 0 || cfg.BitPosition >= 64) throw new ArgumentOutOfRangeException("position");
this.mask = (((ulong)1) << cfg.BitPosition);
- /// Prepare data for SendCalibData() control board component method
- controlBoard.DiverterEdge[0] = (uint)diverterCfg.StartingLevel;
- controlBoard.DiverterEdge[1] = (uint)diverterCfg.StoppingLevel;
+
+
+ diverterNr = nextIdx++;
+ ///
+ if (Diverters == null || Diverters.Length < nextIdx)
+ {
+ GenericDevices.IDiverter[] divertersSoFar = Diverters;
+ int[] levelsSoFar = DiverterLevelsPct;
+ Diverters = new GenericDevices.IDiverter[nextIdx];
+ DiverterLevelsPct = new int[nextIdx];
+ if (divertersSoFar != null)
+ {
+ for (int i = 0; i < divertersSoFar.Length; i++)
+ {
+ Diverters[i] = divertersSoFar[i];
+ DiverterLevelsPct[i] = levelsSoFar[i];
+ }
+ }
+ Diverters[nextIdx - 1] = this;
+ DiverterLevelsPct[nextIdx - 1] = diverterCfg.StartingLevel;
+ }
log.Debug(this.ToString());
}
diff --git a/TestBenchFramework/Properties/AssemblyInfo.cs b/TestBenchFramework/Properties/AssemblyInfo.cs
index 22098d145..f7dbc1f24 100644
--- a/TestBenchFramework/Properties/AssemblyInfo.cs
+++ b/TestBenchFramework/Properties/AssemblyInfo.cs
@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// Build Number
// Revision
//
-[assembly: AssemblyVersion("1.6.146.1")]
-[assembly: AssemblyFileVersion("1.6.146.1")]
+[assembly: AssemblyVersion("1.6.147.1")]
+[assembly: AssemblyFileVersion("1.6.147.1")]