Write given calibration factors function added, database almost implemented, version 1.5.88.

This commit is contained in:
Milan Hanajik 2015-08-21 14:30:47 +02:00
parent be1344034e
commit db8598579d
4 changed files with 198 additions and 47 deletions

View File

@ -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

View File

@ -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();
}
/// <summary>
@ -109,7 +103,7 @@ namespace TBF.BenchControl.DB.SensusOracle
/// <returns>Output string</returns>
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
/// <returns>File name</returns>
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<int> pruefindexes = new List<int>();
{
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();
}
}
}
/// <summary>
@ -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));
}

View File

@ -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++)
{

View File

@ -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")]