From 843437a3b1d7f94d1c2b68915ce7ff657b4ba666 Mon Sep 17 00:00:00 2001 From: Milan Hanajik Date: Thu, 7 May 2015 20:07:53 +0200 Subject: [PATCH] Completed MettlerToledo.Multi changes - ready for tests. --- .../BenchControl/Elde/ControlBoardDev.cs | 7 +- .../MettlerToledo/Multi/BalanceDev.cs | 188 +++--------------- .../MettlerToledo/Multi/ReadMassOp.cs | 4 +- .../MettlerToledo/Multi/ReadStableMassOp.cs | 2 - .../MettlerToledo/Multi/TaringOp.cs | 2 - .../MettlerToledo/ReadMassesOp.cs | 4 - 6 files changed, 30 insertions(+), 177 deletions(-) diff --git a/TestBenchFramework/BenchControl/Elde/ControlBoardDev.cs b/TestBenchFramework/BenchControl/Elde/ControlBoardDev.cs index 45b78639d..57f0f5ee6 100644 --- a/TestBenchFramework/BenchControl/Elde/ControlBoardDev.cs +++ b/TestBenchFramework/BenchControl/Elde/ControlBoardDev.cs @@ -134,7 +134,12 @@ namespace TBF.BenchControl.Elde { controlCom.SetWeight(i, MettlerToledo.Standard.BalanceDev.Masses[i]); } - } + + for (int i = 0; i < MettlerToledo.Multi.BalanceDev.BalancesCount; i++) + { + controlCom.SetWeight(i, MettlerToledo.Multi.BalanceDev.Masses[i]); + } + } /// diff --git a/TestBenchFramework/BenchControl/MettlerToledo/Multi/BalanceDev.cs b/TestBenchFramework/BenchControl/MettlerToledo/Multi/BalanceDev.cs index b67c17aef..36b8962de 100644 --- a/TestBenchFramework/BenchControl/MettlerToledo/Multi/BalanceDev.cs +++ b/TestBenchFramework/BenchControl/MettlerToledo/Multi/BalanceDev.cs @@ -34,6 +34,7 @@ namespace TBF.BenchControl.MettlerToledo.Multi /// Enumeration of balances via static fields and methods /// static int nextBalanceIdx = 0; + static int currentBalanceIdx = 0; public static new void ResetStaticProperties() { nextBalanceIdx = 0; @@ -56,8 +57,7 @@ namespace TBF.BenchControl.MettlerToledo.Multi protected MsrmntState msrmntState; /// The mass after StartMassMeasurement() when MsrmntState == MsrmntState.Valid - public float Mass { get { return mass; } } - protected float mass; + public float Mass { get { return Masses[balanceNr]; } } /// The time stamp after StartMassMeasurement() when MsrmntState == MsrmntState.Valid public int MsrmntTimeStamp { get { return msrmntTimeStamp; } } @@ -91,7 +91,7 @@ namespace TBF.BenchControl.MettlerToledo.Multi public void Initialize() { - msrmntState = MsrmntState.Failed; /// Data not valid yet + msrmntState = MsrmntState.Busy; /// Data not valid yet if (balanceCfg.DebugLevel == Entities.DebugMode.Simulate) return; @@ -129,63 +129,6 @@ namespace TBF.BenchControl.MettlerToledo.Multi serialPort.Write("Z\r\n"); } - public void Taring() - { - if (balanceCfg.DebugLevel == Entities.DebugMode.Simulate) return; - - if (msrmntState == MsrmntState.Busy) - { - log.Warn("Taring() returns without starting taring the scale because measurementState == MeasurementState.Busy"); - return; - } - - log.Info("Taring()"); - - msrmntState = MsrmntState.Busy; - stringBuilder.Clear(); - serialPort.Write("T\r\n"); - } - - /// - /// Get a stable mass measurement - /// - public void GetStableMassMeasurement() - { - if (balanceCfg.DebugLevel == Entities.DebugMode.Simulate) return; - - if (msrmntState == MsrmntState.Busy) - { - log.Warn("GetStableMassMeasurement() returns without starting a measurement because measurementState == MeasurementState.Busy"); - return; - } - - log.Info("GetStableMassMeasurement()"); - - msrmntState = MsrmntState.Busy; - stringBuilder.Clear(); - serialPort.Write("S\r\n"); - } - - /// - /// Get an immediate mass measurement - /// - public void GetImmediateMassMeasurement() - { - if (balanceCfg.DebugLevel == Entities.DebugMode.Simulate) return; - - if (msrmntState == MsrmntState.Busy) - { - log.Warn("GetImmediateMassMeasurement() returns without starting a measurement because measurementState == MeasurementState.Busy"); - return; - } - - log.Info("GetImmediateMassMeasurement()"); - - msrmntState = MsrmntState.Busy; - stringBuilder.Clear(); - serialPort.Write("SI\r\n"); - } - /// /// Parse characters received from the serial port /// @@ -193,8 +136,7 @@ namespace TBF.BenchControl.MettlerToledo.Multi { if (balanceCfg.DebugLevel == Entities.DebugMode.Simulate) { - mass = TestBenchSim.GetSimMass(balanceNr); - Masses[balanceNr] = mass; + Masses[balanceNr] = TestBenchSim.GetSimMass(balanceNr); msrmntState = MsrmntState.Valid; msrmntTimeStamp = StateMachine.Time; return; @@ -204,8 +146,6 @@ namespace TBF.BenchControl.MettlerToledo.Multi log.Debug("RunDevice()"); - if (msrmntState != MsrmntState.Busy) return; /// No measurement in progress - string justReceived = serialPort.ReadExisting(); if (justReceived != null && justReceived.Length > 0) { @@ -238,119 +178,37 @@ namespace TBF.BenchControl.MettlerToledo.Multi string[] fields = received.Split(new char[] { ' ' }); - if (fields.Length == 1 && fields[0].Equals("ZA")) /// Zero when stable + if (fields.Length == 2 && fields[0].Equals("&")) /// Zero when stable { - mass = 0; - Masses[balanceNr] = mass; - //msrmntState = MsrmntState.Valid; + msrmntState = MsrmntState.Failed; log.InfoFormat("Balance response = \"{0}\"", received); - return; } - else if (fields.Length < 2) + else if (fields.Length == 3) { - msrmntState = MsrmntState.Failed; - log.WarnFormat("Balance response = \"{0}\", Unexpected error !!!", received); - return; - } - - if (fields[0].Equals("Z")) /// Zero when stable - { - if (fields.Length == 2 && fields[1].Equals("A")) - { - mass = 0; - Masses[balanceNr] = mass; - //msrmntState = MsrmntState.Valid; - log.InfoFormat("Balance response = \"{0}\"", received); - return; - } - else - { - msrmntState = MsrmntState.Failed; - log.WarnFormat("Balance response = \"{0}\", error !!!", received); - } - } - else if (fields[0].Equals("S")) /// Stable mass: field[1] = field[2] = "kg" - { - if (fields.Length >= 3 && - float.TryParse(fields[1], - NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign, + float tmpMass; + if (float.TryParse(fields[1], + NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, - out mass)) + out tmpMass)) { - if (fields[2].Equals("g")) mass /= 1000.0f; - if (fields[2].Equals("t")) mass *= 1000.0f; - Masses[balanceNr] = mass; - msrmntState = MsrmntState.Valid; - log.InfoFormat("Balance response = \"{0}\", Mass = {1}", received, mass); - } - else if (fields.Length == 2 && fields[1].Equals("-")) - { - mass = 0; - Masses[balanceNr] = mass; - msrmntState = MsrmntState.Valid; - log.InfoFormat("Balance response = \"{0}\", Mass = {1}", received, mass); - } - else - { - msrmntState = MsrmntState.Failed; - log.WarnFormat("Balance response = \"{0}\", Overload or and unexpected error !!!", received); - bool b = float.TryParse(fields[1], NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out mass); - - } - } - else if (fields[0].Equals("SD")) /// Dynamic mass: field[1] = field[2] = "kg" - { - if (fields.Length >= 3 && - float.TryParse(fields[1], - NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign, - CultureInfo.InvariantCulture, - out mass)) - { - if (fields[2].Equals("g")) mass /= 1000.0f; - if (fields[2].Equals("t")) mass *= 1000.0f; - Masses[balanceNr] = mass; - msrmntState = MsrmntState.Valid; - log.InfoFormat("Balance response = \"{0}\", Mass = {1}", received, mass); - } - else if (fields.Length == 2 && fields[1].Equals("-")) - { - mass = 0; - Masses[balanceNr] = mass; - msrmntState = MsrmntState.Valid; - log.InfoFormat("Balance response = \"{0}\", Mass = {1}", received, mass); - } - else - { - msrmntState = MsrmntState.Failed; - log.WarnFormat("Balance response = \"{0}\", Overload or and unexpected error !!!", received); - bool b = float.TryParse(fields[1], NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out mass); - - } - } - else if (fields[0].Equals("TB")) /// Taring - { - if (fields.Length >= 3 && - float.TryParse(fields[1], - NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign, - CultureInfo.InvariantCulture, - out mass)) - { - if (fields[2].Equals("g")) mass /= 1000.0f; - if (fields[2].Equals("t")) mass *= 1000.0f; + Masses[currentBalanceIdx] = tmpMass / 100.0f; msrmntState = MsrmntState.Valid; - log.InfoFormat("Balance response = \"{0}\", Tara = {1}", received, mass); - } - else - { - msrmntState = MsrmntState.Failed; - log.WarnFormat("Balance response = \"{0}\", Overload or and unexpected error !!!", received); - } + log.InfoFormat("Balance response = \"{0}\", Mass = {1}", received, tmpMass); + } + + msrmntState = MsrmntState.Failed; + log.WarnFormat("Balance response = \"{0}\", Unexpected error !!!", received); } else { msrmntState = MsrmntState.Failed; log.WarnFormat("Balance response = \"{0}\", Unexpected error !!!", received); - } + } + + if (++currentBalanceIdx >= nextBalanceIdx) + { + currentBalanceIdx = 0; + } } } diff --git a/TestBenchFramework/BenchControl/MettlerToledo/Multi/ReadMassOp.cs b/TestBenchFramework/BenchControl/MettlerToledo/Multi/ReadMassOp.cs index 5a262cdaf..edfbf7358 100644 --- a/TestBenchFramework/BenchControl/MettlerToledo/Multi/ReadMassOp.cs +++ b/TestBenchFramework/BenchControl/MettlerToledo/Multi/ReadMassOp.cs @@ -39,7 +39,6 @@ namespace TBF.BenchControl.MettlerToledo.Multi public void Start() { done = false; - balanceDev.GetImmediateMassMeasurement(); } /// Run this operation @@ -55,7 +54,6 @@ namespace TBF.BenchControl.MettlerToledo.Multi result.Val = balanceDev.Mass; done = true; log.InfoFormat("ReadMassOp.Run() ... mass={0} ... returning Event.BalanceDone", balanceDev.Mass); - balanceDev.GetImmediateMassMeasurement(); /// Start another measurement return Event.BalanceDone; /// Mass read OK } else if (done) @@ -64,7 +62,7 @@ namespace TBF.BenchControl.MettlerToledo.Multi } else { - return Event.None; + return Event.Busy; } } diff --git a/TestBenchFramework/BenchControl/MettlerToledo/Multi/ReadStableMassOp.cs b/TestBenchFramework/BenchControl/MettlerToledo/Multi/ReadStableMassOp.cs index 6534c5f2f..11f1c18b6 100644 --- a/TestBenchFramework/BenchControl/MettlerToledo/Multi/ReadStableMassOp.cs +++ b/TestBenchFramework/BenchControl/MettlerToledo/Multi/ReadStableMassOp.cs @@ -49,7 +49,6 @@ namespace TBF.BenchControl.MettlerToledo.Multi { currentReadingsCount = 0; massReadings = new float[totalReadingsCount]; - balanceDev.GetStableMassMeasurement(); } /// Run this operation @@ -83,7 +82,6 @@ namespace TBF.BenchControl.MettlerToledo.Multi } } - balanceDev.GetStableMassMeasurement(); return Event.None; } diff --git a/TestBenchFramework/BenchControl/MettlerToledo/Multi/TaringOp.cs b/TestBenchFramework/BenchControl/MettlerToledo/Multi/TaringOp.cs index 585758a25..bd574dbf8 100644 --- a/TestBenchFramework/BenchControl/MettlerToledo/Multi/TaringOp.cs +++ b/TestBenchFramework/BenchControl/MettlerToledo/Multi/TaringOp.cs @@ -38,7 +38,6 @@ namespace TBF.BenchControl.MettlerToledo.Multi public void Start() { done = false; - balanceDev.Taring(); } /// Run this operation @@ -67,7 +66,6 @@ namespace TBF.BenchControl.MettlerToledo.Multi return Event.BalanceDone; /// Taring completed } - balanceDev.Taring(); /// Failed -> repeat taring return Event.Busy; } diff --git a/TestBenchFramework/BenchControl/MettlerToledo/ReadMassesOp.cs b/TestBenchFramework/BenchControl/MettlerToledo/ReadMassesOp.cs index b648bf675..3af02322b 100644 --- a/TestBenchFramework/BenchControl/MettlerToledo/ReadMassesOp.cs +++ b/TestBenchFramework/BenchControl/MettlerToledo/ReadMassesOp.cs @@ -33,10 +33,6 @@ namespace TBF.BenchControl.MettlerToledo { Standard.BalanceDev.Balances[i].GetImmediateMassMeasurement(); } - for (int i = 0; i < Multi.BalanceDev.BalancesCount; i++) - { - Multi.BalanceDev.Balances[i].GetImmediateMassMeasurement(); - } } /// Run this operation