From 91a4ca37607578449e8072010544f4668551b02c Mon Sep 17 00:00:00 2001 From: Milan Hanajik Date: Thu, 27 Aug 2015 07:03:42 +0200 Subject: [PATCH] Q2 correction factor logging and display improvements, bug fix in iPerlCommunication, Action="Simulate Q#", version 1.5.103. --- .../iPerlCommunication/TestMethod.cs | 5 +- .../iPerlCommunicationForm.cs | 207 ++++++++++-------- .../iPerlCommunicationSeq.cs | 12 + .../WaterMeters/iPerl/WaterMeter.cs | 12 +- TestBenchFramework/Properties/AssemblyInfo.cs | 4 +- 5 files changed, 148 insertions(+), 92 deletions(-) diff --git a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethod.cs b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethod.cs index f48ea925a..f303d3834 100644 --- a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethod.cs +++ b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethod.cs @@ -35,9 +35,10 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication public void Initialize() { + Version ver = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; rfidDataLogger.Fatal("------------------------------------------------------------------------"); - rfidDataLogger.Fatal("Program restarted"); - } + rfidDataLogger.FatalFormat("Test Bench Framework ver. {0}.{1}.{2}", ver.Major, ver.Minor, ver.Build); + } public void RunDeviceBefore() { } public void RunDeviceAfter() { } diff --git a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.cs b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.cs index 350b24965..cbab48d7a 100644 --- a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.cs +++ b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.cs @@ -71,9 +71,12 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication /// 0..3 /// Com port number /// Value returned by openPort(...) - public static unsafe int OpenPort(int boardNr) + public static unsafe int OpenPort(WaterMeters.iPerl.WaterMeter wm) { - switch (boardNr) + if (wm.DebugLevel != Entities.DebugMode.Normal) return 0; + + /// Normal function + switch (wm.MuxBoardNr) { default: case 1: return openPort1(cfg.RfidPortNrBoard1); @@ -89,9 +92,12 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication /// 0..3 /// Com port number /// Value returned by openPort(...) - public static unsafe int ClosePort(int boardNr) + public static unsafe int ClosePort(WaterMeters.iPerl.WaterMeter wm) { - switch (boardNr) + if (wm.DebugLevel != Entities.DebugMode.Normal) return 0; + + /// Normal function + switch (wm.MuxBoardNr) { default: case 1: return closePort1(); @@ -105,23 +111,41 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication /// Wrapper function with safe interface and unsafe body /// /// Value returned by readRequestPort(...) - public static unsafe int ReadRequestPort(int boardNr, MessageID messageID, int offset, int lenght, out byte[] buffer, int timeout) + public static unsafe int ReadRequestPort(WaterMeters.iPerl.WaterMeter wm, MessageID messageID, int offset, int lenght, out byte[] buffer, int timeout) { - byte[] buf = new byte[1000]; + byte[] buf = new byte[200]; int retv; fixed (byte* pBuf = buf) { - switch (boardNr) - { - default: - case 1: retv = readRequestPort1(messageID, offset, lenght, pBuf, timeout); break; - case 2: retv = readRequestPort2(messageID, offset, lenght, pBuf, timeout); break; - case 3: retv = readRequestPort3(messageID, offset, lenght, pBuf, timeout); break; - case 4: retv = readRequestPort4(messageID, offset, lenght, pBuf, timeout); break; - } + if (wm.DebugLevel == Entities.DebugMode.Normal) + { + /// Normal function + switch (wm.MuxBoardNr) + { + default: + case 1: retv = readRequestPort1(messageID, offset, lenght, pBuf, timeout); break; + case 2: retv = readRequestPort2(messageID, offset, lenght, pBuf, timeout); break; + case 3: retv = readRequestPort3(messageID, offset, lenght, pBuf, timeout); break; + case 4: retv = readRequestPort4(messageID, offset, lenght, pBuf, timeout); break; + } + } + else + { + /// Simulation + if (messageID == MessageID.Configuration) + { + } + else if (messageID == MessageID.Calibration) + { + } + else if (messageID == MessageID.MetrologyMemory) + { + } + retv = 0; + } - rfidDataLogger.InfoFormat("Group={0}, Board={1}, ReadRequestPort({2}, {3}, {4}, ...) returned {5} {6}", currentGroup, boardNr, messageID, offset, lenght, retv, (retv != 0) ? "!" : ""); + rfidDataLogger.InfoFormat("{0}, ReadRequestPort({1}, {2}, {3}, ...) returned {4} {5}", wm.Name, messageID, offset, lenght, retv, (retv != 0) ? "!" : ""); buffer = new byte[lenght]; for (int i = 0; i < lenght; i++) buffer[i] = buf[i]; @@ -134,31 +158,49 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication /// Wrapper function with safe interface adn unsafe body /// /// Value returned by writeRequestPort(...) - public static unsafe int WriteRequestPort(int boardNr, MessageID messageID, int offset, int lenght, byte[] buffer, int timeout) + public static unsafe int WriteRequestPort(WaterMeters.iPerl.WaterMeter wm, MessageID messageID, int offset, int lenght, byte[] buffer, int timeout) { int retv; fixed (byte* pBuf = buffer) { - switch (boardNr) - { - default: - case 1: retv = writeRequestPort1(messageID, offset, lenght, pBuf, timeout); break; - case 2: retv = writeRequestPort2(messageID, offset, lenght, pBuf, timeout); break; - case 3: retv = writeRequestPort3(messageID, offset, lenght, pBuf, timeout); break; - case 4: retv = writeRequestPort4(messageID, offset, lenght, pBuf, timeout); break; - } + if (wm.DebugLevel == Entities.DebugMode.Normal) + { + /// Normal function + switch (wm.MuxBoardNr) + { + default: + case 1: retv = writeRequestPort1(messageID, offset, lenght, pBuf, timeout); break; + case 2: retv = writeRequestPort2(messageID, offset, lenght, pBuf, timeout); break; + case 3: retv = writeRequestPort3(messageID, offset, lenght, pBuf, timeout); break; + case 4: retv = writeRequestPort4(messageID, offset, lenght, pBuf, timeout); break; + } + } + else + { + /// Simulation + if (messageID == MessageID.Configuration) + { + } + else if (messageID == MessageID.Calibration) + { + } + else if (messageID == MessageID.MetrologyMemory) + { + } + retv = 0; + } if (lenght == 1) { - rfidDataLogger.InfoFormat("Group={0}, Board={1}, WriteRequestPort({3}, {4}, {5}, {6}) returned {2} {7}", currentGroup, boardNr, retv, messageID, offset, lenght, pBuf[0].ToString("X2"), (retv != 0) ? "!" : ""); + rfidDataLogger.InfoFormat("{0}, WriteRequestPort({2}, {3}, {4}, {5}) returned {1} {6}", wm.Name, retv, messageID, offset, lenght, pBuf[0].ToString("X2"), (retv != 0) ? "!" : ""); } else if (lenght == 2) { - rfidDataLogger.InfoFormat("Group={0}, Board={1}, WriteRequestPort({3}, {4}, {5}, {6} {7}) returned {2} {8}", currentGroup, boardNr, retv, messageID, offset, lenght, pBuf[0].ToString("X2"), pBuf[1].ToString("X2"), (retv != 0) ? "!" : ""); + rfidDataLogger.InfoFormat("{0}, WriteRequestPort({2}, {3}, {4}, {5} {6}) returned {1} {7}", wm.Name, retv, messageID, offset, lenght, pBuf[0].ToString("X2"), pBuf[1].ToString("X2"), (retv != 0) ? "!" : ""); } else { - rfidDataLogger.InfoFormat("Group={0}, Board={1}, WriteRequestPort({3}, {4}, {5}, {6} {7} ...) returned {2} {8}", currentGroup, boardNr, retv, messageID, offset, lenght, pBuf[0].ToString("X2"), pBuf[1].ToString("X2"), (retv != 0) ? "!" : ""); + rfidDataLogger.InfoFormat("{0}, WriteRequestPort({2}, {3}, {4}, {5} {6} ...) returned {1} {7}", wm.Name, retv, messageID, offset, lenght, pBuf[0].ToString("X2"), pBuf[1].ToString("X2"), (retv != 0) ? "!" : ""); } } return retv; @@ -513,36 +555,30 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication if ((wm.MuxBoardNr == rfidPortNr) && (wm.Group == group)) { wmFound = true; - if (wm.DebugLevel == Entities.DebugMode.Normal) - { - CommErr error; - string resultStr = string.Empty; - if (activity.ToLower().Contains(ReadConfigurationStr.ToLower())) error = ReadConfiguration(wm, ref resultStr); - else if (activity.ToLower().Contains(SetTestModeStr.ToLower())) error = SetTestMode(wm, ref resultStr); - else if (activity.ToLower().Equals(SetActiveModeStr.ToLower())) error = SetActiveMode(wm, ref resultStr); - else if (activity.ToLower().Equals(ReadCalibrationStr.ToLower())) error = ReadCalibration(wm, ref resultStr); - else if (activity.ToLower().Contains(WriteCalibrationFactorStr.ToLower())) error = WriteCalibrationFactor(wm, ref resultStr); - else if (activity.ToLower().Equals(ResetQ2CorrectionStr.ToLower())) error = ResetQ2Correction(wm, ref resultStr); - else if (activity.ToLower().Equals(WriteQ2CorrectionStr.ToLower())) error = WriteQ2Correction(wm, ref resultStr); - else - { - error = CommErr.None; - resultStr = "Invalid activity"; - } + CommErr error; + string resultStr = string.Empty; - if (error == CommErr.None) OnCommCompleted(null, new CommCompletedEventArgs(threadId, wmNr, resultStr)); - else if (wm.Disabled || error == CommErr.Disabled) OnCommCompleted(null, new CommCompletedEventArgs(threadId, wmNr, "Watermeter is disabled")); - else - { - OnCommCompleted(null, new CommCompletedEventArgs(threadId, wmNr, string.Format("{0} failed ({1}) !!!", activity, error))); - rfidDataLogger.ErrorFormat("Group={0}, Board={1}, {2} failed ({3}) !!!", currentGroup, wm.MuxBoardNr, activity, error); - wm.Disabled = true; - } - } + if (activity.ToLower().Contains(ReadConfigurationStr.ToLower())) error = ReadConfiguration(wm, ref resultStr); + else if (activity.ToLower().Contains(SetTestModeStr.ToLower())) error = SetTestMode(wm, ref resultStr); + else if (activity.ToLower().Equals(SetActiveModeStr.ToLower())) error = SetActiveMode(wm, ref resultStr); + else if (activity.ToLower().Equals(ReadCalibrationStr.ToLower())) error = ReadCalibration(wm, ref resultStr); + else if (activity.ToLower().Contains(WriteCalibrationFactorStr.ToLower())) error = WriteCalibrationFactor(wm, ref resultStr); + else if (activity.ToLower().Equals(ResetQ2CorrectionStr.ToLower())) error = ResetQ2Correction(wm, ref resultStr); + else if (activity.ToLower().Equals(WriteQ2CorrectionStr.ToLower())) error = WriteQ2Correction(wm, ref resultStr); else { - OnCommCompleted(null, new CommCompletedEventArgs(threadId, wmNr, "Simulation")); + error = CommErr.None; + resultStr = "Invalid activity"; + } + + if (error == CommErr.None) OnCommCompleted(null, new CommCompletedEventArgs(threadId, wmNr, resultStr)); + else if (wm.Disabled || error == CommErr.Disabled) OnCommCompleted(null, new CommCompletedEventArgs(threadId, wmNr, "Watermeter is disabled")); + else + { + OnCommCompleted(null, new CommCompletedEventArgs(threadId, wmNr, string.Format("{0} failed ({1}) !!!", activity, error))); + rfidDataLogger.ErrorFormat("Group={0}, Board={1}, {2} failed ({3}) !!!", currentGroup, wm.MuxBoardNr, activity, error); + wm.Disabled = true; } break; } @@ -574,7 +610,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication if (wm.Disabled) return CommErr.Disabled; - if (OpenPort(wm.MuxBoardNr) != 0) return CommErr.OpenPort; /// Open RFID port + if (OpenPort(wm) != 0) return CommErr.OpenPort; /// Open RFID port CommErr error = CommErr.Read; @@ -582,7 +618,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication byte[] config = null; for (int j = 0; j < MaxCommRetries; j++) { - if (0 == ReadRequestPort(wm.MuxBoardNr, MessageID.Configuration, 0, ConfigStruct.Length, out config, CommTimeout)) + if (0 == ReadRequestPort(wm, MessageID.Configuration, 0, ConfigStruct.Length, out config, CommTimeout)) { error = CommErr.None; wm.ConfigStruct = ConfigStruct.FromByteArray(config); @@ -591,7 +627,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication } } - ClosePort(wm.MuxBoardNr); /// Close RFID port + ClosePort(wm); /// Close RFID port return error; } @@ -630,7 +666,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication } /// Communication necessary - if (OpenPort(wm.MuxBoardNr) != 0) return CommErr.OpenPort; /// Open RFID port + if (OpenPort(wm) != 0) return CommErr.OpenPort; /// Open RFID port CommErr error = CommErr.None; @@ -641,7 +677,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication byte[] cmd = new byte[1] { (byte)6 }; for (int j = 0; j < MaxCommRetries; j++) { - if (0 == WriteRequestPort(wm.MuxBoardNr, MessageID.Command, 0, 1, cmd, CommTimeout)) { error = CommErr.None; break; } + if (0 == WriteRequestPort(wm, MessageID.Command, 0, 1, cmd, CommTimeout)) { error = CommErr.None; break; } } } @@ -652,7 +688,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication byte[] tstMdCfg = new byte[1] { testModeConfig }; for (int j = 0; j < MaxCommRetries; j++) { - if (0 == WriteRequestPort(wm.MuxBoardNr, MessageID.Configuration, 21, 1, tstMdCfg, CommTimeout)) + if (0 == WriteRequestPort(wm, MessageID.Configuration, 21, 1, tstMdCfg, CommTimeout)) { wm.ConfigStruct.Update(21, tstMdCfg); error = CommErr.None; @@ -668,7 +704,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication byte[] cmd = new byte[1] { (byte)7 }; for (int j = 0; j < MaxCommRetries; j++) { - if (0 == WriteRequestPort(wm.MuxBoardNr, MessageID.Command, 0, 1, cmd, CommTimeout)) { error = CommErr.None; break; } + if (0 == WriteRequestPort(wm, MessageID.Command, 0, 1, cmd, CommTimeout)) { error = CommErr.None; break; } } } @@ -680,7 +716,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication byte[] cfg_0_3 = null; for (int j = 0; j < MaxCommRetries; j++) { - if (0 == ReadRequestPort(wm.MuxBoardNr, MessageID.Configuration, 0, 4, out cfg_0_3, CommTimeout)) + if (0 == ReadRequestPort(wm, MessageID.Configuration, 0, 4, out cfg_0_3, CommTimeout)) { wm.ConfigStruct.Update(0, cfg_0_3); if (wm.ConfigStruct.MeterState == MeterState.Test) @@ -693,7 +729,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication } } - ClosePort(wm.MuxBoardNr); /// Close RFID port + ClosePort(wm); /// Close RFID port return error; } @@ -710,7 +746,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication { if (wm.Disabled) return CommErr.Disabled; - if (OpenPort(wm.MuxBoardNr) != 0) return CommErr.OpenPort; /// Open RFID port + if (OpenPort(wm) != 0) return CommErr.OpenPort; /// Open RFID port CommErr error = CommErr.CmdActive; @@ -718,7 +754,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication byte[] cmd = new byte[1] { (byte)6 }; for (int j = 0; j < MaxCommRetries; j++) { - if (0 == WriteRequestPort(wm.MuxBoardNr, MessageID.Command, 0, 1, cmd, CommTimeout)) { error = CommErr.None; break; } + if (0 == WriteRequestPort(wm, MessageID.Command, 0, 1, cmd, CommTimeout)) { error = CommErr.None; break; } } if (error == CommErr.None) @@ -729,7 +765,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication byte[] cfg_0_3 = null; for (int j = 0; j < MaxCommRetries; j++) { - if (0 == ReadRequestPort(wm.MuxBoardNr, MessageID.Configuration, 0, 4, out cfg_0_3, CommTimeout)) + if (0 == ReadRequestPort(wm, MessageID.Configuration, 0, 4, out cfg_0_3, CommTimeout)) { wm.ConfigStruct.Update(0, cfg_0_3); if (wm.ConfigStruct.MeterState == MeterState.Active) @@ -742,7 +778,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication } } - ClosePort(wm.MuxBoardNr); /// Close RFID port + ClosePort(wm); /// Close RFID port return error; } @@ -758,7 +794,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication { if (wm.Disabled) return CommErr.Disabled; - if (OpenPort(wm.MuxBoardNr) != 0) return CommErr.OpenPort; /// Open RFID port + if (OpenPort(wm) != 0) return CommErr.OpenPort; /// Open RFID port CommErr error = CommErr.Read; @@ -766,7 +802,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication byte[] calib = null; for (int j = 0; j < MaxCommRetries; j++) { - if (0 == ReadRequestPort(wm.MuxBoardNr, MessageID.Calibration, 0, CalibrationStruct.Length, out calib, CommTimeout)) + if (0 == ReadRequestPort(wm, MessageID.Calibration, 0, CalibrationStruct.Length, out calib, CommTimeout)) { error = CommErr.None; wm.CalibrationStruct = CalibrationStruct.FromByteArray(calib); @@ -775,7 +811,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication } } - ClosePort(wm.MuxBoardNr); /// Close RFID port + ClosePort(wm); /// Close RFID port return error; } @@ -792,7 +828,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication { if (wm.Disabled) return CommErr.Disabled; - if (OpenPort(wm.MuxBoardNr) != 0) return CommErr.OpenPort; /// Open RFID port + if (OpenPort(wm) != 0) return CommErr.OpenPort; /// Open RFID port CommErr error = CommErr.Write; @@ -816,7 +852,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication byte[] data = new byte[2] { (byte)(newCalibFactor & 0x00FF), (byte)((newCalibFactor >> 8) & 0x00FF) }; for (int j = 0; j < MaxCommRetries; j++) { - if (0 == WriteRequestPort(wm.MuxBoardNr, MessageID.Calibration, 2, 2, data, CommTimeout)) + if (0 == WriteRequestPort(wm, MessageID.Calibration, 2, 2, data, CommTimeout)) { error = CommErr.None; wm.CalibrationStruct.Update(data, 2); @@ -832,7 +868,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication byte[] calib_2_3 = null; for (int j = 0; j < MaxCommRetries; j++) { - if (0 == ReadRequestPort(wm.MuxBoardNr, MessageID.Calibration, 2, 2, out calib_2_3, CommTimeout)) + if (0 == ReadRequestPort(wm, MessageID.Calibration, 2, 2, out calib_2_3, CommTimeout)) { error = CommErr.None; wm.CalibrationStruct.Update(calib_2_3, 2); @@ -842,7 +878,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication } } - ClosePort(wm.MuxBoardNr); /// Close RFID port + ClosePort(wm); /// Close RFID port return error; } @@ -862,7 +898,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication { if (wm.Disabled) return CommErr.Disabled; - if (OpenPort(wm.MuxBoardNr) != 0) return CommErr.OpenPort; /// Open RFID port + if (OpenPort(wm) != 0) return CommErr.OpenPort; /// Open RFID port CommErr error = CommErr.Write; @@ -871,7 +907,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication /// for (int j = 0; j < MaxCommRetries; j++) { - if (0 == WriteRequestPort(wm.MuxBoardNr, MessageID.MetrologyMemory, Q2CorrFactorsAddr, 2, wrData, CommTimeout)) { error = CommErr.None; break; } + if (0 == WriteRequestPort(wm, MessageID.MetrologyMemory, Q2CorrFactorsAddr, 2, wrData, CommTimeout)) { error = CommErr.None; break; } } /// Verify the correction factors @@ -883,7 +919,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication byte[] rdData = null; for (int j = 0; j < MaxCommRetries; j++) { - if ((0 == ReadRequestPort(wm.MuxBoardNr, MessageID.MetrologyMemory, Q2CorrFactorsAddr, 2, out rdData, CommTimeout)) && + if ((0 == ReadRequestPort(wm, MessageID.MetrologyMemory, Q2CorrFactorsAddr, 2, out rdData, CommTimeout)) && (rdData != null) && (rdData.Length == 2) && (rdData[0] == 0) && (rdData[1] == 0)) { error = CommErr.None; @@ -894,7 +930,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication } } - ClosePort(wm.MuxBoardNr); /// Close RFID port + ClosePort(wm); /// Close RFID port return error; } @@ -911,19 +947,19 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication { if (wm.Disabled) return CommErr.Disabled; - if (OpenPort(wm.MuxBoardNr) != 0) return CommErr.OpenPort; /// Open RFID port + if (OpenPort(wm) != 0) return CommErr.OpenPort; /// Open RFID port CommErr error = CommErr.Write; /// Write Q2 corrections double q2CorrectionFactor = wm.Q2CorrectionFactor(); - Byte q2CorrRFlow = (byte)((int)(q2CorrectionFactor / 2 + 0.5) & 0x000000FF); - Byte q2CorrLFlow = (byte)((int)(q2CorrectionFactor + 0.5) & 0x000000FF); + Byte q2CorrRFlow = (byte)((int)Math.Round(q2CorrectionFactor / 2) & 0x000000FF); + Byte q2CorrLFlow = (byte)((int)Math.Round(q2CorrectionFactor) & 0x000000FF); byte[] wrData = new byte[2] { q2CorrRFlow, q2CorrLFlow }; /// for (int j = 0; j < MaxCommRetries; j++) { - if (0 == WriteRequestPort(wm.MuxBoardNr, MessageID.MetrologyMemory, Q2CorrFactorsAddr, 2, wrData, CommTimeout)) { error = CommErr.None; break; } + if (0 == WriteRequestPort(wm, MessageID.MetrologyMemory, Q2CorrFactorsAddr, 2, wrData, CommTimeout)) { error = CommErr.None; break; } } if (error == CommErr.None) @@ -934,20 +970,19 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication byte[] rdData = null; for (int j = 0; j < MaxCommRetries; j++) { - if ((0 == ReadRequestPort(wm.MuxBoardNr, MessageID.MetrologyMemory, Q2CorrFactorsAddr, 2, out rdData, CommTimeout)) && + if ((0 == ReadRequestPort(wm, MessageID.MetrologyMemory, Q2CorrFactorsAddr, 2, out rdData, CommTimeout)) && (rdData != null) && (rdData.Length == 2) && (rdData[0] == q2CorrRFlow) && (rdData[1] == q2CorrLFlow)) { error = CommErr.None; - resultStr = string.Format("Grp{0}/Brd{1} Q2 factors: R-flow={2}, L-flow={3}", - wm.Group, wm.MuxBoardNr, q2CorrRFlow, q2CorrLFlow); - rfidDataLogger.Warn(resultStr); + resultStr = string.Format("Q2 factors: R-flow={0}, L-flow={1}", (SByte)q2CorrRFlow, (SByte)q2CorrLFlow); + rfidDataLogger.Warn(wm.Name + ": " + resultStr); wm.CurrentQ2Correction = q2CorrectionFactor; break; } } } - ClosePort(wm.MuxBoardNr); /// Close RFID port + ClosePort(wm); /// Close RFID port return error; } diff --git a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationSeq.cs b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationSeq.cs index 764afe9ae..5512b9542 100644 --- a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationSeq.cs +++ b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationSeq.cs @@ -92,6 +92,18 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication Bridge.OnTestCompleted(this, new TestCompletedEventArgs(tstRslt)); allResults.Info(TestResult2CsvLine(tstRslt)); /// Append the results to the CSV-file + for (int i = 0; i < Program.WMsCount; i++) + { + WaterMeters.iPerl.WaterMeter iPerl = ((sensPath.RegisterReaders != null) && (i < sensPath.RegisterReaders.Length)) + ? (sensPath.RegisterReaders[i] as WaterMeters.iPerl.WaterMeter) + : null; + if (iPerl != null) + { + iPerl.LastTestResult = tstRslt.Meters[i]; /// Save this water meter test result to iPerl WM + iPerl.NominalTestFlow = 500.0 * (double)(test.Qfrom + test.Qto); /// Ave. + convert to liter/hour + } + } + IList rList = new List(1); rList.Add(Event.Done); return rList; diff --git a/TestBenchFramework/BenchControl/WaterMeters/iPerl/WaterMeter.cs b/TestBenchFramework/BenchControl/WaterMeters/iPerl/WaterMeter.cs index c90444e77..08e6d6086 100644 --- a/TestBenchFramework/BenchControl/WaterMeters/iPerl/WaterMeter.cs +++ b/TestBenchFramework/BenchControl/WaterMeters/iPerl/WaterMeter.cs @@ -162,8 +162,16 @@ namespace TBF.BenchControl.WaterMeters.iPerl if (corrFactor < corrFactorLo) corrFactor = corrFactorLo; if (corrFactor > corrFactorHi) corrFactor = corrFactorHi; - log.WarnFormat("Q2 correction: WM={0}, LoLim={1}, HiLim={2}, calculated={3}, corrFactor={4}", - Name, corrFactorLo, corrFactorHi, origCalulatedCorrFactor, corrFactor); + log.WarnFormat("Q2 correction: {0}, corrFactor={7}, corrOrig={6} [{4}, {5}], error={3}% [{1}%, errLimHi={2}%]", + Name, + errLimitLo.ToString("F1"), + errLimitHi.ToString("F1"), + LastTestResult.VolumeErrorPct.ToString("F2"), + corrFactorLo.ToString("F1"), + corrFactorHi.ToString("F1"), + origCalulatedCorrFactor.ToString("F1"), + corrFactor.ToString("F1")); + return corrFactor; } diff --git a/TestBenchFramework/Properties/AssemblyInfo.cs b/TestBenchFramework/Properties/AssemblyInfo.cs index 3c010e519..62d67ebf9 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.5.102.1")] -[assembly: AssemblyFileVersion("1.5.102.1")] +[assembly: AssemblyVersion("1.5.103.1")] +[assembly: AssemblyFileVersion("1.5.103.1")]