(1) Auto. wmTypeRev (2) IperlCheck t.meth. (3) Pruefindex, Q2corr. read from Ora.on start (4) VolStart/VolEnd written to Ora. bounded, (5) iPerlCommForm.ReadQ2Corr() bug fix (6) LU logging cleanup, etc, ver. 2.18.1140
This commit is contained in:
parent
dd8273798a
commit
32873ee2b0
@ -25,6 +25,14 @@ namespace Config.Entities
|
||||
Count
|
||||
}
|
||||
|
||||
public enum Counting
|
||||
{
|
||||
Arbitrary,
|
||||
Positive,
|
||||
Negative,
|
||||
Count
|
||||
}
|
||||
|
||||
public enum OptoHeadState
|
||||
{
|
||||
Disabled,
|
||||
|
||||
@ -93,6 +93,8 @@ namespace Results.Entities
|
||||
#if ORACLE_DB
|
||||
public virtual int Pruefindex { get; set; } /// Not mapped to DB !!! 0=unknown (saving to Oracle failed), >=1 ... pruefindex
|
||||
public virtual int HydrPruefung { get; set; } /// Not mapped to DB !!!
|
||||
public virtual int WMTypeRevision { get; set; } /// Not mapped to DB !!!
|
||||
public virtual object TestInfos { get; set; } /// SensusTestInfo[] array fetched at the beginning of the cycle, not mapped to DB !!!
|
||||
#endif
|
||||
public virtual WaterMeterData WaterMeterData { get; set; }
|
||||
public virtual Batch Batch { get; set; }
|
||||
@ -341,6 +343,12 @@ namespace Results.Entities
|
||||
public WaterMeter()
|
||||
{
|
||||
MeterTestRslts = new List<MeterTestRslt>();
|
||||
#if ORACLE_DB
|
||||
Pruefindex = 1;
|
||||
HydrPruefung = 0;
|
||||
WMTypeRevision = 0;
|
||||
TestInfos = null;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@ -394,6 +402,8 @@ namespace Results.Entities
|
||||
#if ORACLE_DB
|
||||
Pruefindex = src.Pruefindex;
|
||||
HydrPruefung = src.HydrPruefung;
|
||||
WMTypeRevision = src.WMTypeRevision;
|
||||
TestInfos = src.TestInfos;
|
||||
#endif
|
||||
foreach (var mtr in MeterTestRslts)
|
||||
{
|
||||
|
||||
@ -54,7 +54,6 @@ namespace Results.Entities
|
||||
|
||||
#if ORACLE_DB
|
||||
public virtual int WMTypeId { get; set; }
|
||||
public virtual int WMTypeRev { get; set; }
|
||||
#endif
|
||||
|
||||
public WaterMeterData()
|
||||
@ -111,7 +110,6 @@ namespace Results.Entities
|
||||
|
||||
#if ORACLE_DB
|
||||
if (WMTypeId != wmd.WMTypeId) return false;
|
||||
if (WMTypeRev != wmd.WMTypeRev) return false;
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -54,7 +54,6 @@ namespace Results.Mappings
|
||||
#endif
|
||||
#if ORACLE_DB
|
||||
Map(x => x.WMTypeId);
|
||||
Map(x => x.WMTypeRev);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("2.18.1122.0")]
|
||||
[assembly: AssemblyFileVersion("2.18.1122.0")]
|
||||
[assembly: AssemblyVersion("2.18.1140.0")]
|
||||
[assembly: AssemblyFileVersion("2.18.1140.0")]
|
||||
|
||||
86
TBF/BenchControl/Operations/LargeMessageBoxForm.Designer.cs
generated
Normal file
86
TBF/BenchControl/Operations/LargeMessageBoxForm.Designer.cs
generated
Normal file
@ -0,0 +1,86 @@
|
||||
///
|
||||
/// Copyright (c) 2019 Sensus Metering Systems
|
||||
///
|
||||
namespace TBF.BenchControl.Operations
|
||||
{
|
||||
partial class LargeMessageBoxForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.okButton = new System.Windows.Forms.Button();
|
||||
this.messageLabel = new System.Windows.Forms.Label();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// okButton
|
||||
//
|
||||
this.okButton.Font = new System.Drawing.Font("Verdana", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||
this.okButton.ForeColor = System.Drawing.Color.Black;
|
||||
this.okButton.Location = new System.Drawing.Point(452, 523);
|
||||
this.okButton.Name = "okButton";
|
||||
this.okButton.Size = new System.Drawing.Size(98, 63);
|
||||
this.okButton.TabIndex = 1;
|
||||
this.okButton.Text = "OK";
|
||||
this.okButton.UseVisualStyleBackColor = true;
|
||||
this.okButton.Click += new System.EventHandler(this.okButton_Click);
|
||||
//
|
||||
// messageLabel
|
||||
//
|
||||
this.messageLabel.AutoSize = true;
|
||||
this.messageLabel.Font = new System.Drawing.Font("Verdana", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||
this.messageLabel.Location = new System.Drawing.Point(34, 29);
|
||||
this.messageLabel.Name = "messageLabel";
|
||||
this.messageLabel.Size = new System.Drawing.Size(91, 23);
|
||||
this.messageLabel.TabIndex = 4;
|
||||
this.messageLabel.Text = "Message";
|
||||
//
|
||||
// LargeMessageBoxForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.Goldenrod;
|
||||
this.ClientSize = new System.Drawing.Size(1002, 617);
|
||||
this.Controls.Add(this.messageLabel);
|
||||
this.Controls.Add(this.okButton);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "LargeMessageBoxForm";
|
||||
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.TopMost = true;
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MessageBoxForm_FormClosing);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button okButton;
|
||||
private System.Windows.Forms.Label messageLabel;
|
||||
}
|
||||
}
|
||||
99
TBF/BenchControl/Operations/LargeMessageBoxForm.cs
Normal file
99
TBF/BenchControl/Operations/LargeMessageBoxForm.cs
Normal file
@ -0,0 +1,99 @@
|
||||
///
|
||||
/// Copyright (c) 2019 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using log4net;
|
||||
using TBF.Resources;
|
||||
|
||||
namespace TBF.BenchControl.Operations
|
||||
{
|
||||
public partial class LargeMessageBoxForm : Form
|
||||
{
|
||||
static readonly ILog log = LogManager.GetLogger(typeof(LargeMessageBoxForm));
|
||||
|
||||
/// Set to 'true' when the form closes
|
||||
public bool Completed { get { return completed; } }
|
||||
bool completed;
|
||||
|
||||
|
||||
public LargeMessageBoxForm(string message, Color backgroundColor)
|
||||
{
|
||||
InitializeComponent();
|
||||
//ControlBox = false;
|
||||
|
||||
Localize();
|
||||
messageLabel.Text = message;
|
||||
BackColor = backgroundColor;
|
||||
|
||||
float textWidth = Graphics.FromImage(new Bitmap(1, 1)).MeasureString(messageLabel.Text, messageLabel.Font).Width;
|
||||
int rqrdFormWidth = (int)textWidth + 80; /// Form width calculated from the text width
|
||||
|
||||
if (rqrdFormWidth > Width)
|
||||
{
|
||||
int shift = (rqrdFormWidth - Width) / 2;
|
||||
Width = rqrdFormWidth;
|
||||
okButton.Left += shift;
|
||||
}
|
||||
|
||||
completed = false;
|
||||
StartForceCloseHandler();
|
||||
}
|
||||
|
||||
void Localize()
|
||||
{
|
||||
okButton.Text = Strings.OkBtnText;
|
||||
}
|
||||
|
||||
private void okButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
completed = true;
|
||||
Close();
|
||||
}
|
||||
|
||||
private void MessageBoxForm_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
completed = true;
|
||||
}
|
||||
|
||||
#region Forced close handling
|
||||
|
||||
/// <summary>
|
||||
/// Used by CoverTest, AskYesNoOp and LargeMessageBoxOp.
|
||||
/// </summary>
|
||||
public void OnCloseThisForm(object sender, EventArgs args)
|
||||
{
|
||||
if (CloseThisFormHandler == null) return;
|
||||
try
|
||||
{
|
||||
CloseThisFormHandler(sender, null);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
log.Error("CloseThisFormHandler(...) failed", e);
|
||||
}
|
||||
}
|
||||
|
||||
public event EventHandler<EventArgs> CloseThisFormHandler;
|
||||
|
||||
public void StartForceCloseHandler()
|
||||
{
|
||||
CloseThisFormHandler += delegate(object sender, EventArgs args)
|
||||
{
|
||||
if (InvokeRequired)
|
||||
Invoke(new EventHandler<EventArgs>(OnForceClose), sender, args);
|
||||
else
|
||||
OnForceClose(sender, args);
|
||||
};
|
||||
}
|
||||
|
||||
private void OnForceClose(object sender, EventArgs args)
|
||||
{
|
||||
DialogResult = DialogResult.Cancel;
|
||||
Close();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
120
TBF/BenchControl/Operations/LargeMessageBoxForm.resx
Normal file
120
TBF/BenchControl/Operations/LargeMessageBoxForm.resx
Normal file
@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
76
TBF/BenchControl/Operations/LargeMessageBoxOp.cs
Normal file
76
TBF/BenchControl/Operations/LargeMessageBoxOp.cs
Normal file
@ -0,0 +1,76 @@
|
||||
///
|
||||
/// Copyright (c) 2019 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using TBF.BenchControl;
|
||||
using TBF.Resources;
|
||||
|
||||
namespace TBF.BenchControl.Operations
|
||||
{
|
||||
public class LargeMessageBoxOp : IOperation
|
||||
{
|
||||
LargeMessageBoxForm form;
|
||||
|
||||
string message;
|
||||
Color backColor;
|
||||
bool completed = false;
|
||||
|
||||
/// <returns>Reference to the operation</returns>
|
||||
public LargeMessageBoxOp()
|
||||
: this(Strings.Message)
|
||||
{
|
||||
}
|
||||
|
||||
public LargeMessageBoxOp(string message)
|
||||
: this (message, Color.Goldenrod)
|
||||
{
|
||||
}
|
||||
|
||||
public LargeMessageBoxOp(string message, Color backColor)
|
||||
{
|
||||
this.message = message;
|
||||
this.backColor = backColor;
|
||||
}
|
||||
|
||||
delegate void MessageBoxFormDlgt(LargeMessageBoxOp myRef);
|
||||
///
|
||||
void OpenFormDlg(LargeMessageBoxOp myRef)
|
||||
{
|
||||
myRef.form = new LargeMessageBoxForm(message, backColor);
|
||||
form.Show();
|
||||
}
|
||||
|
||||
/// <summary>Start this operation</summary>
|
||||
public void Start()
|
||||
{
|
||||
completed = false;
|
||||
Program.MainWnd.Invoke(new MessageBoxFormDlgt(OpenFormDlg), this);
|
||||
}
|
||||
|
||||
/// <summary>Run this operation</summary>
|
||||
/// <returns>Event.ResultsPrinted</returns>
|
||||
public Event Run()
|
||||
{
|
||||
if (completed || form.Completed)
|
||||
{
|
||||
completed = true;
|
||||
form = null;
|
||||
return Event.OK;
|
||||
}
|
||||
|
||||
return Event.None;
|
||||
}
|
||||
|
||||
/// <summary>Stop this operation</summary>
|
||||
public void Stop()
|
||||
{
|
||||
if (form != null)
|
||||
{
|
||||
form.OnCloseThisForm(this, null);
|
||||
form = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,5 +1,5 @@
|
||||
///
|
||||
/// Copyright (c) 2015-2018 Sensus Metering Systems
|
||||
/// Copyright (c) 2015-2019 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
@ -21,7 +21,7 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
public class Database : ComponentBase, IOperation, GenericDevices.IResultsWriter, GenericDevices.IStartInfoReader, Generic.IDevice
|
||||
{
|
||||
private static readonly ILog log = LogManager.GetLogger(typeof(Database));
|
||||
public override string ToString() { return string.Format("Sensus-Oracle-Database({0})", Cfg.ToString(1)); }
|
||||
public override string ToString() { return string.Format("{0}({1})", GetType().Namespace.Substring(17), Cfg.ToString(1)); }
|
||||
|
||||
const int Anbid_StaraTura = 4;
|
||||
|
||||
@ -58,10 +58,10 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
OracleConnection connection; /// Oracle database connection
|
||||
|
||||
///
|
||||
/// The following 3 variables are always update together
|
||||
/// The following 3 variables are always updated together
|
||||
///
|
||||
int id_WZTyp;
|
||||
int rev_WZTyp;
|
||||
int wmTypeId;
|
||||
int wmTypeRevision;
|
||||
SensusTestInfo[] completeTestInfos; /// Contains (1) range (90-100/100-110), (2) TBF test name, (3) string form of the flowId ...
|
||||
/// ... in addition to incomplete test info from Oracle
|
||||
|
||||
@ -136,19 +136,36 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
/// <param name="wmTypeId">Water meter type Id</param>
|
||||
/// <param name="wmTypeRevision">Water meter type revision</param>
|
||||
/// <returns>SensusTestInfos array</returns>
|
||||
SensusTestInfo[] GetMatchingTestInfo(OracleConnection conn, int wmTypeId, int wmTypeRevision)
|
||||
SensusTestInfo[] GetMatchingTestInfo(OracleConnection conn, int wmTypeId, out int wmTypeRevision)
|
||||
{
|
||||
///
|
||||
/// Read 'incomplete' TestInfo from Oracle database containing only flowId-s ad qBezeichnung-s
|
||||
///
|
||||
IList<SensusTestInfo> oraDbTinfos = new List<SensusTestInfo>();
|
||||
|
||||
OracleCommand cmd = new OracleCommand("SELECT PruefungsNr, PosFehlerKalt, QBezeichnung FROM VT_PRUEFPUNKT_SOLL_SD WHERE ANBID=4 AND ID_WZTyp=:1 AND Rev_WZTyp=:2", conn);
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = wmTypeId }); ///:1
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = wmTypeRevision }); ///:2
|
||||
///
|
||||
/// For a given 'wmTypeId' find the most recent active 'wmTypeRevision'
|
||||
///
|
||||
wmTypeRevision = -1;
|
||||
OracleCommand cmd = new OracleCommand("select REV_WZTYP from VT_WZTYP_SD where ANBID=4 and ID_WZTyp=:1 and AKTIV=:2", conn);
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = wmTypeId }); ///:1
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 1 }); ///:2
|
||||
///
|
||||
OracleDataReader dr = cmd.ExecuteReader();
|
||||
while (dr.Read())
|
||||
{
|
||||
wmTypeRevision = dr.GetInt32(0);
|
||||
}
|
||||
dr.Close();
|
||||
|
||||
if (wmTypeRevision == -1) return null; /// No 'wmTypeRevision' found
|
||||
|
||||
cmd = new OracleCommand("select PruefungsNr, PosFehlerKalt, QBezeichnung from VT_PRUEFPUNKT_SOLL_SD where ANBID=4 and ID_WZTyp=:1 and Rev_WZTyp=:2", conn);
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = wmTypeId }); ///:1
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = wmTypeRevision }); ///:2
|
||||
///
|
||||
dr = cmd.ExecuteReader();
|
||||
while (dr.Read())
|
||||
{
|
||||
int pruefungsNr = dr.GetInt32(0);
|
||||
double errLimHi = dr.GetDouble(1);
|
||||
@ -394,23 +411,31 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
/// <summary>
|
||||
/// Read start info of one water meter from the database
|
||||
/// </summary>
|
||||
/// <param name="wmNr">0-based water meter number</param>
|
||||
/// <param name="results">Sorted list of results to update</param>
|
||||
/// <param name="conn">Oracke DB connection</param>
|
||||
/// <param name="wm">Water meter entity</param>
|
||||
/// <returns>Retv.OK when successful, Retv.Error on error</returns>
|
||||
Retv ReadSingleWMfromDB(OracleConnection conn, Results.Entities.WaterMeter wm)
|
||||
{
|
||||
if (string.IsNullOrEmpty(wm.SerialNr)) return Retv.Error; /// No database activity possible w/o PCB number
|
||||
|
||||
try
|
||||
{
|
||||
if (completeTestInfos == null || (id_WZTyp != wm.WaterMeterData.WMTypeId) || (rev_WZTyp != wm.WaterMeterData.WMTypeRev))
|
||||
if (completeTestInfos == null || (wmTypeId == 0) || (wmTypeId != wm.WaterMeterData.WMTypeId))
|
||||
{
|
||||
SensusTestInfo[] ti = GetMatchingTestInfo(conn, wm.WaterMeterData.WMTypeId, wm.WaterMeterData.WMTypeRev);
|
||||
int wmTR;
|
||||
SensusTestInfo[] ti = GetMatchingTestInfo(conn, wm.WaterMeterData.WMTypeId, out wmTR);
|
||||
|
||||
if (ti != null)
|
||||
{
|
||||
/// All 3 updated together
|
||||
wmTypeId = wm.WaterMeterData.WMTypeId;
|
||||
wmTypeRevision = wmTR;
|
||||
completeTestInfos = ti;
|
||||
id_WZTyp = wm.WaterMeterData.WMTypeId;
|
||||
rev_WZTyp = wm.WaterMeterData.WMTypeRev;
|
||||
|
||||
/// Write to WaterMeter entity
|
||||
wm.TestInfos = ti;
|
||||
wm.WMTypeRevision = wmTR;
|
||||
Sequences.ProcessData.TestInfos = ti;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -466,7 +491,7 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
///
|
||||
log.ErrorFormat("Water meter {0} was not found in ORACLE database.", wm.SerialNr);
|
||||
dr.Close();
|
||||
return Retv.Error;
|
||||
return dbCfg.StartInfoIsRequired ? Retv.Error : Retv.OK;
|
||||
}
|
||||
dr.Close();
|
||||
|
||||
@ -496,7 +521,7 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
///
|
||||
cmd = new OracleCommand("select PRUEFINDEX, Q2CORRECTIONLEFT, Q2CORRECTIONRIGHT, ERRQ2 from VT_IP_ZAEHLER_PINDEX_PD where VT_FERNUM = :1 AND ANBID = 4", conn);
|
||||
/// pruefindex, Q2_correction_RL, Q2_correction_LR, Q2_error_before_correction
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "1", OracleDbType = OracleDbType.Varchar2, Value = wm.SerialNr });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.SerialNr });
|
||||
dr = cmd.ExecuteReader();
|
||||
while (dr.Read())
|
||||
{
|
||||
@ -516,8 +541,8 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
///
|
||||
/// testID, flow, rel.err., passed
|
||||
cmd = new OracleCommand("select PRUEFUNGSNR, Q_WZ, Q_FEHLER, Q_BEST from VT_PRUEFREIHE_IST_PD where VT_FERNUM = :1 AND PRUEFINDEX = :2 AND ANBID = 4", conn);
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "1", OracleDbType = OracleDbType.Varchar2, Value = wm.SerialNr });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "2", OracleDbType = OracleDbType.Int32, Value = 100 * testBenchID + maxPruefindex });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.SerialNr });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 100 * testBenchID + maxPruefindex });
|
||||
|
||||
dr = cmd.ExecuteReader();
|
||||
while (dr.Read())
|
||||
@ -557,7 +582,7 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
///
|
||||
/// Copy acquired data to WaterMeter object
|
||||
///
|
||||
wm.Pruefindex = maxPruefindex;
|
||||
wm.Pruefindex = maxPruefindex + 1; /// Increment the proefindex from Oracle so that it is the pruefindex of the current cycle
|
||||
log.InfoFormat("Data of water meter {0} successfully read from ORACLE database.", wm.SerialNr);
|
||||
log.DebugFormat(" MaxPruefindex = {0}", wm.Pruefindex);
|
||||
#if TURA_SPECIAL
|
||||
@ -728,15 +753,17 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
/// <param name="b">Batch</param>
|
||||
void SaveBatchData(OracleConnection conn, Results.Entities.Batch b)
|
||||
{
|
||||
if ((completeTestInfos == null) || (id_WZTyp != b.WaterMeters[0].WaterMeterData.WMTypeId) || (rev_WZTyp != b.WaterMeters[0].WaterMeterData.WMTypeRev))
|
||||
if ((wmTypeId != b.WaterMeters[0].WaterMeterData.WMTypeId) || (completeTestInfos == null) || (wmTypeRevision == 0))
|
||||
{
|
||||
SensusTestInfo[] ti = GetMatchingTestInfo(conn, b.WaterMeters[0].WaterMeterData.WMTypeId, b.WaterMeters[0].WaterMeterData.WMTypeRev);
|
||||
int wmTR = 0;
|
||||
SensusTestInfo[] ti = GetMatchingTestInfo(conn, b.WaterMeters[0].WaterMeterData.WMTypeId, out wmTR);
|
||||
|
||||
if (ti != null)
|
||||
{
|
||||
/// All 3 updated together
|
||||
completeTestInfos = ti;
|
||||
id_WZTyp = b.WaterMeters[0].WaterMeterData.WMTypeId;
|
||||
rev_WZTyp = b.WaterMeters[0].WaterMeterData.WMTypeRev;
|
||||
wmTypeId = b.WaterMeters[0].WaterMeterData.WMTypeId;
|
||||
wmTypeRevision = wmTR;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -744,6 +771,11 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
}
|
||||
}
|
||||
|
||||
if (completeTestInfos == null || wmTypeId == 0 || wmTypeRevision == 0)
|
||||
{
|
||||
throw new Exception("No matching test infos found");
|
||||
}
|
||||
|
||||
OracleCommand cmd = new OracleCommand("INSERT INTO VT_PRUEFREIHE_PD(ANBID, ID_Pruefstand, ID_WzPruefreihe, ID_WZTyp, " +
|
||||
"Rev_WZTyp, Rev_Pruefstand_WZTyp, StartDatumZeit, EndDatumZeit, Betriebsart, " +
|
||||
"QVzKontakt, FuellenBegDruck, DruckEvakVorne, DruckEvakHinten, DruckBeiAbpressen, " +
|
||||
@ -754,7 +786,7 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 18000 + b.TestBenchId });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = b.BatchNr });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = b.WaterMeters[0].WaterMeterData.WMTypeId });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = b.WaterMeters[0].WaterMeterData.WMTypeRev });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = wmTypeRevision });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 1 });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.TimeStamp, Value = b.StartTime });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.TimeStamp, Value = b.EndTime });
|
||||
@ -771,45 +803,85 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
|
||||
foreach (var testInfo in completeTestInfos)
|
||||
{
|
||||
Results.Entities.TestRslt tr = b.GetTestRslt(testInfo.TestName, 0);
|
||||
if ((-20 <= testInfo.PruefungsNr) && (testInfo.PruefungsNr <= 20)) /// LU PruefungsNr-s are between -20 and 20
|
||||
{
|
||||
Results.Entities.TestRslt tr = b.GetTestRslt(testInfo.TestName, 0);
|
||||
|
||||
if (tr == null) tr = b.GetTestRslt(testInfo.TestName, 1); /// TODO: Remove this workaround for large watermeters with multiple parts at Q3
|
||||
if (tr == null) continue;
|
||||
double Q_ist = (tr.VolumeMaster != 0) ? (tr.FlowVolume * tr.VolumeCTV / tr.VolumeMaster) : (double)tr.FlowVolume;
|
||||
if (tr == null) tr = b.GetTestRslt(testInfo.TestName, 1); /// TODO: Remove this workaround for large watermeters with multiple parts at Q3
|
||||
if (tr == null) continue;
|
||||
|
||||
OracleCommand cmd2 = new OracleCommand("INSERT INTO VT_PRUEFDURCHFLUSS_PD(" +
|
||||
"ANBID, ID_Pruefstand, ID_WzPruefreihe, PruefungsNr, " +
|
||||
"PVOL, PMasse, MinDurchfluss, MaxDurchfluss, " +
|
||||
"Q_ist, KFaktor, Q_VZ, F_VZ, RegelEinstellZeit, Drehzahl, " +
|
||||
"BeginnDruck_Vorne, BeginnDruck_Hinten, EndDruck_Vorne, EndDruck_Hinten, " +
|
||||
"TVWZ, IVWZ, Verwendeter_VZ, BeginnGewicht, EndGewicht)" +
|
||||
" VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14, :15, " +
|
||||
":16, :17, :18, :19, :20, :21, :22, :23)", conn);
|
||||
#if false
|
||||
OracleCommand cmd2 = new OracleCommand("INSERT INTO VT_PRUEFDURCHFLUSS_PD(ANBID, ID_Pruefstand, ID_WzPruefreihe, PruefungsNr, PVOL, PMasse, " +
|
||||
"MinDurchfluss, MaxDurchfluss, Q_ist, KFaktor, Q_VZ, F_VZ, RegelEinstellZeit, Drehzahl, BeginnDruck_Vorne, " +
|
||||
"BeginnDruck_Hinten, EndDruck_Vorne, EndDruck_Hinten, TVWZ, IVWZ, Verwendeter_VZ, BeginnGewicht, EndGewicht) " +
|
||||
"VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14, :15, :16, :17, :18, :19, :20, :21, :22, :23)", conn);
|
||||
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Anbid_StaraTura });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 18000 + b.TestBenchId });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = b.BatchNr });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = testInfo.PruefungsNr });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.l, tr.VolumeCTV) });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.kg, tr.MassEnd-tr.MassStart) });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.lph, tr.FlowMin) });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.lph, tr.FlowMax) });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.lph, Q_ist) });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = tr.ConstMaster });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.lph, tr.FlowVolume) });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = tr.ErrorMaster });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = (double)tr.FlowSetTime });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 }); /// TODO
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.bar, tr.PressUpStart) });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.bar, tr.PressDownStart) });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.bar, tr.PressUpEnd) });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.bar, tr.PressDownEnd) });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = tr.TestTime });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = tr.PulsesMaster });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 }); /// TODO
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.kg, tr.MassStart) });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.kg, tr.MassEnd) });
|
||||
cmd2.ExecuteNonQuery(); /// Returns nr. of updated rows
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Anbid_StaraTura });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 18000 + b.TestBenchId });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = b.BatchNr });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = testInfo.PruefungsNr });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.l, tr.VolumeCTV) });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.kg, tr.MassEnd - tr.MassStart) });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.lph, tr.FlowMin) });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.lph, tr.FlowMax) });
|
||||
double Q_ist = (tr.VolumeMaster != 0) ? (tr.FlowVolume * tr.VolumeCTV / tr.VolumeMaster) : (double)tr.FlowVolume;
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.lph, Q_ist) });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = tr.ConstMaster });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.lph, tr.FlowVolume) });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = tr.ErrorMaster });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = (double)tr.FlowSetTime });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 }); /// TODO
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.bar, tr.PressUpStart) });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.bar, tr.PressDownStart) });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.bar, tr.PressUpEnd) });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.bar, tr.PressDownEnd) });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = tr.TestTime });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = tr.PulsesMaster });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 }); /// TODO
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.kg, tr.MassStart) });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.kg, tr.MassEnd) });
|
||||
cmd2.ExecuteNonQuery(); /// Returns nr. of updated rows
|
||||
#else
|
||||
OracleCommand cmd2 = new OracleCommand("INSERT INTO VT_PRUEFDURCHFLUSS_PD(" +
|
||||
"ANBID, ID_Pruefstand, ID_WzPruefreihe, PruefungsNr, " +
|
||||
"PVOL, PMasse, MinDurchfluss, MaxDurchfluss, " +
|
||||
"Q_ist, KFaktor, Q_VZ, F_VZ, RegelEinstellZeit, Drehzahl, " +
|
||||
"BeginnDruck_Vorne, BeginnDruck_Hinten, EndDruck_Vorne, EndDruck_Hinten, " +
|
||||
"TVWZ, IVWZ, Verwendeter_VZ, BeginnGewicht, EndGewicht)" +
|
||||
" VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14, :15, " +
|
||||
":16, :17, :18, :19, :20, :21, :22, :23)", conn);
|
||||
OracleParameter parm;
|
||||
parm = new OracleParameter("ANBID", OracleDbType.Int32); parm.Value = Anbid_StaraTura; cmd2.Parameters.Add(parm); ///:1
|
||||
parm = new OracleParameter("ID_Pruefstand", OracleDbType.Int32); parm.Value = 18000 + b.TestBenchId; cmd2.Parameters.Add(parm); ///:2
|
||||
parm = new OracleParameter("ID_WzPruefreihe", OracleDbType.Int32); parm.Value = b.BatchNr; cmd2.Parameters.Add(parm); ///:3
|
||||
parm = new OracleParameter("PruefungsNr", OracleDbType.Int32); parm.Value = testInfo.PruefungsNr; cmd2.Parameters.Add(parm); ///:4
|
||||
///
|
||||
parm = new OracleParameter("PVOL", OracleDbType.Double); parm.Value = Units.ConvertTo(Unit.l, tr.VolumeCTV); cmd2.Parameters.Add(parm); ///:5
|
||||
parm = new OracleParameter("PMasse", OracleDbType.Double); parm.Value = Units.ConvertTo(Unit.kg, tr.MassEnd-tr.MassStart); cmd2.Parameters.Add(parm); ///:6
|
||||
parm = new OracleParameter("MinDurchfluss", OracleDbType.Double); parm.Value = Units.ConvertTo(Unit.lph, tr.FlowMin); cmd2.Parameters.Add(parm); ///:7
|
||||
parm = new OracleParameter("MaxDurchfluss", OracleDbType.Double); parm.Value = Units.ConvertTo(Unit.lph, tr.FlowMax); cmd2.Parameters.Add(parm); ///:8
|
||||
|
||||
double Q_ist = (tr.VolumeMaster != 0) ? (tr.FlowVolume * tr.VolumeCTV / tr.VolumeMaster) : (double)tr.FlowVolume;
|
||||
parm = new OracleParameter("Q_ist", OracleDbType.Double); parm.Value = Units.ConvertTo(Unit.lph, Q_ist); cmd2.Parameters.Add(parm); ///:9
|
||||
parm = new OracleParameter("KFaktor", OracleDbType.Double); parm.Value = tr.ConstMaster; cmd2.Parameters.Add(parm); ///:10
|
||||
parm = new OracleParameter("Q_VZ", OracleDbType.Double); parm.Value = Units.ConvertTo(Unit.lph, tr.FlowVolume); cmd2.Parameters.Add(parm); ///:11
|
||||
parm = new OracleParameter("F_VZ", OracleDbType.Double); parm.Value = tr.ErrorMaster; cmd2.Parameters.Add(parm); ///:12
|
||||
parm = new OracleParameter("RegelEinstellZeit", OracleDbType.Double); parm.Value = (double)tr.FlowSetTime; cmd2.Parameters.Add(parm); ///:13
|
||||
parm = new OracleParameter("Drehzahl", OracleDbType.Int32); parm.Value = 0; /* TODO */ cmd2.Parameters.Add(parm); ///:14
|
||||
///
|
||||
parm = new OracleParameter("BeginnDruck_Vorne", OracleDbType.Double); parm.Value = Units.ConvertTo(Unit.bar, tr.PressUpStart); cmd2.Parameters.Add(parm); ///:15
|
||||
parm = new OracleParameter("BeginnDruck_Hinten", OracleDbType.Double); parm.Value = Units.ConvertTo(Unit.bar, tr.PressDownStart); cmd2.Parameters.Add(parm); ///:16
|
||||
parm = new OracleParameter("EndDruck_Vorne", OracleDbType.Double); parm.Value = Units.ConvertTo(Unit.bar, tr.PressUpEnd); cmd2.Parameters.Add(parm); ///:17
|
||||
parm = new OracleParameter("EndDruck_Hinten", OracleDbType.Double); parm.Value = Units.ConvertTo(Unit.bar, tr.PressDownEnd); cmd2.Parameters.Add(parm); ///:18
|
||||
///
|
||||
parm = new OracleParameter("TVWZ", OracleDbType.Double); parm.Value = tr.TestTime; cmd2.Parameters.Add(parm); ///:19
|
||||
parm = new OracleParameter("IVWZ", OracleDbType.Int32); parm.Value = tr.PulsesMaster; cmd2.Parameters.Add(parm); ///:20
|
||||
parm = new OracleParameter("Verwendeter_VZ", OracleDbType.Int32); parm.Value = 0; /* TODO */ cmd2.Parameters.Add(parm); ///:21
|
||||
parm = new OracleParameter("BeginnGewicht", OracleDbType.Double); parm.Value = Units.ConvertTo(Unit.kg, tr.MassStart); cmd2.Parameters.Add(parm); ///:22
|
||||
parm = new OracleParameter("EndGewicht", OracleDbType.Double); parm.Value = Units.ConvertTo(Unit.kg, tr.MassEnd); cmd2.Parameters.Add(parm); ///:23
|
||||
cmd2.ExecuteNonQuery(); /// Returns nr. of updated rows
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
log.InfoFormat("Batch data saved, batchNr={0}", b.BatchNr);
|
||||
@ -885,41 +957,44 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
|
||||
foreach (var testInfo in completeTestInfos)
|
||||
{
|
||||
Results.Entities.TestData tData = wm.GetTestData(testInfo.TestName);
|
||||
Results.Entities.MeterTestRslt mtr;
|
||||
if (tData == null)
|
||||
if ((-20 <= testInfo.PruefungsNr) && (testInfo.PruefungsNr <= 20)) /// LU PruefungsNr-s are between -20 and 20
|
||||
{
|
||||
throw new Exception(string.Format("'{0}' test results missing, watermeter {1}", testInfo.TestName, wm.WMPosition));
|
||||
}
|
||||
else if (tData.Repeats == 1)
|
||||
{
|
||||
mtr = wm.GetMeterTestRslt(testInfo.TestName);
|
||||
if (mtr == null) throw new Exception(string.Format("'{0}' test results missing, watermeter {1}", testInfo.TestName, wm.WMPosition));
|
||||
}
|
||||
else
|
||||
{
|
||||
Results.Entities.MeterTestRslt firstMtr = wm.GetMeterTestRslt(Utils.TestTitle(tData, 1));
|
||||
if (firstMtr == null) throw new Exception(string.Format("'{0}' test results missing, watermeter {1}", Utils.TestTitle(tData, 1), wm.WMPosition));
|
||||
|
||||
mtr = new Results.Entities.MeterTestRslt();
|
||||
mtr.CopyContentFrom(firstMtr);
|
||||
mtr.TestRslt = firstMtr.TestRslt;
|
||||
mtr.WaterMeter = firstMtr.WaterMeter;
|
||||
for (int i = 2; i <= tData.Repeats; i++)
|
||||
Results.Entities.TestData tData = wm.GetTestData(testInfo.TestName);
|
||||
Results.Entities.MeterTestRslt mtr;
|
||||
if (tData == null)
|
||||
{
|
||||
Results.Entities.MeterTestRslt nextMtr = wm.GetMeterTestRslt(Utils.TestTitle(tData, i));
|
||||
if (nextMtr == null) throw new Exception(string.Format("'{0}' test results missing, watermeter {1}", Utils.TestTitle(tData, i), wm.WMPosition));
|
||||
|
||||
mtr.TestTime += nextMtr.TestTime;
|
||||
mtr.VolumeMeter += nextMtr.VolumeMeter;
|
||||
mtr.VolumeRef += nextMtr.VolumeRef;
|
||||
mtr.VolumeEnd = nextMtr.VolumeEnd;
|
||||
mtr.Passed = (mtr.Passed && nextMtr.Passed);
|
||||
throw new Exception(string.Format("'{0}' test results missing, watermeter {1}", testInfo.TestName, wm.WMPosition));
|
||||
}
|
||||
mtr.Error = Formulas.ErrorFromVolumes(mtr.VolumeMeter, mtr.VolumeRef);
|
||||
}
|
||||
else if (tData.Repeats == 1)
|
||||
{
|
||||
mtr = wm.GetMeterTestRslt(testInfo.TestName);
|
||||
if (mtr == null) throw new Exception(string.Format("'{0}' test results missing, watermeter {1}", testInfo.TestName, wm.WMPosition));
|
||||
}
|
||||
else
|
||||
{
|
||||
Results.Entities.MeterTestRslt firstMtr = wm.GetMeterTestRslt(Utils.TestTitle(tData, 1));
|
||||
if (firstMtr == null) throw new Exception(string.Format("'{0}' test results missing, watermeter {1}", Utils.TestTitle(tData, 1), wm.WMPosition));
|
||||
|
||||
SaveMeterTestResult(conn, mtr, testInfo.PruefungsNr, max_Pruefindex);
|
||||
mtr = new Results.Entities.MeterTestRslt();
|
||||
mtr.CopyContentFrom(firstMtr);
|
||||
mtr.TestRslt = firstMtr.TestRslt;
|
||||
mtr.WaterMeter = firstMtr.WaterMeter;
|
||||
for (int i = 2; i <= tData.Repeats; i++)
|
||||
{
|
||||
Results.Entities.MeterTestRslt nextMtr = wm.GetMeterTestRslt(Utils.TestTitle(tData, i));
|
||||
if (nextMtr == null) throw new Exception(string.Format("'{0}' test results missing, watermeter {1}", Utils.TestTitle(tData, i), wm.WMPosition));
|
||||
|
||||
mtr.TestTime += nextMtr.TestTime;
|
||||
mtr.VolumeMeter += nextMtr.VolumeMeter;
|
||||
mtr.VolumeRef += nextMtr.VolumeRef;
|
||||
mtr.VolumeEnd = nextMtr.VolumeEnd;
|
||||
mtr.Passed = (mtr.Passed && nextMtr.Passed);
|
||||
}
|
||||
mtr.Error = Formulas.ErrorFromVolumes(mtr.VolumeMeter, mtr.VolumeRef);
|
||||
}
|
||||
|
||||
SaveMeterTestResult(conn, mtr, testInfo.PruefungsNr, max_Pruefindex, wmTypeRevision);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -954,7 +1029,7 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
/// </summary>
|
||||
/// <param name="q">q = 0, 1, 2 or 3 (Adj., Q1, Q2, Q3)</param>
|
||||
/// <returns>Nr. of rows updated</returns>
|
||||
int SaveMeterTestResult(OracleConnection conn, Results.Entities.MeterTestRslt mtr, int pruefungsNr, int max_Pruefindex) ///
|
||||
int SaveMeterTestResult(OracleConnection conn, Results.Entities.MeterTestRslt mtr, int pruefungsNr, int max_Pruefindex, int wmTypeRevision)
|
||||
{
|
||||
double Q_wm = 3600.0 * mtr.VolumeMeter / mtr.TestTime; /// in [l/hour]
|
||||
double Q_wm_with_upper_bound = Math.Min(2 * 1000 * mtr.TestRslt.FlowVolume, Math.Max(0.0, Q_wm));
|
||||
@ -970,14 +1045,14 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = pruefungsNr });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Anbid_StaraTura });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = mtr.WaterMeter.WaterMeterData.WMTypeId });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = mtr.WaterMeter.WaterMeterData.WMTypeRev });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = wmTypeRevision });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 1 });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = Q_wm_with_upper_bound });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = Math.Min(100.0, Math.Max(-100.0, mtr.Error)) });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = mtr.Passed ? 1 : 0 });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = 0 }); /// mtr.VolumeStart
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = 0 }); /// mtr.VolumeEnd
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = Math.Max(-99999.999, Math.Min(mtr.VolumeStart, 99999.999)) });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = Math.Max(-99999.999, Math.Min(mtr.VolumeEnd, 99999.999)) });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = Math.Min(100.0, Math.Max(-100.0, mtr.KorrErrQ)) });
|
||||
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = Math.Min(100000, mtr.TestTime) });
|
||||
|
||||
@ -987,5 +1062,5 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
return retv;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
///
|
||||
/// Copyright (c) 2015-2018 Sensus Slovensko a.s.
|
||||
/// Copyright (c) 2015-2019 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Xml.Serialization;
|
||||
@ -39,6 +39,7 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
public int Baujahr; /// Written to the database
|
||||
public bool ReadStartInfo;
|
||||
public bool SaveResults;
|
||||
public bool StartInfoIsRequired;
|
||||
|
||||
|
||||
/// Private parameterless constructor invoked by all other (public) constructors
|
||||
@ -51,6 +52,7 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
Baujahr = 2015;
|
||||
ReadStartInfo = true;
|
||||
SaveResults = true;
|
||||
StartInfoIsRequired = false;
|
||||
}
|
||||
|
||||
public DatabaseCfg(IComponentFactory factory)
|
||||
@ -61,12 +63,14 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
|
||||
public string ToString(int i)
|
||||
{
|
||||
return string.Format("BenchId={0}, DBUsed={1}, Baujahr={2}, ReadStartInfo={3}, SaveResults={4}",
|
||||
return string.Format("Name={0}, BenchId={1}, DB={2}, Bjahr={3}, RdStartInfo={4}, SaveRslts={5}, StartInfoRqrd={6}",
|
||||
Name,
|
||||
TestBenchId,
|
||||
DBUsed,
|
||||
Baujahr,
|
||||
ReadStartInfo,
|
||||
SaveResults);
|
||||
SaveResults,
|
||||
StartInfoIsRequired);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -52,6 +52,7 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
baujahrTextBox.Text = config.Baujahr.ToString();
|
||||
readStartInfoCheckBox.Checked = config.ReadStartInfo;
|
||||
saveResultsCheckBox.Checked = config.SaveResults;
|
||||
startInfoIsRequiredCheckBox.Checked = config.StartInfoIsRequired;
|
||||
}
|
||||
|
||||
public void Unlock()
|
||||
@ -62,6 +63,7 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
baujahrTextBox.Enabled = true;
|
||||
readStartInfoCheckBox.Enabled = true;
|
||||
saveResultsCheckBox.Enabled = true;
|
||||
startInfoIsRequiredCheckBox.Enabled = true;
|
||||
}
|
||||
|
||||
public CfgUpdateFlags VerifyCfg(ref string message)
|
||||
@ -135,6 +137,11 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
config.SaveResults = saveResultsCheckBox.Checked;
|
||||
flags = CfgUpdateFlags.RestartRqrd;
|
||||
}
|
||||
if (startInfoIsRequiredCheckBox.Checked != config.StartInfoIsRequired)
|
||||
{
|
||||
config.StartInfoIsRequired = startInfoIsRequiredCheckBox.Checked;
|
||||
flags = CfgUpdateFlags.RestartRqrd;
|
||||
}
|
||||
|
||||
return flags;
|
||||
}
|
||||
|
||||
@ -42,6 +42,7 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
this.dbUsedLabel = new System.Windows.Forms.Label();
|
||||
this.baujahrTextBox = new System.Windows.Forms.TextBox();
|
||||
this.baujahrLabel = new System.Windows.Forms.Label();
|
||||
this.startInfoIsRequiredCheckBox = new System.Windows.Forms.CheckBox();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// nameTextBox
|
||||
@ -74,7 +75,7 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
//
|
||||
this.readStartInfoCheckBox.AutoSize = true;
|
||||
this.readStartInfoCheckBox.Enabled = false;
|
||||
this.readStartInfoCheckBox.Location = new System.Drawing.Point(111, 144);
|
||||
this.readStartInfoCheckBox.Location = new System.Drawing.Point(111, 136);
|
||||
this.readStartInfoCheckBox.Name = "readStartInfoCheckBox";
|
||||
this.readStartInfoCheckBox.Size = new System.Drawing.Size(95, 17);
|
||||
this.readStartInfoCheckBox.TabIndex = 15;
|
||||
@ -85,7 +86,7 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
//
|
||||
this.saveResultsCheckBox.AutoSize = true;
|
||||
this.saveResultsCheckBox.Enabled = false;
|
||||
this.saveResultsCheckBox.Location = new System.Drawing.Point(111, 167);
|
||||
this.saveResultsCheckBox.Location = new System.Drawing.Point(111, 159);
|
||||
this.saveResultsCheckBox.Name = "saveResultsCheckBox";
|
||||
this.saveResultsCheckBox.Size = new System.Drawing.Size(84, 17);
|
||||
this.saveResultsCheckBox.TabIndex = 16;
|
||||
@ -144,10 +145,22 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
this.baujahrLabel.TabIndex = 7;
|
||||
this.baujahrLabel.Text = "Baujahr";
|
||||
//
|
||||
// startInfoIsRequiredCheckBox
|
||||
//
|
||||
this.startInfoIsRequiredCheckBox.AutoSize = true;
|
||||
this.startInfoIsRequiredCheckBox.Enabled = false;
|
||||
this.startInfoIsRequiredCheckBox.Location = new System.Drawing.Point(110, 182);
|
||||
this.startInfoIsRequiredCheckBox.Name = "startInfoIsRequiredCheckBox";
|
||||
this.startInfoIsRequiredCheckBox.Size = new System.Drawing.Size(119, 17);
|
||||
this.startInfoIsRequiredCheckBox.TabIndex = 17;
|
||||
this.startInfoIsRequiredCheckBox.Text = "Start info is required";
|
||||
this.startInfoIsRequiredCheckBox.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// DatabaseCfgCtrl
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.startInfoIsRequiredCheckBox);
|
||||
this.Controls.Add(this.baujahrTextBox);
|
||||
this.Controls.Add(this.baujahrLabel);
|
||||
this.Controls.Add(this.dbUsedComboBox);
|
||||
@ -180,5 +193,6 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
private System.Windows.Forms.Label dbUsedLabel;
|
||||
private System.Windows.Forms.TextBox baujahrTextBox;
|
||||
private System.Windows.Forms.Label baujahrLabel;
|
||||
private System.Windows.Forms.CheckBox startInfoIsRequiredCheckBox;
|
||||
}
|
||||
}
|
||||
|
||||
@ -23,8 +23,6 @@ namespace TBF.BenchControl.Output.FileWriters.IperlLogger
|
||||
|
||||
WriterCfg writerCfg;
|
||||
|
||||
SensusTestInfo[] testInfos;
|
||||
|
||||
enum CurrentOp
|
||||
{
|
||||
None,
|
||||
@ -51,8 +49,6 @@ namespace TBF.BenchControl.Output.FileWriters.IperlLogger
|
||||
writerCfg = cfg as WriterCfg;
|
||||
currentOp = CurrentOp.None;
|
||||
|
||||
testInfos = SensusTestInfo.GetTestInfos(writerCfg.LogType);
|
||||
|
||||
log.Debug(this.ToString());
|
||||
}
|
||||
|
||||
@ -176,13 +172,22 @@ namespace TBF.BenchControl.Output.FileWriters.IperlLogger
|
||||
return Retv.Error; /// No logger
|
||||
}
|
||||
|
||||
|
||||
Results.Entities.WaterMeter wm0 = null;
|
||||
foreach (var m in batch.WaterMeters) if (m != null) { wm0 = m; break; }
|
||||
if (wm0 == null)
|
||||
{
|
||||
return Retv.Error; /// Not a single watermeter in the batch
|
||||
}
|
||||
|
||||
|
||||
|
||||
SensusTestInfo[] testInfos = wm0.TestInfos as SensusTestInfo[];
|
||||
if (testInfos == null)
|
||||
{
|
||||
return Retv.Error; /// No test infos
|
||||
}
|
||||
|
||||
|
||||
Results.Entities.WaterMeterData wmData = wm0.WaterMeterData;
|
||||
|
||||
Results.Entities.MeterTestRslt[] wm0trs = new Results.Entities.MeterTestRslt[testInfos.Length];
|
||||
@ -213,11 +218,11 @@ namespace TBF.BenchControl.Output.FileWriters.IperlLogger
|
||||
logger.WriteLine(string.Format("Qn={0}", wmData.Q3_Qn.ToString("F1", Program.AltCulture)));
|
||||
logger.WriteLine(string.Format("Impulsrate=1"));
|
||||
logger.WriteLine(string.Format("WZid={0}", wmData.WMTypeId));
|
||||
logger.WriteLine(string.Format("RevWzTyp={0}", wmData.WMTypeRev));
|
||||
logger.WriteLine(string.Format("RevWzTyp={0}", wm0.WMTypeRevision));
|
||||
logger.WriteLine(string.Format("RevPruefstandWzTyp=2"));
|
||||
|
||||
for (int j = 0; j < testInfos.Length; j++)
|
||||
{
|
||||
{
|
||||
string fId = testInfos[j].PruefungsNrStr;
|
||||
string qBz = testInfos[j].QBezeichnung;
|
||||
Results.Entities.MeterTestRslt wm0r = wm0trs[j];
|
||||
@ -225,7 +230,7 @@ namespace TBF.BenchControl.Output.FileWriters.IperlLogger
|
||||
|
||||
if (wm0r != null)
|
||||
{
|
||||
logger.WriteLine(string.Format("Durchfluss{0}={1}", fId, Units.ConvertTo(Unit.lph, wm0r.Qfrom()).ToString("F1", Program.AltCulture)));
|
||||
logger.WriteLine(string.Format("Durchfluss{0}={1}", fId, Units.ConvertTo(Unit.lph, (wm0r.Qfrom() + wm0r.Qto()) / 2).ToString("F1", Program.AltCulture)));
|
||||
logger.WriteLine(string.Format("Prüfzeit{0}={1}", fId, wm0r.TargetTime().ToString("F0")));
|
||||
logger.WriteLine(string.Format("Prüfbereich100_110{0}={1}", fId, (pb_100_110 ? 1 : 0)));
|
||||
logger.WriteLine(string.Format("PrüfbereichMin{0}={1}", fId, (pb_100_110 ? 100 : 90)));
|
||||
@ -233,8 +238,8 @@ namespace TBF.BenchControl.Output.FileWriters.IperlLogger
|
||||
logger.WriteLine(string.Format("QBezeichnung{0}={1}", fId, qBz));
|
||||
if (fId != "-1")
|
||||
{
|
||||
logger.WriteLine(string.Format("PosFehlergrenze{0}={1}", fId, wm0r.ErrLimHi().ToString("F1", Program.AltCulture)));
|
||||
logger.WriteLine(string.Format("NegFehlergrenze{0}={1}", fId, wm0r.ErrLimLo().ToString("F1", Program.AltCulture)));
|
||||
logger.WriteLine(string.Format("PosFehlergrenze{0}={1}", fId, (wm0r.ErrLimHi() - wm0r.Uncertainty()).ToString("F1", Program.AltCulture)));
|
||||
logger.WriteLine(string.Format("NegFehlergrenze{0}={1}", fId, (wm0r.ErrLimLo() + wm0r.Uncertainty()).ToString("F1", Program.AltCulture)));
|
||||
logger.WriteLine(string.Format("PosFehlergrenzeWarm{0}=0,0", fId));
|
||||
logger.WriteLine(string.Format("NegFehlergrenzeWarm{0}=0,0", fId));
|
||||
}
|
||||
|
||||
@ -17,7 +17,6 @@ namespace TBF.BenchControl.Output.FileWriters.IperlLogger
|
||||
|
||||
public IComponentCfgCtrl GetControl() { return new Configs.ParamsProvider.ComponentCfgCtrl(this, null); }
|
||||
|
||||
public LogType LogType;
|
||||
public string DestinationPath; /// Directory path into which the logs will be saved
|
||||
public bool YearFolders;
|
||||
public bool MonthFolders;
|
||||
@ -42,7 +41,6 @@ namespace TBF.BenchControl.Output.FileWriters.IperlLogger
|
||||
|
||||
public void InitializeAll()
|
||||
{
|
||||
LogType = LogType.Just_Q1Q2Q3;
|
||||
DestinationPath = Program.HomeDir + "Logs\\";
|
||||
YearFolders = true;
|
||||
MonthFolders = true;
|
||||
@ -51,7 +49,6 @@ namespace TBF.BenchControl.Output.FileWriters.IperlLogger
|
||||
|
||||
string[] paramNames = new string[]
|
||||
{
|
||||
"Log type",
|
||||
"Destination path",
|
||||
"Year folders",
|
||||
"Month folders",
|
||||
@ -64,14 +61,9 @@ namespace TBF.BenchControl.Output.FileWriters.IperlLogger
|
||||
{
|
||||
switch (i)
|
||||
{
|
||||
case 0:
|
||||
IList<string> list1 = new List<string>();
|
||||
for (LogType lt = 0; lt < LogType.Count; lt++) list1.Add(lt.ToString());
|
||||
return list1;
|
||||
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
IList<string> list2 = new List<string>();
|
||||
list2.Add(Strings.yes);
|
||||
list2.Add(Strings.no);
|
||||
@ -85,9 +77,8 @@ namespace TBF.BenchControl.Output.FileWriters.IperlLogger
|
||||
{
|
||||
if (i == -1)
|
||||
{
|
||||
return string.Format("{0}: LogType={1}, Dest.={2}, Y={3}, M={4}, D={5}",
|
||||
return string.Format("{0}: Dest.={1}, Y={2}, M={3}, D={4}",
|
||||
Name,
|
||||
LogType,
|
||||
DestinationPath,
|
||||
YearFolders,
|
||||
MonthFolders,
|
||||
@ -96,11 +87,10 @@ namespace TBF.BenchControl.Output.FileWriters.IperlLogger
|
||||
|
||||
switch (i)
|
||||
{
|
||||
case 0: return LogType.ToString();
|
||||
case 1: return DestinationPath;
|
||||
case 2: return YearFolders ? Strings.yes : Strings.no;
|
||||
case 3: return MonthFolders ? Strings.yes : Strings.no;
|
||||
case 4: return DayFolders ? Strings.yes : Strings.no;
|
||||
case 0: return DestinationPath;
|
||||
case 1: return YearFolders ? Strings.yes : Strings.no;
|
||||
case 2: return MonthFolders ? Strings.yes : Strings.no;
|
||||
case 3: return DayFolders ? Strings.yes : Strings.no;
|
||||
default: return string.Empty;
|
||||
}
|
||||
}
|
||||
@ -109,21 +99,10 @@ namespace TBF.BenchControl.Output.FileWriters.IperlLogger
|
||||
{
|
||||
switch (i)
|
||||
{
|
||||
case 0:
|
||||
for (LogType lt = 0; lt < LogType.Count; lt++)
|
||||
{
|
||||
if (lt.ToString() == strValue)
|
||||
{
|
||||
LogType = lt;
|
||||
return CfgUpdateFlags.RestartRqrd;
|
||||
}
|
||||
}
|
||||
return CfgUpdateFlags.None;
|
||||
|
||||
case 1: DestinationPath = strValue; return CfgUpdateFlags.RestartRqrd;
|
||||
case 2: YearFolders = (strValue == Strings.yes); return CfgUpdateFlags.RestartRqrd;
|
||||
case 3: MonthFolders = (strValue == Strings.yes); return CfgUpdateFlags.RestartRqrd;
|
||||
case 4: DayFolders = (strValue == Strings.yes); return CfgUpdateFlags.RestartRqrd;
|
||||
case 0: DestinationPath = strValue; return CfgUpdateFlags.RestartRqrd;
|
||||
case 1: YearFolders = (strValue == Strings.yes); return CfgUpdateFlags.RestartRqrd;
|
||||
case 2: MonthFolders = (strValue == Strings.yes); return CfgUpdateFlags.RestartRqrd;
|
||||
case 3: DayFolders = (strValue == Strings.yes); return CfgUpdateFlags.RestartRqrd;
|
||||
|
||||
default: return CfgUpdateFlags.None;
|
||||
}
|
||||
@ -136,16 +115,10 @@ namespace TBF.BenchControl.Output.FileWriters.IperlLogger
|
||||
switch (i)
|
||||
{
|
||||
case 0:
|
||||
for (LogType lt = 0; lt < LogType.Count; lt++)
|
||||
{
|
||||
if (lt.ToString() == strValue) return true;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
return true;
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
if (strValue == Strings.yes || strValue == Strings.no) return true;
|
||||
break;
|
||||
default:
|
||||
@ -159,7 +132,6 @@ namespace TBF.BenchControl.Output.FileWriters.IperlLogger
|
||||
|
||||
void CopyContentTo(WriterCfg prms)
|
||||
{
|
||||
prms.LogType = this.LogType;
|
||||
prms.DestinationPath = this.DestinationPath;
|
||||
prms.YearFolders = this.YearFolders;
|
||||
prms.MonthFolders = this.MonthFolders;
|
||||
|
||||
@ -8,8 +8,9 @@ namespace TBF.BenchControl.Output
|
||||
{
|
||||
public enum LogType
|
||||
{
|
||||
Auto,
|
||||
Just_Q1Q2Q3,
|
||||
Just_Q1Q2Q2adjQ3, /// Greece
|
||||
Just_Q1Q2Q2adjQ3, /// Greece
|
||||
Just_Q1Q2__Q3,
|
||||
DEWA, /// Q1, Q2adj, Q2, Q3, Q4
|
||||
Suez, /// two directions
|
||||
@ -56,9 +57,9 @@ namespace TBF.BenchControl.Output
|
||||
/// <returns>true when two test info-s are compatible</returns>
|
||||
public static bool AreCompatible(IList<SensusTestInfo> oraDbTInfo, SensusTestInfo[] myCompleteTInfo)
|
||||
{
|
||||
if (oraDbTInfo.Count != myCompleteTInfo.Length) return false;
|
||||
if ((oraDbTInfo == null) || (myCompleteTInfo == null) || (oraDbTInfo.Count > myCompleteTInfo.Length)) return false;
|
||||
|
||||
for (int i = 0; i < myCompleteTInfo.Length; i++)
|
||||
for (int i = 0; i < oraDbTInfo.Count; i++)
|
||||
{
|
||||
if (oraDbTInfo[i].PruefungsNr != myCompleteTInfo[i].PruefungsNr)
|
||||
{
|
||||
@ -84,15 +85,15 @@ namespace TBF.BenchControl.Output
|
||||
{
|
||||
switch (logType)
|
||||
{
|
||||
default:
|
||||
case LogType.Just_Q1Q2Q3:
|
||||
|
||||
return new SensusTestInfo[]
|
||||
{
|
||||
new SensusTestInfo(-1, "-1", "Just", Range.R90_100, "Adjustment"),
|
||||
new SensusTestInfo( 1, "01", "Q1", Range.R100_110, "Q1"),
|
||||
new SensusTestInfo( 2, "02", "Q2", Range.R100_110, "Q2"),
|
||||
new SensusTestInfo( 3, "03", "Q3", Range.R90_100, "Q3"),
|
||||
new SensusTestInfo( -1, "-1", "Just", Range.R90_100, "Adjustment"),
|
||||
new SensusTestInfo( 1, "01", "Q1", Range.R100_110, "Q1"),
|
||||
new SensusTestInfo( 2, "", "Q2", Range.R100_110, "Q2"),
|
||||
new SensusTestInfo( 3, "03", "Q3", Range.R90_100, "Q3"),
|
||||
new SensusTestInfo( 99, "02", "Q2", Range.R100_110, "Q2adj"), /// <-- This is to generate opto-data
|
||||
};
|
||||
|
||||
case LogType.Just_Q1Q2Q2adjQ3:
|
||||
@ -110,10 +111,11 @@ namespace TBF.BenchControl.Output
|
||||
|
||||
return new SensusTestInfo[]
|
||||
{
|
||||
new SensusTestInfo(-1, "-1", "Just", Range.R90_100, "Adjustment"),
|
||||
new SensusTestInfo( 1, "01", "Q1", Range.R100_110, "Q1"),
|
||||
new SensusTestInfo( 2, "02", "Q2", Range.R100_110, "Q2"),
|
||||
new SensusTestInfo( 5, "05", "Q3", Range.R90_100, "Q3"),
|
||||
new SensusTestInfo( -1, "-1", "Just", Range.R90_100, "Adjustment"),
|
||||
new SensusTestInfo( 1, "01", "Q1", Range.R100_110, "Q1"),
|
||||
new SensusTestInfo( 2, "", "Q2", Range.R100_110, "Q2"),
|
||||
new SensusTestInfo( 5, "05", "Q3", Range.R90_100, "Q3"),
|
||||
new SensusTestInfo( 99, "02", "Q2", Range.R100_110, "Q2adj"), /// <-- This is to generate opto-data
|
||||
};
|
||||
|
||||
case LogType.DEWA:
|
||||
@ -176,7 +178,16 @@ namespace TBF.BenchControl.Output
|
||||
new SensusTestInfo(11, "11", "Q3", Range.R90_100, "Q3"),
|
||||
new SensusTestInfo(12, "12", "Q4", Range.R90_100, "Q4"),
|
||||
};
|
||||
|
||||
default:
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return string.Format("{0}-'{1}'-'{2}'-'{3}'-{4}", PruefungsNr, PruefungsNrStr, QBezeichnung, TestName, Range);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
///
|
||||
/// Copyright (c) 2013-2018 Sensus Slovensko a.s.
|
||||
/// Copyright (c) 2013-2019 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
@ -533,11 +533,11 @@ namespace TBF.BenchControl.Sequences
|
||||
Program.MainWnd.Invoke(new iPerlCommFormDlgt(OpenIPerlCommForm), new object[] { this, simultWithPurgingCfg, simultWithPurgingTests, simultWithPurgingParams });
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Purging @ cycle start
|
||||
///
|
||||
Event evt = Transition(purgeBegin, TransitionContext.PurgeBegin);
|
||||
///
|
||||
switch (evt)
|
||||
{
|
||||
case Event.Error:
|
||||
@ -550,11 +550,35 @@ namespace TBF.BenchControl.Sequences
|
||||
break;
|
||||
}
|
||||
|
||||
if (simultWithPurgingCount > 0)
|
||||
///
|
||||
/// Prepare reading start info from the DB @ cycle start
|
||||
///
|
||||
State readingStartInfo = State.Create("MainSeq : Reading start info from DB");
|
||||
///
|
||||
string[] resultWriters = StateMachine.Procedure.ResultsWriter.Split(new char[] { '~' });
|
||||
foreach (var writerName in resultWriters)
|
||||
{
|
||||
IStartInfoReader infoReader = TbfComponents.FindComponent(writerName) as IStartInfoReader;
|
||||
if (infoReader != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
IOperation op = infoReader.ReadStartInfoOp(ProcessData.BatchRslts.WaterMeters);
|
||||
if (op != null) readingStartInfo.AddOperation(op);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
Bridge.OnError(this, string.Format(Strings.Component_0_crashed_Results_not_saved, writerName));
|
||||
log.FatalFormat("StartInfoReader {0} crashed: {1}", writerName, exc.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///
|
||||
/// Wait until iPerl communications or S/N data entry are completed
|
||||
///
|
||||
if ((simultWithPurgingCount > 0) || (readingStartInfo.Operations.Count > 0))
|
||||
{
|
||||
///
|
||||
/// Wait until iPerl communications are completed
|
||||
///
|
||||
bool completed = !(modelessDlg is GenericDevices.IHasCompleted)
|
||||
|| (modelessDlg as GenericDevices.IHasCompleted).Completed;
|
||||
if (!completed)
|
||||
@ -582,27 +606,6 @@ namespace TBF.BenchControl.Sequences
|
||||
///
|
||||
/// Read start info from the DB @ cycle start
|
||||
///
|
||||
State readingStartInfo = State.Create("MainSeq : Reading start info from DB");
|
||||
///
|
||||
string[] resultWriters = StateMachine.Procedure.ResultsWriter.Split(new char[] { '~' });
|
||||
foreach (var writerName in resultWriters)
|
||||
{
|
||||
IStartInfoReader infoReader = TbfComponents.FindComponent(writerName) as IStartInfoReader;
|
||||
if (infoReader != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
IOperation op = infoReader.ReadStartInfoOp(ProcessData.BatchRslts.WaterMeters);
|
||||
if (op != null) readingStartInfo.AddOperation(op);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
Bridge.OnError(this, string.Format(Strings.Component_0_crashed_Results_not_saved, writerName));
|
||||
log.FatalFormat("StartInfoReader {0} crashed: {1}", writerName, exc.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
///
|
||||
if (readingStartInfo.Operations.Count > 0)
|
||||
{
|
||||
readingStartInfo.AddOperation(checkUiOp).EnterState();
|
||||
@ -619,6 +622,9 @@ namespace TBF.BenchControl.Sequences
|
||||
log.ErrorFormat("StartInfoReader failed to read data from the database");
|
||||
/// TODO: Message for an operator? Error?
|
||||
}
|
||||
|
||||
/// Redraw on-screen results
|
||||
Bridge.OnTestCompleted(this, new TestCompletedEventArgs(string.Empty, null));
|
||||
}
|
||||
|
||||
|
||||
@ -1523,7 +1529,6 @@ namespace TBF.BenchControl.Sequences
|
||||
HeatMeter = heatMeters,
|
||||
#if ORACLE_DB
|
||||
WMTypeId = 0, /// <--------------------------- TODO
|
||||
WMTypeRev = 0,
|
||||
#endif
|
||||
};
|
||||
}
|
||||
@ -1601,7 +1606,6 @@ namespace TBF.BenchControl.Sequences
|
||||
wm.Disabled = false;
|
||||
#if ORACLE_DB
|
||||
wm.WaterMeterData.WMTypeId = wm2.WaterMeterData.WMTypeId;
|
||||
wm.WaterMeterData.WMTypeRev = wm2.WaterMeterData.WMTypeRev;
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
|
||||
@ -9,6 +9,7 @@ namespace TBF.BenchControl.Sequences
|
||||
public static IBenchInfo BenchInfo;
|
||||
public static IErrorFlags ErrorFlagsComp;
|
||||
public static Output.DB.SensusOracle.Database OracleDB;
|
||||
public static Output.SensusTestInfo[] TestInfos;
|
||||
|
||||
public static FloatBox AmbTemp = new FloatBox() { Name = "Ambient Temperature", Format = "F1" }; /// [Celsius]
|
||||
public static FloatBox AmbPress = new FloatBox() { Name = "Ambient Pressure", Format = "F0", Factor = 1000 }; /// [bar], printed by ToString() in [mbar]
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
///
|
||||
/// Copyright (c) 2013-2015 Sensus Metering Systems
|
||||
/// Copyright (c) 2013-2019 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
@ -63,7 +63,6 @@ namespace TBF.BenchControl
|
||||
Operations = new List<IOperation>();
|
||||
foreach (var op in PermanentOperations) Operations.Add(op);
|
||||
Transitions = new List<Transition>();
|
||||
log.Debug(this.ToString());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -172,7 +171,9 @@ namespace TBF.BenchControl
|
||||
/// </summary>
|
||||
public State EnterState()
|
||||
{
|
||||
StopAndStartOperations(State.currentState, this);
|
||||
log.Debug(this.ToString());
|
||||
|
||||
StopAndStartOperations(State.currentState, this);
|
||||
State.currentState = this;
|
||||
UiBridge.Bridge.OnStateChanged(this, State.currentState.ToString());
|
||||
return this;
|
||||
|
||||
@ -188,6 +188,8 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
|
||||
rfidDataLogger.InfoFormat("{0}: ReadRequestPort({1},2,2,...) returned {2} {3}", name, messageID, retv, (retv != 0) ? "!" : string.Format("Cal={0}", buf[0] + 256 * buf[1]));
|
||||
else if ((messageID == MessageID.Calibration) && (offset == 34) && (lenght == 2))
|
||||
rfidDataLogger.InfoFormat("{0}: ReadRequestPort({1},34,2,...) returned {2} {3}", name, messageID, retv, (retv != 0) ? "!" : string.Format("CalLNA={0}", buf[0] + 256 * buf[1]));
|
||||
else if ((messageID == MessageID.MetrologyMemory) && (offset == Q2CorrFactorsAddr) && (lenght == 2))
|
||||
rfidDataLogger.InfoFormat("{0}: ReadRequestPort({1},6264,2,...) returned {2} {3}", name, messageID, retv, (retv != 0) ? "!" : string.Format("LR={0} RL={1}", (int)buf[0], (int)buf[1]));
|
||||
else
|
||||
rfidDataLogger.InfoFormat("{0}: ReadRequestPort({1}, {2}, {3}, ...) returned {4} {5}", name, messageID, offset, lenght, retv, (retv != 0) ? "!" : "");
|
||||
|
||||
@ -1662,6 +1664,13 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
|
||||
resultStr = "Q2 corrections successfully read";
|
||||
ihead.Q2CorrLR = rdData[0];
|
||||
ihead.Q2CorrRL = rdData[1];
|
||||
#if IPERL
|
||||
if (wm != null)
|
||||
{
|
||||
wm.Q2CorrLR = ihead.Q2CorrLR;
|
||||
wm.Q2CorrRL = ihead.Q2CorrRL;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
ClosePort(threadId, ihead); /// Close RFID port
|
||||
@ -2330,7 +2339,6 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
|
||||
{
|
||||
#if ORACLE_DB
|
||||
meterRslt.WaterMeter.WaterMeterData.WMTypeId = iperlHeads[i].WMType_ID;
|
||||
meterRslt.WaterMeter.WaterMeterData.WMTypeRev = iperlHeads[i].WMType_Rev;
|
||||
#endif
|
||||
meterRslt.WaterMeter.SerialNr = iperlHeads[i].SerialNr;
|
||||
meterRslt.Passed = (!iperlHeads[i].CommFailed && !iperlHeads[i].Disabled);
|
||||
|
||||
@ -68,6 +68,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
|
||||
retVal.Add(iPerlCommunicationForm.Write2HzCorrectionStr);
|
||||
retVal.Add(string.Format("{0} if enabled", iPerlCommunicationForm.ReadConfigurationStr));
|
||||
retVal.Add(string.Format("{0} 80", iPerlCommunicationForm.SetTestModeStr));
|
||||
retVal.Add("iPerl_check pruefindex q2factors direction");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@ -58,7 +58,8 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
|
||||
|
||||
const string Q2correctedFromCmd = "q2 corrected from ";
|
||||
const string Q2correctionCheckCmd = "q2 correction check ";
|
||||
const string Hz2correctedFromCmd = "2Hz corrected from ";
|
||||
const string IperlCheckCmd = "iperl_check ";
|
||||
const string Hz2correctedFromCmd = "2Hz corrected from ";
|
||||
|
||||
if (testParams.Activity.ToLower().Contains(Q2correctedFromCmd))
|
||||
{
|
||||
@ -99,6 +100,96 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
|
||||
rList.Add(Event.Done);
|
||||
return rList;
|
||||
}
|
||||
else if (testParams.Activity.ToLower().Contains(IperlCheckCmd))
|
||||
{
|
||||
TestProgressEventArgs.SetEstimatedTimes(new int[] { 0, 0, 0, 30, 0, 30, 0, 0 });
|
||||
Bridge.OnTestProgress(this, new TestProgressEventArgs(test, Config.Entities.Progress.JustStarted));
|
||||
Bridge.OnTestProgress(this, new TestProgressEventArgs(test, Config.Entities.Progress.FlowSetting));
|
||||
|
||||
string[] args = testParams.Activity.Substring(IperlCheckCmd.Length).Split(new char[] { ' ' });
|
||||
|
||||
int maxTestIndex = (ProcessData.BenchInfo is BenchInfo.iPerl.Component)
|
||||
? (ProcessData.BenchInfo as BenchInfo.iPerl.Component).MaxTestIndex
|
||||
: int.MaxValue;
|
||||
|
||||
Results.Entities.TestRslt tstRslt = ProcessData.BatchRslts.GetTestRslt(test.Name, 0);
|
||||
|
||||
bool anyError = false;
|
||||
string message = string.Empty;
|
||||
|
||||
for (int i = 0; i < BatchRslts.WMPositionsCount; i++)
|
||||
{
|
||||
Results.Entities.WaterMeter wm = BatchRslts.WaterMeters[i];
|
||||
Results.Entities.MeterTestRslt mtr = ProcessData.BatchRslts.GetMeterTestRslt(test.Name, i, CompoundMeterId.Single);
|
||||
|
||||
if ((wm != null) && (mtr != null))
|
||||
{
|
||||
bool anyMeterError = false;
|
||||
foreach (var arg in args)
|
||||
{
|
||||
#if ORACLE_DB
|
||||
if (arg.ToLower() == "pruefindex")
|
||||
{
|
||||
if (wm.Pruefindex > maxTestIndex)
|
||||
{
|
||||
anyMeterError = true;
|
||||
anyError = true;
|
||||
message += string.Format("Príliš veľa opakovaní testu vodomera {0}{1}", i, Environment.NewLine);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if TURA_SPECIAL
|
||||
if (arg.ToLower() == "q2factors")
|
||||
{
|
||||
if ((wm.ProdQ2CorrRL != wm.Q2CorrRL) || (wm.ProdQ2CorrLR != wm.Q2CorrLR))
|
||||
{
|
||||
anyMeterError = true;
|
||||
anyError = true;
|
||||
message += string.Format("Q2 korekčné faktory vodomera {0} nesedia{1}", i, Environment.NewLine);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if (arg.ToLower() == "direction")
|
||||
{
|
||||
//if (wm.Pruefindex > maxTestIndex)
|
||||
//{
|
||||
// anyMeterError = true;
|
||||
// anyError = true;
|
||||
// message += string.Format("Príliš veľa opakovaní testu vodomera {0}{1}", i, Environment.NewLine);
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
mtr.TestDone = true;
|
||||
mtr.Passed = !anyMeterError;
|
||||
}
|
||||
}
|
||||
|
||||
Bridge.OnTestProgress(this, new TestProgressEventArgs(test, Config.Entities.Progress.Completed));
|
||||
Bridge.OnTestCompleted(this, new TestCompletedEventArgs(test.Name, ProcessData.BatchRslts.GetTestRslt(test.Name, 0)));
|
||||
allResults.Info(TestResult2CsvLine(test.Name, 0)); /// Append the results to the CSV-file
|
||||
|
||||
IList<Event> rList = new List<Event>(1);
|
||||
|
||||
if (anyError)
|
||||
{
|
||||
State.Create("iPerlCommunicationSeq : Show check result")
|
||||
.AddOperation(new Operations.LargeMessageBoxOp(message))
|
||||
.EnterState();
|
||||
do { e = StateMachine.WaitRunDevsRunOps(); }
|
||||
while (!e.Contains(Event.OK));
|
||||
|
||||
Bridge.OnError(this, string.Format("Niečo nie je v poriadku !"));
|
||||
|
||||
rList.Add(Event.UiCmdStop);
|
||||
}
|
||||
else
|
||||
{
|
||||
rList.Add(Event.Done);
|
||||
}
|
||||
|
||||
return rList;
|
||||
}
|
||||
//else if (testParams.Activity.ToLower().Contains(Hz2correctedFromCmd))
|
||||
//{
|
||||
// TestProgressEventArgs.SetEstimatedTimes(new int[] { 0, 0, 0, 30, 0, 30, 0, 0 });
|
||||
|
||||
@ -109,7 +109,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead
|
||||
/// Verify whether the flow direction is correct
|
||||
/// </summary>
|
||||
/// <returns>OptoHeadState.OptoAndDirOK, OptoHeadState.OptoNok or OptoHeadState.DirNok</returns>
|
||||
public OptoHeadState CheckFlowDirection(FlowDir flowDir)
|
||||
public OptoHeadState CheckFlowDirection(Counting counting)
|
||||
{
|
||||
if (!AreFifoDataValid()) return OptoHeadState.OptoNok;
|
||||
|
||||
@ -123,11 +123,11 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead
|
||||
if (slope > maxSlope) maxSlope = slope;
|
||||
if (slope < minSlope) minSlope = slope;
|
||||
|
||||
if ((flowDir == FlowDir.R_L) && (maxSlope > -2 * minSlope))
|
||||
if ((counting == Counting.Positive) && (maxSlope > -2 * minSlope))
|
||||
{
|
||||
return OptoHeadState.OptoAndDirOK;
|
||||
}
|
||||
else if ((flowDir == FlowDir.L_R) && (minSlope < -2 * maxSlope))
|
||||
else if ((counting == Counting.Negative) && (minSlope < -2 * maxSlope))
|
||||
{
|
||||
return OptoHeadState.OptoAndDirOK;
|
||||
}
|
||||
|
||||
@ -38,11 +38,9 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead
|
||||
public float CalibTarget { get { return iperlHeadCfg.ProcParams.CalibTarget; } }
|
||||
public ushort FactorLimitLo { get { return (ushort)iperlHeadCfg.ProcParams.FactorLimitLo; } }
|
||||
public ushort FactorLimitHi { get { return (ushort)iperlHeadCfg.ProcParams.FactorLimitHi; } }
|
||||
public FlowDir InitFlowDir { get { return (iperlHeadCfg != null && iperlHeadCfg.ProcParams != null) ? iperlHeadCfg.ProcParams.FlowDir : FlowDir.R_L; } }
|
||||
public LogType LogType { get { return iperlHeadCfg.ProcParams.LogType; } }
|
||||
public Counting InitFlowDir { get { return (iperlHeadCfg != null && iperlHeadCfg.ProcParams != null) ? iperlHeadCfg.ProcParams.Counting : Counting.Arbitrary; } }
|
||||
#if ORACLE_DB
|
||||
public int WMType_ID { get { return iperlHeadCfg.ProcParams.WMType_ID; } } /// Required by Oracle DB
|
||||
public int WMType_Rev { get { return iperlHeadCfg.ProcParams.WMType_Rev; } } /// Required by Oracle DB
|
||||
#endif
|
||||
|
||||
/// Properties set by the Begin and the End form
|
||||
@ -459,7 +457,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead
|
||||
}
|
||||
|
||||
|
||||
FlowDir currentFlowDir;
|
||||
Counting currentFlowDir;
|
||||
///
|
||||
public OptoHeadState CheckFlowDirection()
|
||||
{
|
||||
@ -468,7 +466,22 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead
|
||||
///
|
||||
public void ChangeFlowDirection()
|
||||
{
|
||||
currentFlowDir = (InitFlowDir == FlowDir.R_L) ? FlowDir.L_R : FlowDir.R_L;
|
||||
switch (InitFlowDir)
|
||||
{
|
||||
case Counting.Positive:
|
||||
currentFlowDir = Counting.Negative;
|
||||
break;
|
||||
|
||||
case Counting.Negative:
|
||||
currentFlowDir = Counting.Positive;
|
||||
break;
|
||||
|
||||
case Counting.Arbitrary:
|
||||
default:
|
||||
currentFlowDir = Counting.Arbitrary;
|
||||
break;
|
||||
}
|
||||
|
||||
if (flowDirectionDetection != null) flowDirectionDetection.ClearFifo(); /// Clear FIFO for flow direction detection
|
||||
}
|
||||
|
||||
@ -567,20 +580,22 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead
|
||||
string wmPosition = Name.Substring(5);
|
||||
if (wmPosition.Length == 1) wmPosition = "0" + wmPosition;
|
||||
|
||||
SensusTestInfo[] testInfos = SensusTestInfo.GetTestInfos(LogType);
|
||||
|
||||
SensusTestInfo[] testInfos = Sequences.ProcessData.TestInfos;
|
||||
optoDataLogFileName = null;
|
||||
///
|
||||
foreach (var ti in testInfos)
|
||||
if (testInfos != null)
|
||||
{
|
||||
if ((testName != null) && (testName == ti.TestName))
|
||||
foreach (var ti in testInfos)
|
||||
{
|
||||
optoDataLogFileName = string.Format("{0}_{1}_{2}_{3}.txt",
|
||||
(ConfigStruct != null) ? ConfigStruct.GetPcbNrString() : "UnknownPcbNr",
|
||||
wmPosition,
|
||||
ti.PruefungsNrStr,
|
||||
StateMachine.CycleStartTimeStamp.ToString("HH_mm_ss"));
|
||||
break;
|
||||
if ((testName != null) && (testName == ti.TestName) && !string.IsNullOrEmpty(ti.PruefungsNrStr))
|
||||
{
|
||||
optoDataLogFileName = string.Format("{0}_{1}_{2}_{3}.txt",
|
||||
(ConfigStruct != null) ? ConfigStruct.GetPcbNrString() : "UnknownPcbNr",
|
||||
wmPosition,
|
||||
ti.PruefungsNrStr,
|
||||
StateMachine.CycleStartTimeStamp.ToString("HH_mm_ss"));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -620,37 +635,42 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead
|
||||
/// <summary>Stop this operation</summary>
|
||||
public void Stop()
|
||||
{
|
||||
if ((TestStartTelegramIx > 0) && (TestStartTelegramIx < StartOptoDataCount) && (optoData[TestStartTelegramIx].Flags == OptoTelegramFlags.OK))
|
||||
{
|
||||
optoData[TestStartTelegramIx].Flags = OptoTelegramFlags.OK_TestStart;
|
||||
OptoTelegramRaw.TestStartTimestampDec = optoData[TestStartTelegramIx].TimestampDec();
|
||||
}
|
||||
int startIx = OptoTelegramRaw.BufferIdx(TestStartTelegramIx);
|
||||
int endIx = OptoTelegramRaw.BufferIdx(TestEndTelegramIx);
|
||||
|
||||
if (optoData[OptoTelegramRaw.BufferIdx(TestEndTelegramIx)].Flags == OptoTelegramFlags.OK)
|
||||
{
|
||||
optoData[OptoTelegramRaw.BufferIdx(TestEndTelegramIx)].Flags = OptoTelegramFlags.OK_TestEnd;
|
||||
}
|
||||
log.WarnFormat("IperlHeadd.Stop() startIx={0} endIx={1} optoData.Len={2} filename={3}", startIx, endIx, optoData.Length, !string.IsNullOrEmpty(optoDataLogFileName) ? optoDataLogFileName : "<null>");
|
||||
|
||||
StopParsingOptoSerialPort();
|
||||
if (optoDataCount <= MaxOptoDataCount)
|
||||
{
|
||||
OptoTelegramRaw.FIRFilterFlow(optoData, 0, optoDataCount - 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
OptoTelegramRaw.FIRFilterFlow(optoData, 0, StartOptoDataCount - 1);
|
||||
OptoTelegramRaw.FIRFilterFlow(optoData, (optoDataCount - EndOptoDataCount), optoDataCount - 1);
|
||||
}
|
||||
if ((startIx > 0) && (startIx < StartOptoDataCount) && (optoData[startIx].Flags == OptoTelegramFlags.OK))
|
||||
{
|
||||
optoData[startIx].Flags = OptoTelegramFlags.OK_TestStart;
|
||||
OptoTelegramRaw.TestStartTimestampDec = optoData[startIx].TimestampDec();
|
||||
}
|
||||
|
||||
if ((endIx > 0) && (optoData[endIx].Flags == OptoTelegramFlags.OK))
|
||||
{
|
||||
optoData[endIx].Flags = OptoTelegramFlags.OK_TestEnd;
|
||||
}
|
||||
|
||||
StopParsingOptoSerialPort();
|
||||
if (optoDataCount <= MaxOptoDataCount)
|
||||
{
|
||||
OptoTelegramRaw.FIRFilterFlow(optoData, 0, optoDataCount - 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
OptoTelegramRaw.FIRFilterFlow(optoData, 0, StartOptoDataCount - 1);
|
||||
OptoTelegramRaw.FIRFilterFlow(optoData, (optoDataCount - EndOptoDataCount), optoDataCount - 1);
|
||||
}
|
||||
SaveOptoData();
|
||||
|
||||
if (TestStartTelegramIx == 0 || optoDataCount < 100)
|
||||
{
|
||||
resultCode |= (int)Results.Entities.ResultCode.MissingOptoData;
|
||||
}
|
||||
else if (volumeLtrEnd == volumeLtrStart)
|
||||
{
|
||||
resultCode |= (int)Results.Entities.ResultCode.OptoDataWithZeroFlow;
|
||||
}
|
||||
if (TestStartTelegramIx == 0 || optoDataCount < 100)
|
||||
{
|
||||
resultCode |= (int)Results.Entities.ResultCode.MissingOptoData;
|
||||
}
|
||||
else if (volumeLtrEnd == volumeLtrStart)
|
||||
{
|
||||
resultCode |= (int)Results.Entities.ResultCode.OptoDataWithZeroFlow;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -658,7 +678,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead
|
||||
/// </summary>
|
||||
void SaveOptoData()
|
||||
{
|
||||
if (optoDataLogFileName != null)
|
||||
if (!string.IsNullOrEmpty(optoDataLogFileName))
|
||||
{
|
||||
string directory = Path.Combine("C:\\TBF\\ProcessData", StateMachine.CycleStartTimeStamp.ToString("yy"),
|
||||
StateMachine.CycleStartTimeStamp.ToString("MM"),
|
||||
|
||||
@ -3,12 +3,9 @@
|
||||
///
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Xml.Serialization;
|
||||
using Config.Entities;
|
||||
using TBF.BenchControl.Generic;
|
||||
using TBF.BenchControl.Output;
|
||||
using TBF.Resources;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead
|
||||
@ -22,11 +19,9 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead
|
||||
public float CalibTarget; /// Target error after calibration in [%]
|
||||
public int FactorLimitLo; /// Lower limit for the calibration factor
|
||||
public int FactorLimitHi; /// Upper limit for the calibration factor
|
||||
public FlowDir FlowDir; /// Initial iPerl flow direction (R_L or L_R)
|
||||
public LogType LogType;
|
||||
public Counting Counting; /// Initial iPerl counting (Artbitrary, Positive or Negative)
|
||||
#if ORACLE_DB
|
||||
public int WMType_ID; /// Required for Oracle DB: ID_WZTyp in table VT_PRUEFPUNKT_SOLL_SD
|
||||
public int WMType_Rev; /// Required for Oracle DB: Rev_WZTyp in table VT_PRUEFPUNKT_SOLL_SD
|
||||
#endif
|
||||
|
||||
|
||||
@ -36,11 +31,9 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead
|
||||
CalibTarget = 0;
|
||||
FactorLimitLo = 1000;
|
||||
FactorLimitHi = 8000;
|
||||
FlowDir = FlowDir.R_L;
|
||||
LogType = LogType.Just_Q1Q2Q3;
|
||||
Counting = Counting.Arbitrary;
|
||||
#if ORACLE_DB
|
||||
WMType_ID = 2; /// Value for iPerl DN15
|
||||
WMType_Rev = 1; /// Value for iPerl DN15
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -50,11 +43,9 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead
|
||||
"Calib. target [%]",
|
||||
"Calib. factor Lo",
|
||||
"Calib. factor Hi",
|
||||
"Flow direction",
|
||||
"Log type",
|
||||
"Counting",
|
||||
#if ORACLE_DB
|
||||
"WMType ID",
|
||||
"WMType Rev.",
|
||||
"WM type ID",
|
||||
#endif
|
||||
};
|
||||
public override string ParamName(int i) { return paramNames[i]; }
|
||||
@ -71,13 +62,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead
|
||||
else if (i == 4)
|
||||
{
|
||||
IList<string> retVal = new List<string>();
|
||||
for (FlowDir fd = 0; fd < FlowDir.Count; fd++) retVal.Add(fd.ToString());
|
||||
return retVal;
|
||||
}
|
||||
else if (i == 5)
|
||||
{
|
||||
IList<string> retVal = new List<string>();
|
||||
for (LogType lt = 0; lt < LogType.Count; lt++) retVal.Add(lt.ToString());
|
||||
for (Counting c = 0; c < Counting.Count; c++) retVal.Add(c.ToString());
|
||||
return retVal;
|
||||
}
|
||||
return null;
|
||||
@ -91,11 +76,9 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead
|
||||
case 1: return CalibTarget.ToString();
|
||||
case 2: return FactorLimitLo.ToString();
|
||||
case 3: return FactorLimitHi.ToString();
|
||||
case 4: return FlowDir.ToString();
|
||||
case 5: return LogType.ToString();
|
||||
case 4: return Counting.ToString();
|
||||
#if ORACLE_DB
|
||||
case 6: return WMType_ID.ToString();
|
||||
case 7: return WMType_Rev.ToString();
|
||||
case 5: return WMType_ID.ToString();
|
||||
#endif
|
||||
default: return string.Empty;
|
||||
}
|
||||
@ -115,20 +98,13 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead
|
||||
case 2: FactorLimitLo = int.Parse(strValue); return CfgUpdateFlags.None;
|
||||
case 3: FactorLimitHi = int.Parse(strValue); return CfgUpdateFlags.None;
|
||||
case 4:
|
||||
for (FlowDir fd = 0; fd < FlowDir.Count; fd++)
|
||||
for (Counting c = 0; c < Counting.Count; c++)
|
||||
{
|
||||
if (fd.ToString().Equals(strValue)) { FlowDir = fd; return CfgUpdateFlags.None; }
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
for (LogType lt = 0; lt < LogType.Count; lt++)
|
||||
{
|
||||
if (lt.ToString().Equals(strValue)) { LogType = lt; return CfgUpdateFlags.None; }
|
||||
if (c.ToString().Equals(strValue)) { Counting = c; return CfgUpdateFlags.None; }
|
||||
}
|
||||
break;
|
||||
#if ORACLE_DB
|
||||
case 6: WMType_ID = int.Parse(strValue); return CfgUpdateFlags.None;
|
||||
case 7: WMType_Rev = int.Parse(strValue); return CfgUpdateFlags.None;
|
||||
case 5: WMType_ID = int.Parse(strValue); return CfgUpdateFlags.None;
|
||||
#endif
|
||||
default: return CfgUpdateFlags.None;
|
||||
}
|
||||
@ -156,14 +132,10 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead
|
||||
if (int.TryParse(strValue, out iDummy) && iDummy >= 1000 && iDummy <= 8000) return true;
|
||||
break;
|
||||
case 4:
|
||||
for (FlowDir fd = 0; fd < FlowDir.Count; fd++) if (fd.ToString().Equals(strValue)) return true;
|
||||
break;
|
||||
case 5:
|
||||
for (LogType lt = 0; lt < LogType.Count; lt++) if (lt.ToString().Equals(strValue)) return true;
|
||||
for (Counting c = 0; c < Counting.Count; c++) if (c.ToString().Equals(strValue)) return true;
|
||||
break;
|
||||
#if ORACLE_DB
|
||||
case 6: /// WMType_ID
|
||||
case 7: /// WMType_Rev
|
||||
case 5: /// WMType_ID
|
||||
if (int.TryParse(strValue, out iDummy)) return true;
|
||||
break;
|
||||
#endif
|
||||
@ -182,11 +154,9 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead
|
||||
prms.CalibTarget = this.CalibTarget;
|
||||
prms.FactorLimitLo = this.FactorLimitLo;
|
||||
prms.FactorLimitHi = this.FactorLimitHi;
|
||||
prms.FlowDir = this.FlowDir;
|
||||
prms.LogType = this.LogType;
|
||||
prms.Counting = this.Counting;
|
||||
#if ORACLE_DB
|
||||
prms.WMType_ID = this.WMType_ID;
|
||||
prms.WMType_Rev = this.WMType_Rev;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
[assembly: AssemblyVersion("2.18.1131.0")]
|
||||
[assembly: AssemblyFileVersion("2.18.1131.0")]
|
||||
[assembly: AssemblyVersion("2.18.1140.0")]
|
||||
[assembly: AssemblyFileVersion("2.18.1140.0")]
|
||||
|
||||
@ -789,6 +789,13 @@
|
||||
<Compile Include="BenchControl\Network\Telnet\VirtualTerminal.cs" />
|
||||
<Compile Include="BenchControl\Operations\EnduranceDataLoggingOp.cs" />
|
||||
<Compile Include="BenchControl\Operations\EnthalpyCalculationOp.cs" />
|
||||
<Compile Include="BenchControl\Operations\LargeMessageBoxForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="BenchControl\Operations\LargeMessageBoxForm.designer.cs">
|
||||
<DependentUpon>LargeMessageBoxForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="BenchControl\Operations\LargeMessageBoxOp.cs" />
|
||||
<Compile Include="BenchControl\Operations\ReturnGivenEventOp.cs" />
|
||||
<Compile Include="BenchControl\Output\DB\ProductionTracing\Enums.cs" />
|
||||
<Compile Include="BenchControl\Output\DB\ProductionTracing\Tracing.cs" />
|
||||
@ -2598,6 +2605,9 @@
|
||||
<EmbeddedResource Include="BenchControl\Operations\AskYesNoForm.resx">
|
||||
<DependentUpon>AskYesNoForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="BenchControl\Operations\LargeMessageBoxForm.resx">
|
||||
<DependentUpon>LargeMessageBoxForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="BenchControl\Operations\MessageBoxForm.resx">
|
||||
<DependentUpon>MessageBoxForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user