From ee1afaa78bdc854fddbd9ec2f3191b3ae6f407c6 Mon Sep 17 00:00:00 2001 From: Milan Hanajik Date: Fri, 27 Nov 2015 16:41:40 +0100 Subject: [PATCH] DiverterEdge[] initialization for SendCalibData() fn fixed, version 1.6.147. --- .../BenchControl/Elde/ControlBoardDev.cs | 6 +++ .../BenchControl/Elde/Diverter/Diverter.cs | 41 +++++++++++++++++-- TestBenchFramework/Properties/AssemblyInfo.cs | 4 +- 3 files changed, 46 insertions(+), 5 deletions(-) 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")]