diff --git a/TODO.txt b/TODO.txt index 6d1bd7155..f8bec535b 100644 --- a/TODO.txt +++ b/TODO.txt @@ -1,7 +1,8 @@ iPerl: - MeterType v iPerl.WaterMeter zmenit na test parameter -- spravne naimplementovat SerialNr pre iPerl WM -- STOP nefunguje pocas communikacie +- STOP nefunguje pocas communikacie, rozne chyby v cykle !!! +- urobit purging sucasne s iPerlCommunication +- v iPerlCommunication ponukat stringy v drop-down menu - na Process obrazovke posunut stupacku a rezervoar uplne doprava - ked su Q3 part 1 a Q3 part 2 neda sa vybrat cez UI Q3 part 2 diff --git a/TestBenchFramework/BenchControl/DB/SensusOracle/Database.cs b/TestBenchFramework/BenchControl/DB/SensusOracle/Database.cs index 222d7c8fb..54d7ad774 100644 --- a/TestBenchFramework/BenchControl/DB/SensusOracle/Database.cs +++ b/TestBenchFramework/BenchControl/DB/SensusOracle/Database.cs @@ -18,7 +18,7 @@ namespace TBF.BenchControl.DB.SensusOracle private static readonly ILog log = LogManager.GetLogger(typeof(Database)); public override string ToString() { return string.Format("ResultsWriters.Basic({0})", Cfg.ToString(1)); } - readonly DatabaseCfg writerCfg; + readonly DatabaseCfg dbCfg; OracleConnection conn; /// Oracle database connection @@ -45,7 +45,7 @@ namespace TBF.BenchControl.DB.SensusOracle public Database(DatabaseCfg cfg) : base(cfg) { - writerCfg = cfg; + dbCfg = cfg; switch (cfg.Separator) { @@ -75,31 +75,25 @@ namespace TBF.BenchControl.DB.SensusOracle string oradb = "Data Source=STARA_TEST.WORLD;User Id=deltachef;Password=deltachef;"; conn = new OracleConnection(oradb); // C# - /// - /// Do something with the database to see if the connection works well - /// + /// + /// Do something with the database to see if the connection works well + /// conn.Open(); - OracleCommand cmd = new OracleCommand(); - cmd.Connection = conn; - cmd.CommandText = string.Format("select Standort from ANBIETER_SD where ANBID = 4"); + string rslt = "none"; + OracleCommand cmd = new OracleCommand("select Standort from ANBIETER_SD where ANBID = 4", conn); OracleDataReader dr = cmd.ExecuteReader(); - dr.Read(); + if (dr.Read()) rslt = dr.GetString(0); - string rslt; - if (dr.VisibleFieldCount > 0) - { - rslt = dr.GetString(0); - } - - conn.Dispose(); - } + conn.Close(); + } public void RunDeviceBefore() {} public void RunDeviceAfter() {} public void StopDevice() { + if (conn != null) conn.Dispose(); } /// @@ -109,7 +103,7 @@ namespace TBF.BenchControl.DB.SensusOracle /// Output string string ElSpaces(string item) { - if (writerCfg.EliminateSpaces) + if (dbCfg.EliminateSpaces) return item.Replace(" ", string.Empty); else return item; @@ -124,16 +118,16 @@ namespace TBF.BenchControl.DB.SensusOracle /// File name string GetFilename(DateTime time) { - string directory = writerCfg.DestinationPath; /// Ends with "\\"; + string directory = dbCfg.DestinationPath; /// Ends with "\\"; Directory.CreateDirectory(directory); - if (writerCfg.YearFolders) + if (dbCfg.YearFolders) { directory = string.Format("{0}{1}\\", directory, time.Year.ToString()); Directory.CreateDirectory(directory); } - if (writerCfg.MonthFolders) + if (dbCfg.MonthFolders) { string monthStr /* = now.Month.ToString("D2")*/; switch (time.Month) @@ -156,7 +150,7 @@ namespace TBF.BenchControl.DB.SensusOracle Directory.CreateDirectory(directory); } - if (writerCfg.DayFolders) + if (dbCfg.DayFolders) { directory = string.Format("{0}{1}\\", directory, time.Day.ToString("D2")); Directory.CreateDirectory(directory); @@ -265,9 +259,15 @@ namespace TBF.BenchControl.DB.SensusOracle } else { - conn.Open(); /// Open the Oracle database + /// Open the Oracle database + conn.Open(); - for (int wmNr = 0; wmNr < Program.WMsCount; wmNr++) /// wmNr is 0-based + //string oradb = "Data Source=STARA_TEST.WORLD;User Id=deltachef;Password=deltachef;"; + //conn = new OracleConnection(oradb); // C# + + //conn.Open(); + + for (int wmNr = 0; wmNr < Program.WMsCount; wmNr++) /// wmNr is 0-based { if (!unsortedResults[0].Meters[wmNr].Disabled) { @@ -277,7 +277,8 @@ namespace TBF.BenchControl.DB.SensusOracle } } - conn.Dispose(); /// Close the Oracle database + /// Close the Oracle database + conn.Close(); } } @@ -293,23 +294,157 @@ namespace TBF.BenchControl.DB.SensusOracle string pcbNr = unsortedResults[0].Meters[wmNr].SerialNr; - - OracleCommand cmd = new OracleCommand(); - cmd.Connection = conn; - cmd.CommandText = string.Format("select MAX_Pruefindex from VT_ZAHLER_PD where VT_Fernum = {0}", pcbNr); - - OracleDataReader dr = cmd.ExecuteReader(); - dr.Read(); - - string rslt; - if (dr.VisibleFieldCount > 0) + /// + /// Read a list of all prufindexes for a given PCB Number + /// + IList pruefindexes = new List(); { - rslt = dr.GetString(0); + OracleParameter parm = new OracleParameter(); + parm.OracleDbType = OracleDbType.Varchar2; + parm.Value = pcbNr; + + OracleCommand cmd1 = new OracleCommand("select MAX_Pruefindex from VT_ZAEHLER_PD where VT_Fernum = :1 AND ANBID = 4", conn); + cmd1.Parameters.Add(parm); + + OracleDataReader dr = cmd1.ExecuteReader(); + + while (dr.Read()) + { + pruefindexes.Add(dr.GetInt32(0)); + } } + /// + /// Determine MAX_Pruefindex + /// + int maxpruefindexLowPart = 0; + foreach (var v in pruefindexes) + { + if ((v % 100) > maxpruefindexLowPart) maxpruefindexLowPart = (v % 100); + } + int MAX_Pruefindex = 100 * dbCfg.TestBenchId + maxpruefindexLowPart + 1; - } + int Sekundaere_Adr; + int Hydr_Pruefung; + { + bool passed = true; + foreach (var r in results) + { + if (!r.DoNotEvaluate && !r.Meters[wmNr].Passed) passed = false; + } + + if (!passed) + { + /// Failed + Sekundaere_Adr = 0; + Hydr_Pruefung = 97; /// Hydr. tets failed, Pressure test passed + } + else + { + /// Passed + Sekundaere_Adr = 1; + if (maxpruefindexLowPart == 0) + Hydr_Pruefung = 96; + else + Hydr_Pruefung = 224; + } + } + + OracleParameter parm1 = new OracleParameter(); + parm1.OracleDbType = OracleDbType.Varchar2; + parm1.Value = "BBAATMXX"; + + OracleParameter parm2 = new OracleParameter(); + parm2.OracleDbType = OracleDbType.Varchar2; + parm2.Value = "IPBATMXX"; + + OracleParameter parm3 = new OracleParameter(); + parm3.OracleDbType = OracleDbType.Varchar2; + parm3.Value = pcbNr; + + OracleParameter parm4 = new OracleParameter(); + parm4.OracleDbType = OracleDbType.Int32; + parm4.Value = MAX_Pruefindex; + + OracleParameter parm5 = new OracleParameter(); + parm5.OracleDbType = OracleDbType.Int32; + parm5.Value = -1; + + OracleParameter parm6 = new OracleParameter(); + parm6.OracleDbType = OracleDbType.Int32; + parm6.Value = Sekundaere_Adr; + + OracleParameter parm7 = new OracleParameter(); + parm7.OracleDbType = OracleDbType.Int32; + parm7.Value = Hydr_Pruefung; + + OracleParameter parm8 = new OracleParameter(); + parm8.OracleDbType = OracleDbType.Int32; + parm8.Value = 6; + + OracleParameter parm9 = new OracleParameter(); + parm9.OracleDbType = OracleDbType.Int32; + parm9.Value = 4; /// = ANBID Stara Tura + + if (MAX_Pruefindex % 100 == 1) + { + OracleCommand cmd = new OracleCommand(); + cmd.Connection = conn; + cmd.CommandText = "INSERT INTO VT_ZAEHLER_PD(Auftragsnummer, VT_Identnummer, VT_Fernum, Max_Pruefindex, Zaehlernummer, Sekundaere_Adr, Hydr_Pruefung, ID_Benutzer, ANBID) VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9)"; + cmd.Parameters.Add(parm1); + cmd.Parameters.Add(parm2); + cmd.Parameters.Add(parm3); + cmd.Parameters.Add(parm4); + cmd.Parameters.Add(parm5); + cmd.Parameters.Add(parm6); + cmd.Parameters.Add(parm7); + cmd.Parameters.Add(parm8); + cmd.Parameters.Add(parm9); + int rowsUpdated = cmd.ExecuteNonQuery(); + } + else + { + //OracleCommand cmd = new OracleCommand(); + //cmd.Connection = conn; + //cmd.CommandText = "UPDATE VT_ZAEHLER_PD SET Auftragsnummer = :1, VT_Identnummer = :2, Max_Pruefindex = :4, Zaehlernummer = :5, Sekundaere_Adr= :6, Hydr_Pruefung= :7, ID_Benutzer= :8 WHERE VT_Fernum = :3 and ANBID = :9"; + //cmd.Parameters.Add(parm1); + //cmd.Parameters.Add(parm2); + //cmd.Parameters.Add(parm3); + //cmd.Parameters.Add(parm4); + //cmd.Parameters.Add(parm5); + //cmd.Parameters.Add(parm6); + //cmd.Parameters.Add(parm7); + //cmd.Parameters.Add(parm8); + //cmd.Parameters.Add(parm9); + //int rowsUpdated = cmd.ExecuteNonQuery(); + + OracleTransaction transaction = conn.BeginTransaction(); + try + { + OracleCommand cmd = new OracleCommand(); + cmd.Connection = conn; + cmd.CommandText = "UPDATE VT_ZAEHLER_PD SET Auftragsnummer = :1, VT_Identnummer = :2, Max_Pruefindex = :4, Zaehlernummer = :5, Sekundaere_Adr= :6, Hydr_Pruefung= :7, ID_Benutzer= :8 WHERE VT_Fernum = :3 and ANBID = :9"; + cmd.Parameters.Add(parm1); + cmd.Parameters.Add(parm2); + cmd.Parameters.Add(parm3); + cmd.Parameters.Add(parm4); + cmd.Parameters.Add(parm5); + cmd.Parameters.Add(parm6); + cmd.Parameters.Add(parm7); + cmd.Parameters.Add(parm8); + cmd.Parameters.Add(parm9); + + int rowsUpdated = cmd.ExecuteNonQuery(); + + transaction.Commit(); + } + catch + { + transaction.Rollback(); + } + } + } /// @@ -362,7 +497,7 @@ namespace TBF.BenchControl.DB.SensusOracle if (i < resultItems.Count - 1) { - if (!writerCfg.EliminateSpaces) + if (!dbCfg.EliminateSpaces) { writer.Write(new string(' ', columnWidths[i] - resultItems[i].ClmnHeaderText.Length + 3)); } @@ -395,7 +530,7 @@ namespace TBF.BenchControl.DB.SensusOracle if (i < resultItems.Count - 1) { - if (!writerCfg.EliminateSpaces) + if (!dbCfg.EliminateSpaces) { writer.Write(new string(' ', columnWidths[i] - text.Length + 3)); } @@ -465,7 +600,7 @@ namespace TBF.BenchControl.DB.SensusOracle if (i < resultItems.Count - 1) { - if (!writerCfg.EliminateSpaces) + if (!dbCfg.EliminateSpaces) { writer.Write(new string(' ', columnWidths[i] - resultItems[i].ClmnHeaderText.Length + 3)); } @@ -497,7 +632,7 @@ namespace TBF.BenchControl.DB.SensusOracle if (i < resultItems.Count - 1) { - if (!writerCfg.EliminateSpaces) + if (!dbCfg.EliminateSpaces) { writer.Write(new string(' ', columnWidths[i] - text.Length + 3)); } diff --git a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.cs b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.cs index 02e823347..7e6915f4b 100644 --- a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.cs +++ b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.cs @@ -521,7 +521,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication 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().Equals(WriteCalibrationFactorStr.ToLower())) error = WriteCalibrationFactor(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 @@ -805,8 +805,23 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication CommErr error = CommErr.Write; + UInt16 newCalibFactor = 3000; /// Default value + /// + if (activity.Length > WriteCalibrationFactorStr.Length) + { + string calibFactrorStr = activity.Substring(WriteCalibrationFactorStr.Length + 1); + UInt16 val; + if (UInt16.TryParse(calibFactrorStr, out val) && val > 0) + { + newCalibFactor = val; /// Update with specified value + } + } + else + { /// Write the calculated calibration factor - UInt16 newCalibFactor = wm.CalculateNewCalibFactor(wm.CalibrationFactor); + newCalibFactor = wm.CalculateNewCalibFactor(wm.CalibrationFactor); + } + byte[] data = new byte[2] { (byte)(newCalibFactor & 0x00FF), (byte)((newCalibFactor >> 8) & 0x00FF) }; for (int j = 0; j < MaxCommRetries; j++) { diff --git a/TestBenchFramework/Properties/AssemblyInfo.cs b/TestBenchFramework/Properties/AssemblyInfo.cs index c577dc68c..a05e41755 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.87.1")] -[assembly: AssemblyFileVersion("1.5.87.1")] +[assembly: AssemblyVersion("1.5.88.1")] +[assembly: AssemblyFileVersion("1.5.88.1")]