ProcessTabPageCtrl bug fix, Common.Formulas improvement, clean-up, ver. 3.1.1867

This commit is contained in:
Milan Hanajik 2022-01-28 17:38:25 +01:00
parent 08a08282b5
commit 8d47659660
7 changed files with 72 additions and 1912 deletions

View File

@ -213,9 +213,9 @@ namespace Common
/// </summary>
public static double ErrorFromVolumes(double measuredVolume, double trueVolume)
{
if (trueVolume <= float.Epsilon)
if (Math.Abs(trueVolume) <= float.Epsilon)
{
if (measuredVolume <= float.Epsilon)
if (Math.Abs(measuredVolume) <= float.Epsilon)
{
log.WarnFormat("ErrorFromVolumes({0},{1}) returns {2}", measuredVolume, trueVolume, -100.0);
return -100.0;

View File

@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// Build Number
// Revision
//
[assembly: AssemblyVersion("3.1.1864.0")]
[assembly: AssemblyFileVersion("3.1.1864.0")]
[assembly: AssemblyVersion("3.1.1867.0")]
[assembly: AssemblyFileVersion("3.1.1867.0")]

View File

@ -2372,12 +2372,6 @@
<Compile Include="UI\Process\ProcessTabPageCtrl6.designer.cs">
<DependentUpon>ProcessTabPageCtrl6.cs</DependentUpon>
</Compile>
<Compile Include="UI\Process\ProcessTabPageExCtrl.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="UI\Process\ProcessTabPageExCtrl.designer.cs">
<DependentUpon>ProcessTabPageExCtrl.cs</DependentUpon>
</Compile>
<Compile Include="UI\ResultsMI\DeleteFromOracleForm.cs">
<SubType>Form</SubType>
</Compile>
@ -3268,9 +3262,6 @@
<EmbeddedResource Include="UI\Process\ProcessTabPageCtrl6.resx">
<DependentUpon>ProcessTabPageCtrl6.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\Process\ProcessTabPageExCtrl.resx">
<DependentUpon>ProcessTabPageExCtrl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\ResultsMI\DeleteFromOracleForm.resx">
<DependentUpon>DeleteFromOracleForm.cs</DependentUpon>
</EmbeddedResource>

View File

@ -1,15 +1,17 @@
///
/// Copyright (c) 2021 Sensus Slovensko a.s.
/// Copyright (c) 2021-2022 Sensus Slovensko a.s.
///
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using log4net;
using Common;
using Config.Entities;
using TBF.Resources;
using TBF.Rig;
using TBF.UiBridge;
using SchematicDrawing;
using TBF.Resources;
using TBF.Rig.Sequences;
using TBF.UiBridge;
namespace TBF.UI.Process
{
@ -557,39 +559,58 @@ namespace TBF.UI.Process
void OnProcessDataChanged(object sender, ProcessDataEventArgs args)
{
if (processListViewEx.Items.Count != TBF.Rig.Sequences.ProcessData.RegisterReaders.Length)
if (ProcessData.RegisterReaders == null || ProcessData.BatchRslts == null ||
ProcessData.BatchRslts.Batch == null || ProcessData.BatchRslts.Batch.WaterMeters == null)
{
return;
}
int wmsCount = Math.Min(ProcessData.RegisterReaders.Length, ProcessData.BatchRslts.Batch.WaterMeters.Count);
if (processListViewEx.Items.Count != wmsCount)
{
/// Invoked only when the number of water meters or register readers changes
processListViewEx.Items.Clear();
for (int i = 1; i <= TBF.Rig.Sequences.ProcessData.RegisterReaders.Length; i++)
for (int i = 0; i < wmsCount; i++)
{
var lvi = new ListViewItem(i.ToString());
for (Column c = Column.Error; c < Column.Count; c++) lvi.SubItems.Add(".");
if (TBF.Rig.Sequences.ProcessData.BatchRslts.Batch.WaterMeters.Count >= i)
var lvi = new ListViewItem((i+1).ToString()); /// Column 0
for (Column c = (Column)1; c < Column.Count; c++) /// Column 1 .. Column.Count-1
{
lvi.Tag = TBF.Rig.Sequences.ProcessData.BatchRslts.Batch.WaterMeters[i - 1];
lvi.SubItems.Add(".");
}
lvi.Tag = ProcessData.BatchRslts.Batch.WaterMeters[i];
processListViewEx.Items.Add(lvi);
}
}
for (int i = 1; i <= TBF.Rig.Sequences.ProcessData.RegisterReaders.Length; i++)
TBF.Rig.ControlBoard.IControlBoard cBrd = TBF.Rig.StateMachine.ControlBoard;
if (cBrd != null && cBrd.Devices != null && cBrd.Devices.FlowMeter != null)
{
if (TBF.Rig.Sequences.ProcessData.RegisterReaders[i - 1] != null)
double refVolume = cBrd.RefPulses * cBrd.Devices.FlowMeter.LtrPerPulse;
for (int i = 0; i < wmsCount; i++)
{
var lvi = processListViewEx.Items[i - 1];
var rr = TBF.Rig.Sequences.ProcessData.RegisterReaders[i - 1];
var rr = ProcessData.RegisterReaders[i];
var lvi = processListViewEx.Items[i];
if (rr != null)
if (rr != null && Math.Abs(rr.WMVolume) > float.Epsilon && refVolume > float.Epsilon)
{
/// Update a list view item
//lvi.SubItems[(int)Column.Error].Text = Formulas.ErrorFromVolumes(rr.WMVolume, rr.WMRefVolume).ToString("F1");
lvi.SubItems[(int)Column.Error].Text = Formulas.ErrorFromVolumes(rr.WMVolume, refVolume).ToString("F1");
lvi.SubItems[(int)Column.Volume].Text = rr.WMVolume.ToString("F1");
lvi.SubItems[(int)Column.Pulses].Text = rr.WMPulses.ToString();
lvi.SubItems[(int)Column.RefPulses].Text = rr.WMRefPulses.ToString();
if (rr is TBF.Rig.RegisterReaders.S640Stream.S640Stream)
{
lvi.SubItems[(int)Column.SerialNr].Text = (rr as TBF.Rig.RegisterReaders.S640Stream.S640Stream).PcbNumber.ToString();
}
}
else
{
lvi.SubItems[(int)Column.Error].Text = string.Empty;
lvi.SubItems[(int)Column.Volume].Text = string.Empty;
lvi.SubItems[(int)Column.Pulses].Text = string.Empty;
lvi.SubItems[(int)Column.RefPulses].Text = string.Empty;
}
if (rr is TBF.Rig.RegisterReaders.S640Stream.S640Stream)
{
lvi.SubItems[(int)Column.SerialNr].Text = (rr as TBF.Rig.RegisterReaders.S640Stream.S640Stream).PcbNumber.ToString();
}
}
}
@ -597,40 +618,48 @@ namespace TBF.UI.Process
void OnTestCompleted(object sender, TestCompletedEventArgs args)
{
if (processListViewEx.Items.Count != TBF.Rig.Sequences.ProcessData.RegisterReaders.Length)
if (ProcessData.RegisterReaders == null || ProcessData.BatchRslts == null ||
ProcessData.BatchRslts.Batch == null || ProcessData.BatchRslts.Batch.WaterMeters == null)
{
return;
}
int wmsCount = Math.Min(ProcessData.RegisterReaders.Length, ProcessData.BatchRslts.Batch.WaterMeters.Count);
if (processListViewEx.Items.Count != wmsCount)
{
/// Invoked only when the number of water meters or register readers changes
processListViewEx.Items.Clear();
for (int i = 1; i <= TBF.Rig.Sequences.ProcessData.RegisterReaders.Length; i++)
for (int i = 0; i < wmsCount; i++)
{
var lvi = new ListViewItem(i.ToString());
for (Column c = Column.Error; c < Column.Count; c++) lvi.SubItems.Add(".");
if (TBF.Rig.Sequences.ProcessData.BatchRslts.Batch.WaterMeters.Count >= i)
var lvi = new ListViewItem((i + 1).ToString()); /// Column 0
for (Column c = (Column)1; c < Column.Count; c++) /// Column 1 .. Column.Count-1
{
lvi.Tag = TBF.Rig.Sequences.ProcessData.BatchRslts.Batch.WaterMeters[i - 1];
lvi.SubItems.Add(".");
}
lvi.Tag = ProcessData.BatchRslts.Batch.WaterMeters[i];
processListViewEx.Items.Add(lvi);
}
}
if (args.TestRslt != null)
{
foreach (var wm in args.TestRslt.Batch.WaterMeters)
for (int i = 0; i < wmsCount; i++)
{
if (wm.WMPosition > 0 && wm.WMPosition <= processListViewEx.Items.Count)
var wm = processListViewEx.Items[i].Tag as Results.Entities.WaterMeter;
if (wm != null && !wm.Disabled)
{
foreach (var mtr in wm.MeterTestRslts)
Results.Entities.MeterTestRslt mtr = wm.MeterTestRslts.FirstOrDefault(x => x.TestRslt == args.TestRslt);
if (mtr != null)
{
if (mtr != null && mtr.TestRslt == args.TestRslt)
{
var lvi = processListViewEx.Items[wm.WMPosition - 1];
var lvi = processListViewEx.Items[i];
/// Update a list view item
lvi.SubItems[(int)Column.Error].Text = mtr.Error.ToString("F1");
lvi.SubItems[(int)Column.Volume].Text = mtr.VolumeMeter.ToString("F1");
lvi.SubItems[(int)Column.Pulses].Text = mtr.PulsesMeter.ToString();
lvi.SubItems[(int)Column.RefPulses].Text = mtr.PulsesMaster.ToString();
lvi.SubItems[(int)Column.SerialNr].Text = mtr.SerialNr();
}
/// Update a list view item
lvi.SubItems[(int)Column.Error].Text = mtr.Error.ToString("F1");
lvi.SubItems[(int)Column.Volume].Text = mtr.VolumeMeter.ToString("F1");
lvi.SubItems[(int)Column.Pulses].Text = mtr.PulsesMeter.ToString();
lvi.SubItems[(int)Column.RefPulses].Text = mtr.PulsesMaster.ToString();
lvi.SubItems[(int)Column.SerialNr].Text = mtr.SerialNr();
}
}
}

View File

@ -1,913 +0,0 @@
///
/// Copyright (c) 2019 Sensus Slovensko a.s.
///
namespace TBF.UI.Process
{
partial class ProcessTabPageExCtrl
{
/// <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 Component 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()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ProcessTabPageExCtrl));
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.tLoCmpntLabel = new System.Windows.Forms.Label();
this.tLoDataLabel = new System.Windows.Forms.Label();
this.tLoLabel = new System.Windows.Forms.Label();
this.tHiCmpntLabel = new System.Windows.Forms.Label();
this.tHiDataLabel = new System.Windows.Forms.Label();
this.tHiLabel = new System.Windows.Forms.Label();
this.pumpPctTextBox = new System.Windows.Forms.TextBox();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.flowMeterPictureBox = new System.Windows.Forms.PictureBox();
this.watermeterPictureBox4 = new System.Windows.Forms.PictureBox();
this.watermeterPictureBox3 = new System.Windows.Forms.PictureBox();
this.watermeterPictureBox2 = new System.Windows.Forms.PictureBox();
this.pumpPictureBox = new System.Windows.Forms.PictureBox();
this.reservoirPictureBox = new System.Windows.Forms.PictureBox();
this.airHumiLabel = new System.Windows.Forms.Label();
this.airPressLabel = new System.Windows.Forms.Label();
this.airTempLabel = new System.Windows.Forms.Label();
this.label34 = new System.Windows.Forms.Label();
this.label33 = new System.Windows.Forms.Label();
this.label32 = new System.Windows.Forms.Label();
this.estmtdTimeLabel = new System.Windows.Forms.Label();
this.targetRefCountLabel = new System.Windows.Forms.Label();
this.label31 = new System.Windows.Forms.Label();
this.targetVolumeLabel = new System.Windows.Forms.Label();
this.targetFlowHighLabel = new System.Windows.Forms.Label();
this.targetFlowLowLabel = new System.Windows.Forms.Label();
this.label30 = new System.Windows.Forms.Label();
this.label20 = new System.Windows.Forms.Label();
this.label29 = new System.Windows.Forms.Label();
this.label28 = new System.Windows.Forms.Label();
this.refErrorLabel = new System.Windows.Forms.Label();
this.label27 = new System.Windows.Forms.Label();
this.volumeCtvLabel = new System.Windows.Forms.Label();
this.label26 = new System.Windows.Forms.Label();
this.refVolumeLabel = new System.Windows.Forms.Label();
this.label25 = new System.Windows.Forms.Label();
this.massDiffLabel = new System.Windows.Forms.Label();
this.label23 = new System.Windows.Forms.Label();
this.massLabel = new System.Windows.Forms.Label();
this.label22 = new System.Windows.Forms.Label();
this.scaleCmpntLabel = new System.Windows.Forms.Label();
this.tDivCmpntLabel = new System.Windows.Forms.Label();
this.tDivLabel = new System.Windows.Forms.Label();
this.label24 = new System.Windows.Forms.Label();
this.label21 = new System.Windows.Forms.Label();
this.regValvePosLabel = new System.Windows.Forms.Label();
this.regValveCmpntLabel = new System.Windows.Forms.Label();
this.refFlowCmpntLabel = new System.Windows.Forms.Label();
this.refPulsesLabel = new System.Windows.Forms.Label();
this.label19 = new System.Windows.Forms.Label();
this.refFreqLabel = new System.Windows.Forms.Label();
this.label16 = new System.Windows.Forms.Label();
this.refFlowLabel = new System.Windows.Forms.Label();
this.prInCmpntLabel = new System.Windows.Forms.Label();
this.prOutCmpntLabel = new System.Windows.Forms.Label();
this.tOutCmpntLabel = new System.Windows.Forms.Label();
this.tInCmpntLabel = new System.Windows.Forms.Label();
this.label15 = new System.Windows.Forms.Label();
this.prOutLabel = new System.Windows.Forms.Label();
this.tOutLabel = new System.Windows.Forms.Label();
this.label17 = new System.Windows.Forms.Label();
this.label18 = new System.Windows.Forms.Label();
this.prInLabel = new System.Windows.Forms.Label();
this.tInLabel = new System.Windows.Forms.Label();
this.label14 = new System.Windows.Forms.Label();
this.label13 = new System.Windows.Forms.Label();
this.metersListView = new System.Windows.Forms.ListView();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.flowMeterPictureBox)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.watermeterPictureBox4)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.watermeterPictureBox3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.watermeterPictureBox2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.pumpPictureBox)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.reservoirPictureBox)).BeginInit();
this.SuspendLayout();
//
// splitContainer1
//
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
this.splitContainer1.IsSplitterFixed = true;
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
this.splitContainer1.Name = "splitContainer1";
this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.Controls.Add(this.tLoCmpntLabel);
this.splitContainer1.Panel1.Controls.Add(this.tLoDataLabel);
this.splitContainer1.Panel1.Controls.Add(this.tLoLabel);
this.splitContainer1.Panel1.Controls.Add(this.tHiCmpntLabel);
this.splitContainer1.Panel1.Controls.Add(this.tHiDataLabel);
this.splitContainer1.Panel1.Controls.Add(this.tHiLabel);
this.splitContainer1.Panel1.Controls.Add(this.pumpPctTextBox);
this.splitContainer1.Panel1.Controls.Add(this.pictureBox1);
this.splitContainer1.Panel1.Controls.Add(this.flowMeterPictureBox);
this.splitContainer1.Panel1.Controls.Add(this.watermeterPictureBox4);
this.splitContainer1.Panel1.Controls.Add(this.watermeterPictureBox3);
this.splitContainer1.Panel1.Controls.Add(this.watermeterPictureBox2);
this.splitContainer1.Panel1.Controls.Add(this.pumpPictureBox);
this.splitContainer1.Panel1.Controls.Add(this.reservoirPictureBox);
this.splitContainer1.Panel1.Controls.Add(this.airHumiLabel);
this.splitContainer1.Panel1.Controls.Add(this.airPressLabel);
this.splitContainer1.Panel1.Controls.Add(this.airTempLabel);
this.splitContainer1.Panel1.Controls.Add(this.label34);
this.splitContainer1.Panel1.Controls.Add(this.label33);
this.splitContainer1.Panel1.Controls.Add(this.label32);
this.splitContainer1.Panel1.Controls.Add(this.estmtdTimeLabel);
this.splitContainer1.Panel1.Controls.Add(this.targetRefCountLabel);
this.splitContainer1.Panel1.Controls.Add(this.label31);
this.splitContainer1.Panel1.Controls.Add(this.targetVolumeLabel);
this.splitContainer1.Panel1.Controls.Add(this.targetFlowHighLabel);
this.splitContainer1.Panel1.Controls.Add(this.targetFlowLowLabel);
this.splitContainer1.Panel1.Controls.Add(this.label30);
this.splitContainer1.Panel1.Controls.Add(this.label20);
this.splitContainer1.Panel1.Controls.Add(this.label29);
this.splitContainer1.Panel1.Controls.Add(this.label28);
this.splitContainer1.Panel1.Controls.Add(this.refErrorLabel);
this.splitContainer1.Panel1.Controls.Add(this.label27);
this.splitContainer1.Panel1.Controls.Add(this.volumeCtvLabel);
this.splitContainer1.Panel1.Controls.Add(this.label26);
this.splitContainer1.Panel1.Controls.Add(this.refVolumeLabel);
this.splitContainer1.Panel1.Controls.Add(this.label25);
this.splitContainer1.Panel1.Controls.Add(this.massDiffLabel);
this.splitContainer1.Panel1.Controls.Add(this.label23);
this.splitContainer1.Panel1.Controls.Add(this.massLabel);
this.splitContainer1.Panel1.Controls.Add(this.label22);
this.splitContainer1.Panel1.Controls.Add(this.scaleCmpntLabel);
this.splitContainer1.Panel1.Controls.Add(this.tDivCmpntLabel);
this.splitContainer1.Panel1.Controls.Add(this.tDivLabel);
this.splitContainer1.Panel1.Controls.Add(this.label24);
this.splitContainer1.Panel1.Controls.Add(this.label21);
this.splitContainer1.Panel1.Controls.Add(this.regValvePosLabel);
this.splitContainer1.Panel1.Controls.Add(this.regValveCmpntLabel);
this.splitContainer1.Panel1.Controls.Add(this.refFlowCmpntLabel);
this.splitContainer1.Panel1.Controls.Add(this.refPulsesLabel);
this.splitContainer1.Panel1.Controls.Add(this.label19);
this.splitContainer1.Panel1.Controls.Add(this.refFreqLabel);
this.splitContainer1.Panel1.Controls.Add(this.label16);
this.splitContainer1.Panel1.Controls.Add(this.refFlowLabel);
this.splitContainer1.Panel1.Controls.Add(this.prInCmpntLabel);
this.splitContainer1.Panel1.Controls.Add(this.prOutCmpntLabel);
this.splitContainer1.Panel1.Controls.Add(this.tOutCmpntLabel);
this.splitContainer1.Panel1.Controls.Add(this.tInCmpntLabel);
this.splitContainer1.Panel1.Controls.Add(this.label15);
this.splitContainer1.Panel1.Controls.Add(this.prOutLabel);
this.splitContainer1.Panel1.Controls.Add(this.tOutLabel);
this.splitContainer1.Panel1.Controls.Add(this.label17);
this.splitContainer1.Panel1.Controls.Add(this.label18);
this.splitContainer1.Panel1.Controls.Add(this.prInLabel);
this.splitContainer1.Panel1.Controls.Add(this.tInLabel);
this.splitContainer1.Panel1.Controls.Add(this.label14);
this.splitContainer1.Panel1.Controls.Add(this.label13);
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.Controls.Add(this.metersListView);
this.splitContainer1.Size = new System.Drawing.Size(1100, 800);
this.splitContainer1.SplitterDistance = 450;
this.splitContainer1.SplitterWidth = 1;
this.splitContainer1.TabIndex = 182;
//
// tLoCmpntLabel
//
this.tLoCmpntLabel.AutoSize = true;
this.tLoCmpntLabel.Location = new System.Drawing.Point(367, 218);
this.tLoCmpntLabel.Name = "tLoCmpntLabel";
this.tLoCmpntLabel.Size = new System.Drawing.Size(52, 13);
this.tLoCmpntLabel.TabIndex = 250;
this.tLoCmpntLabel.Text = "tLoCmpnt";
this.tLoCmpntLabel.Visible = false;
//
// tLoDataLabel
//
this.tLoDataLabel.AutoSize = true;
this.tLoDataLabel.Location = new System.Drawing.Point(367, 234);
this.tLoDataLabel.Name = "tLoDataLabel";
this.tLoDataLabel.Size = new System.Drawing.Size(45, 13);
this.tLoDataLabel.TabIndex = 249;
this.tLoDataLabel.Text = "tLoData";
this.tLoDataLabel.Visible = false;
//
// tLoLabel
//
this.tLoLabel.AutoSize = true;
this.tLoLabel.Location = new System.Drawing.Point(306, 234);
this.tLoLabel.Name = "tLoLabel";
this.tLoLabel.Size = new System.Drawing.Size(48, 13);
this.tLoLabel.TabIndex = 248;
this.tLoLabel.Text = "T lo [°C]:";
this.tLoLabel.Visible = false;
//
// tHiCmpntLabel
//
this.tHiCmpntLabel.AutoSize = true;
this.tHiCmpntLabel.Location = new System.Drawing.Point(367, 178);
this.tHiCmpntLabel.Name = "tHiCmpntLabel";
this.tHiCmpntLabel.Size = new System.Drawing.Size(50, 13);
this.tHiCmpntLabel.TabIndex = 247;
this.tHiCmpntLabel.Text = "tHiCmpnt";
this.tHiCmpntLabel.Visible = false;
//
// tHiDataLabel
//
this.tHiDataLabel.AutoSize = true;
this.tHiDataLabel.Location = new System.Drawing.Point(367, 194);
this.tHiDataLabel.Name = "tHiDataLabel";
this.tHiDataLabel.Size = new System.Drawing.Size(43, 13);
this.tHiDataLabel.TabIndex = 246;
this.tHiDataLabel.Text = "tHiData";
this.tHiDataLabel.Visible = false;
//
// tHiLabel
//
this.tHiLabel.AutoSize = true;
this.tHiLabel.Location = new System.Drawing.Point(306, 194);
this.tHiLabel.Name = "tHiLabel";
this.tHiLabel.Size = new System.Drawing.Size(48, 13);
this.tHiLabel.TabIndex = 245;
this.tHiLabel.Text = "T hi [°C]:";
this.tHiLabel.Visible = false;
//
// pumpPctTextBox
//
this.pumpPctTextBox.Location = new System.Drawing.Point(797, 372);
this.pumpPctTextBox.Name = "pumpPctTextBox";
this.pumpPctTextBox.Size = new System.Drawing.Size(42, 20);
this.pumpPctTextBox.TabIndex = 244;
//
// pictureBox1
//
this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
this.pictureBox1.Location = new System.Drawing.Point(884, 94);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(38, 35);
this.pictureBox1.TabIndex = 240;
this.pictureBox1.TabStop = false;
//
// flowMeterPictureBox
//
this.flowMeterPictureBox.ErrorImage = null;
this.flowMeterPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("flowMeterPictureBox.Image")));
this.flowMeterPictureBox.InitialImage = null;
this.flowMeterPictureBox.Location = new System.Drawing.Point(884, 151);
this.flowMeterPictureBox.Name = "flowMeterPictureBox";
this.flowMeterPictureBox.Size = new System.Drawing.Size(38, 38);
this.flowMeterPictureBox.TabIndex = 239;
this.flowMeterPictureBox.TabStop = false;
//
// watermeterPictureBox4
//
this.watermeterPictureBox4.Image = ((System.Drawing.Image)(resources.GetObject("watermeterPictureBox4.Image")));
this.watermeterPictureBox4.Location = new System.Drawing.Point(511, 365);
this.watermeterPictureBox4.Name = "watermeterPictureBox4";
this.watermeterPictureBox4.Size = new System.Drawing.Size(38, 30);
this.watermeterPictureBox4.TabIndex = 238;
this.watermeterPictureBox4.TabStop = false;
//
// watermeterPictureBox3
//
this.watermeterPictureBox3.Image = ((System.Drawing.Image)(resources.GetObject("watermeterPictureBox3.Image")));
this.watermeterPictureBox3.Location = new System.Drawing.Point(370, 365);
this.watermeterPictureBox3.Name = "watermeterPictureBox3";
this.watermeterPictureBox3.Size = new System.Drawing.Size(38, 30);
this.watermeterPictureBox3.TabIndex = 237;
this.watermeterPictureBox3.TabStop = false;
//
// watermeterPictureBox2
//
this.watermeterPictureBox2.Image = ((System.Drawing.Image)(resources.GetObject("watermeterPictureBox2.Image")));
this.watermeterPictureBox2.Location = new System.Drawing.Point(227, 365);
this.watermeterPictureBox2.Name = "watermeterPictureBox2";
this.watermeterPictureBox2.Size = new System.Drawing.Size(38, 30);
this.watermeterPictureBox2.TabIndex = 236;
this.watermeterPictureBox2.TabStop = false;
//
// pumpPictureBox
//
this.pumpPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("pumpPictureBox.Image")));
this.pumpPictureBox.Location = new System.Drawing.Point(799, 396);
this.pumpPictureBox.Name = "pumpPictureBox";
this.pumpPictureBox.Size = new System.Drawing.Size(38, 38);
this.pumpPictureBox.TabIndex = 235;
this.pumpPictureBox.TabStop = false;
//
// reservoirPictureBox
//
this.reservoirPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("reservoirPictureBox.Image")));
this.reservoirPictureBox.Location = new System.Drawing.Point(900, 324);
this.reservoirPictureBox.Name = "reservoirPictureBox";
this.reservoirPictureBox.Size = new System.Drawing.Size(142, 109);
this.reservoirPictureBox.TabIndex = 234;
this.reservoirPictureBox.TabStop = false;
//
// airHumiLabel
//
this.airHumiLabel.AutoSize = true;
this.airHumiLabel.Location = new System.Drawing.Point(141, 95);
this.airHumiLabel.Name = "airHumiLabel";
this.airHumiLabel.Size = new System.Drawing.Size(42, 13);
this.airHumiLabel.TabIndex = 233;
this.airHumiLabel.Text = "airHumi";
//
// airPressLabel
//
this.airPressLabel.AutoSize = true;
this.airPressLabel.Location = new System.Drawing.Point(141, 78);
this.airPressLabel.Name = "airPressLabel";
this.airPressLabel.Size = new System.Drawing.Size(44, 13);
this.airPressLabel.TabIndex = 232;
this.airPressLabel.Text = "airPress";
//
// airTempLabel
//
this.airTempLabel.AutoSize = true;
this.airTempLabel.Location = new System.Drawing.Point(141, 61);
this.airTempLabel.Name = "airTempLabel";
this.airTempLabel.Size = new System.Drawing.Size(45, 13);
this.airTempLabel.TabIndex = 231;
this.airTempLabel.Text = "airTemp";
//
// label34
//
this.label34.AutoSize = true;
this.label34.Location = new System.Drawing.Point(52, 95);
this.label34.Name = "label34";
this.label34.Size = new System.Drawing.Size(80, 13);
this.label34.TabIndex = 230;
this.label34.Text = "Air humidity [%]:";
//
// label33
//
this.label33.AutoSize = true;
this.label33.Location = new System.Drawing.Point(34, 78);
this.label33.Name = "label33";
this.label33.Size = new System.Drawing.Size(98, 13);
this.label33.TabIndex = 229;
this.label33.Text = "Air pressure [mBar]:";
//
// label32
//
this.label32.AutoSize = true;
this.label32.Location = new System.Drawing.Point(31, 61);
this.label32.Name = "label32";
this.label32.Size = new System.Drawing.Size(101, 13);
this.label32.TabIndex = 228;
this.label32.Text = "Air temperature [°C]:";
//
// estmtdTimeLabel
//
this.estmtdTimeLabel.AutoSize = true;
this.estmtdTimeLabel.Location = new System.Drawing.Point(375, 143);
this.estmtdTimeLabel.Name = "estmtdTimeLabel";
this.estmtdTimeLabel.Size = new System.Drawing.Size(61, 13);
this.estmtdTimeLabel.TabIndex = 227;
this.estmtdTimeLabel.Text = "estmtdTime";
//
// targetRefCountLabel
//
this.targetRefCountLabel.AutoSize = true;
this.targetRefCountLabel.Location = new System.Drawing.Point(375, 122);
this.targetRefCountLabel.Name = "targetRefCountLabel";
this.targetRefCountLabel.Size = new System.Drawing.Size(79, 13);
this.targetRefCountLabel.TabIndex = 226;
this.targetRefCountLabel.Text = "targetRefCount";
//
// label31
//
this.label31.AutoSize = true;
this.label31.Location = new System.Drawing.Point(283, 122);
this.label31.Name = "label31";
this.label31.Size = new System.Drawing.Size(89, 13);
this.label31.TabIndex = 225;
this.label31.Text = "Target ref. count:";
//
// targetVolumeLabel
//
this.targetVolumeLabel.AutoSize = true;
this.targetVolumeLabel.Location = new System.Drawing.Point(375, 101);
this.targetVolumeLabel.Name = "targetVolumeLabel";
this.targetVolumeLabel.Size = new System.Drawing.Size(69, 13);
this.targetVolumeLabel.TabIndex = 224;
this.targetVolumeLabel.Text = "targetVolume";
//
// targetFlowHighLabel
//
this.targetFlowHighLabel.AutoSize = true;
this.targetFlowHighLabel.Location = new System.Drawing.Point(375, 81);
this.targetFlowHighLabel.Name = "targetFlowHighLabel";
this.targetFlowHighLabel.Size = new System.Drawing.Size(78, 13);
this.targetFlowHighLabel.TabIndex = 223;
this.targetFlowHighLabel.Text = "targetFlowHigh";
//
// targetFlowLowLabel
//
this.targetFlowLowLabel.AutoSize = true;
this.targetFlowLowLabel.Location = new System.Drawing.Point(375, 61);
this.targetFlowLowLabel.Name = "targetFlowLowLabel";
this.targetFlowLowLabel.Size = new System.Drawing.Size(76, 13);
this.targetFlowLowLabel.TabIndex = 222;
this.targetFlowLowLabel.Text = "targetFlowLow";
//
// label30
//
this.label30.AutoSize = true;
this.label30.Location = new System.Drawing.Point(280, 143);
this.label30.Name = "label30";
this.label30.Size = new System.Drawing.Size(92, 13);
this.label30.TabIndex = 221;
this.label30.Text = "Estimated time [s]:";
//
// label20
//
this.label20.AutoSize = true;
this.label20.Location = new System.Drawing.Point(283, 101);
this.label20.Name = "label20";
this.label20.Size = new System.Drawing.Size(89, 13);
this.label20.TabIndex = 220;
this.label20.Text = "Target volume [l]:";
//
// label29
//
this.label29.AutoSize = true;
this.label29.Location = new System.Drawing.Point(252, 81);
this.label29.Name = "label29";
this.label29.Size = new System.Drawing.Size(120, 13);
this.label29.TabIndex = 219;
this.label29.Text = "Target flow high [m3/h]:";
//
// label28
//
this.label28.AutoSize = true;
this.label28.Location = new System.Drawing.Point(256, 61);
this.label28.Name = "label28";
this.label28.Size = new System.Drawing.Size(116, 13);
this.label28.TabIndex = 218;
this.label28.Text = "Target flow low [m3/h]:";
//
// refErrorLabel
//
this.refErrorLabel.AutoSize = true;
this.refErrorLabel.Location = new System.Drawing.Point(1009, 287);
this.refErrorLabel.Name = "refErrorLabel";
this.refErrorLabel.Size = new System.Drawing.Size(41, 13);
this.refErrorLabel.TabIndex = 217;
this.refErrorLabel.Text = "refError";
//
// label27
//
this.label27.AutoSize = true;
this.label27.Location = new System.Drawing.Point(934, 287);
this.label27.Name = "label27";
this.label27.Size = new System.Drawing.Size(71, 13);
this.label27.TabIndex = 216;
this.label27.Text = "Ref. error [%]:";
//
// volumeCtvLabel
//
this.volumeCtvLabel.AutoSize = true;
this.volumeCtvLabel.Location = new System.Drawing.Point(1009, 265);
this.volumeCtvLabel.Name = "volumeCtvLabel";
this.volumeCtvLabel.Size = new System.Drawing.Size(57, 13);
this.volumeCtvLabel.TabIndex = 215;
this.volumeCtvLabel.Text = "volumeCtv";
//
// label26
//
this.label26.AutoSize = true;
this.label26.Location = new System.Drawing.Point(949, 265);
this.label26.Name = "label26";
this.label26.Size = new System.Drawing.Size(56, 13);
this.label26.TabIndex = 214;
this.label26.Text = "Volume [l]:";
//
// refVolumeLabel
//
this.refVolumeLabel.AutoSize = true;
this.refVolumeLabel.Location = new System.Drawing.Point(810, 182);
this.refVolumeLabel.Name = "refVolumeLabel";
this.refVolumeLabel.Size = new System.Drawing.Size(54, 13);
this.refVolumeLabel.TabIndex = 213;
this.refVolumeLabel.Text = "refVolume";
//
// label25
//
this.label25.AutoSize = true;
this.label25.Location = new System.Drawing.Point(729, 182);
this.label25.Name = "label25";
this.label25.Size = new System.Drawing.Size(78, 13);
this.label25.TabIndex = 212;
this.label25.Text = "Ref. volume [l]:";
//
// massDiffLabel
//
this.massDiffLabel.AutoSize = true;
this.massDiffLabel.Location = new System.Drawing.Point(1009, 244);
this.massDiffLabel.Name = "massDiffLabel";
this.massDiffLabel.Size = new System.Drawing.Size(47, 13);
this.massDiffLabel.TabIndex = 211;
this.massDiffLabel.Text = "massDiff";
//
// label23
//
this.label23.AutoSize = true;
this.label23.Location = new System.Drawing.Point(929, 244);
this.label23.Name = "label23";
this.label23.Size = new System.Drawing.Size(76, 13);
this.label23.TabIndex = 210;
this.label23.Text = "Mass diff. [kg]:";
//
// massLabel
//
this.massLabel.AutoSize = true;
this.massLabel.Location = new System.Drawing.Point(1009, 224);
this.massLabel.Name = "massLabel";
this.massLabel.Size = new System.Drawing.Size(31, 13);
this.massLabel.TabIndex = 209;
this.massLabel.Text = "mass";
//
// label22
//
this.label22.AutoSize = true;
this.label22.Location = new System.Drawing.Point(949, 224);
this.label22.Name = "label22";
this.label22.Size = new System.Drawing.Size(56, 13);
this.label22.TabIndex = 208;
this.label22.Text = "Mass [kg]:";
//
// scaleCmpntLabel
//
this.scaleCmpntLabel.AutoSize = true;
this.scaleCmpntLabel.Location = new System.Drawing.Point(1009, 203);
this.scaleCmpntLabel.Name = "scaleCmpntLabel";
this.scaleCmpntLabel.Size = new System.Drawing.Size(62, 13);
this.scaleCmpntLabel.TabIndex = 207;
this.scaleCmpntLabel.Text = "scaleCmpnt";
//
// tDivCmpntLabel
//
this.tDivCmpntLabel.AutoSize = true;
this.tDivCmpntLabel.Location = new System.Drawing.Point(598, 61);
this.tDivCmpntLabel.Name = "tDivCmpntLabel";
this.tDivCmpntLabel.Size = new System.Drawing.Size(56, 13);
this.tDivCmpntLabel.TabIndex = 206;
this.tDivCmpntLabel.Text = "tDivCmpnt";
//
// tDivLabel
//
this.tDivLabel.AutoSize = true;
this.tDivLabel.Location = new System.Drawing.Point(598, 79);
this.tDivLabel.Name = "tDivLabel";
this.tDivLabel.Size = new System.Drawing.Size(26, 13);
this.tDivLabel.TabIndex = 205;
this.tDivLabel.Text = "tDiv";
//
// label24
//
this.label24.AutoSize = true;
this.label24.Location = new System.Drawing.Point(536, 78);
this.label24.Name = "label24";
this.label24.Size = new System.Drawing.Size(54, 13);
this.label24.TabIndex = 204;
this.label24.Text = "T div [°C]:";
//
// label21
//
this.label21.AutoSize = true;
this.label21.Location = new System.Drawing.Point(721, 79);
this.label21.Name = "label21";
this.label21.Size = new System.Drawing.Size(85, 13);
this.label21.TabIndex = 203;
this.label21.Text = "Reg. valve pos.:";
//
// regValvePosLabel
//
this.regValvePosLabel.AutoSize = true;
this.regValvePosLabel.Location = new System.Drawing.Point(810, 79);
this.regValvePosLabel.Name = "regValvePosLabel";
this.regValvePosLabel.Size = new System.Drawing.Size(67, 13);
this.regValvePosLabel.TabIndex = 202;
this.regValvePosLabel.Text = "regValvePos";
//
// regValveCmpntLabel
//
this.regValveCmpntLabel.AutoSize = true;
this.regValveCmpntLabel.Location = new System.Drawing.Point(810, 61);
this.regValveCmpntLabel.Name = "regValveCmpntLabel";
this.regValveCmpntLabel.Size = new System.Drawing.Size(79, 13);
this.regValveCmpntLabel.TabIndex = 201;
this.regValveCmpntLabel.Text = "regValveCmpnt";
//
// refFlowCmpntLabel
//
this.refFlowCmpntLabel.AutoSize = true;
this.refFlowCmpntLabel.Location = new System.Drawing.Point(810, 108);
this.refFlowCmpntLabel.Name = "refFlowCmpntLabel";
this.refFlowCmpntLabel.Size = new System.Drawing.Size(71, 13);
this.refFlowCmpntLabel.TabIndex = 200;
this.refFlowCmpntLabel.Text = "refFlowCmpnt";
//
// refPulsesLabel
//
this.refPulsesLabel.AutoSize = true;
this.refPulsesLabel.Location = new System.Drawing.Point(810, 126);
this.refPulsesLabel.Name = "refPulsesLabel";
this.refPulsesLabel.Size = new System.Drawing.Size(50, 13);
this.refPulsesLabel.TabIndex = 199;
this.refPulsesLabel.Text = "refPulses";
//
// label19
//
this.label19.AutoSize = true;
this.label19.Location = new System.Drawing.Point(743, 126);
this.label19.Name = "label19";
this.label19.Size = new System.Drawing.Size(60, 13);
this.label19.TabIndex = 198;
this.label19.Text = "Ref. count:";
//
// refFreqLabel
//
this.refFreqLabel.AutoSize = true;
this.refFreqLabel.Location = new System.Drawing.Point(810, 144);
this.refFreqLabel.Name = "refFreqLabel";
this.refFreqLabel.Size = new System.Drawing.Size(40, 13);
this.refFreqLabel.TabIndex = 197;
this.refFreqLabel.Text = "refFreq";
//
// label16
//
this.label16.AutoSize = true;
this.label16.Location = new System.Drawing.Point(727, 144);
this.label16.Name = "label16";
this.label16.Size = new System.Drawing.Size(76, 13);
this.label16.TabIndex = 196;
this.label16.Text = "Ref. freq. [Hz]:";
//
// refFlowLabel
//
this.refFlowLabel.AutoSize = true;
this.refFlowLabel.Location = new System.Drawing.Point(810, 163);
this.refFlowLabel.Name = "refFlowLabel";
this.refFlowLabel.Size = new System.Drawing.Size(41, 13);
this.refFlowLabel.TabIndex = 195;
this.refFlowLabel.Text = "refFlow";
//
// prInCmpntLabel
//
this.prInCmpntLabel.AutoSize = true;
this.prInCmpntLabel.Location = new System.Drawing.Point(141, 178);
this.prInCmpntLabel.Name = "prInCmpntLabel";
this.prInCmpntLabel.Size = new System.Drawing.Size(55, 13);
this.prInCmpntLabel.TabIndex = 194;
this.prInCmpntLabel.Text = "prInCmpnt";
//
// prOutCmpntLabel
//
this.prOutCmpntLabel.AutoSize = true;
this.prOutCmpntLabel.Location = new System.Drawing.Point(598, 178);
this.prOutCmpntLabel.Name = "prOutCmpntLabel";
this.prOutCmpntLabel.Size = new System.Drawing.Size(63, 13);
this.prOutCmpntLabel.TabIndex = 193;
this.prOutCmpntLabel.Text = "prOutCmpnt";
//
// tOutCmpntLabel
//
this.tOutCmpntLabel.AutoSize = true;
this.tOutCmpntLabel.Location = new System.Drawing.Point(598, 218);
this.tOutCmpntLabel.Name = "tOutCmpntLabel";
this.tOutCmpntLabel.Size = new System.Drawing.Size(57, 13);
this.tOutCmpntLabel.TabIndex = 192;
this.tOutCmpntLabel.Text = "tOutCmpnt";
//
// tInCmpntLabel
//
this.tInCmpntLabel.AutoSize = true;
this.tInCmpntLabel.Location = new System.Drawing.Point(141, 218);
this.tInCmpntLabel.Name = "tInCmpntLabel";
this.tInCmpntLabel.Size = new System.Drawing.Size(49, 13);
this.tInCmpntLabel.TabIndex = 191;
this.tInCmpntLabel.Text = "tInCmpnt";
//
// label15
//
this.label15.AutoSize = true;
this.label15.Location = new System.Drawing.Point(717, 163);
this.label15.Name = "label15";
this.label15.Size = new System.Drawing.Size(86, 13);
this.label15.TabIndex = 190;
this.label15.Text = "Ref. flow [m3/h]:";
//
// prOutLabel
//
this.prOutLabel.AutoSize = true;
this.prOutLabel.Location = new System.Drawing.Point(598, 194);
this.prOutLabel.Name = "prOutLabel";
this.prOutLabel.Size = new System.Drawing.Size(33, 13);
this.prOutLabel.TabIndex = 189;
this.prOutLabel.Text = "prOut";
//
// tOutLabel
//
this.tOutLabel.AutoSize = true;
this.tOutLabel.Location = new System.Drawing.Point(598, 234);
this.tOutLabel.Name = "tOutLabel";
this.tOutLabel.Size = new System.Drawing.Size(27, 13);
this.tOutLabel.TabIndex = 188;
this.tOutLabel.Text = "tOut";
//
// label17
//
this.label17.AutoSize = true;
this.label17.Location = new System.Drawing.Point(517, 194);
this.label17.Name = "label17";
this.label17.Size = new System.Drawing.Size(73, 13);
this.label17.TabIndex = 187;
this.label17.Text = "Pr down [bar]:";
//
// label18
//
this.label18.AutoSize = true;
this.label18.Location = new System.Drawing.Point(524, 234);
this.label18.Name = "label18";
this.label18.Size = new System.Drawing.Size(66, 13);
this.label18.TabIndex = 186;
this.label18.Text = "T down [°C]:";
//
// prInLabel
//
this.prInLabel.AutoSize = true;
this.prInLabel.Location = new System.Drawing.Point(141, 194);
this.prInLabel.Name = "prInLabel";
this.prInLabel.Size = new System.Drawing.Size(25, 13);
this.prInLabel.TabIndex = 185;
this.prInLabel.Text = "prIn";
//
// tInLabel
//
this.tInLabel.AutoSize = true;
this.tInLabel.Location = new System.Drawing.Point(141, 234);
this.tInLabel.Name = "tInLabel";
this.tInLabel.Size = new System.Drawing.Size(19, 13);
this.tInLabel.TabIndex = 184;
this.tInLabel.Text = "tIn";
//
// label14
//
this.label14.AutoSize = true;
this.label14.Location = new System.Drawing.Point(73, 194);
this.label14.Name = "label14";
this.label14.Size = new System.Drawing.Size(59, 13);
this.label14.TabIndex = 183;
this.label14.Text = "Pr up [bar]:";
//
// label13
//
this.label13.AutoSize = true;
this.label13.Location = new System.Drawing.Point(80, 234);
this.label13.Name = "label13";
this.label13.Size = new System.Drawing.Size(52, 13);
this.label13.TabIndex = 182;
this.label13.Text = "T up [°C]:";
//
// metersListView
//
this.metersListView.Dock = System.Windows.Forms.DockStyle.Fill;
this.metersListView.Location = new System.Drawing.Point(0, 0);
this.metersListView.Name = "metersListView";
this.metersListView.Size = new System.Drawing.Size(1100, 349);
this.metersListView.TabIndex = 0;
this.metersListView.UseCompatibleStateImageBehavior = false;
this.metersListView.View = System.Windows.Forms.View.Details;
//
// ProcessTabPageExCtrl
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.SystemColors.Control;
this.Controls.Add(this.splitContainer1);
this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
this.Name = "ProcessTabPageExCtrl";
this.Size = new System.Drawing.Size(1100, 800);
this.Load += new System.EventHandler(this.ProcessTabPageCtrl_Load);
this.Paint += new System.Windows.Forms.PaintEventHandler(this.ProcessTabPageCtrl_Paint);
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel1.PerformLayout();
this.splitContainer1.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
this.splitContainer1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.flowMeterPictureBox)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.watermeterPictureBox4)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.watermeterPictureBox3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.watermeterPictureBox2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.pumpPictureBox)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.reservoirPictureBox)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.SplitContainer splitContainer1;
private System.Windows.Forms.TextBox pumpPctTextBox;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.PictureBox flowMeterPictureBox;
private System.Windows.Forms.PictureBox watermeterPictureBox4;
private System.Windows.Forms.PictureBox watermeterPictureBox3;
private System.Windows.Forms.PictureBox watermeterPictureBox2;
private System.Windows.Forms.PictureBox pumpPictureBox;
private System.Windows.Forms.PictureBox reservoirPictureBox;
private System.Windows.Forms.Label airHumiLabel;
private System.Windows.Forms.Label airPressLabel;
private System.Windows.Forms.Label airTempLabel;
private System.Windows.Forms.Label label34;
private System.Windows.Forms.Label label33;
private System.Windows.Forms.Label label32;
private System.Windows.Forms.Label estmtdTimeLabel;
private System.Windows.Forms.Label targetRefCountLabel;
private System.Windows.Forms.Label label31;
private System.Windows.Forms.Label targetVolumeLabel;
private System.Windows.Forms.Label targetFlowHighLabel;
private System.Windows.Forms.Label targetFlowLowLabel;
private System.Windows.Forms.Label label30;
private System.Windows.Forms.Label label20;
private System.Windows.Forms.Label label29;
private System.Windows.Forms.Label label28;
private System.Windows.Forms.Label refErrorLabel;
private System.Windows.Forms.Label label27;
private System.Windows.Forms.Label volumeCtvLabel;
private System.Windows.Forms.Label label26;
private System.Windows.Forms.Label refVolumeLabel;
private System.Windows.Forms.Label label25;
private System.Windows.Forms.Label massDiffLabel;
private System.Windows.Forms.Label label23;
private System.Windows.Forms.Label massLabel;
private System.Windows.Forms.Label label22;
private System.Windows.Forms.Label scaleCmpntLabel;
private System.Windows.Forms.Label tDivCmpntLabel;
private System.Windows.Forms.Label tDivLabel;
private System.Windows.Forms.Label label24;
private System.Windows.Forms.Label label21;
private System.Windows.Forms.Label regValvePosLabel;
private System.Windows.Forms.Label regValveCmpntLabel;
private System.Windows.Forms.Label refFlowCmpntLabel;
private System.Windows.Forms.Label refPulsesLabel;
private System.Windows.Forms.Label label19;
private System.Windows.Forms.Label refFreqLabel;
private System.Windows.Forms.Label label16;
private System.Windows.Forms.Label refFlowLabel;
private System.Windows.Forms.Label prInCmpntLabel;
private System.Windows.Forms.Label prOutCmpntLabel;
private System.Windows.Forms.Label tOutCmpntLabel;
private System.Windows.Forms.Label tInCmpntLabel;
private System.Windows.Forms.Label label15;
private System.Windows.Forms.Label prOutLabel;
private System.Windows.Forms.Label tOutLabel;
private System.Windows.Forms.Label label17;
private System.Windows.Forms.Label label18;
private System.Windows.Forms.Label prInLabel;
private System.Windows.Forms.Label tInLabel;
private System.Windows.Forms.Label label14;
private System.Windows.Forms.Label label13;
private System.Windows.Forms.ListView metersListView;
private System.Windows.Forms.Label tLoCmpntLabel;
private System.Windows.Forms.Label tLoDataLabel;
private System.Windows.Forms.Label tLoLabel;
private System.Windows.Forms.Label tHiCmpntLabel;
private System.Windows.Forms.Label tHiDataLabel;
private System.Windows.Forms.Label tHiLabel;
}
}

View File

@ -1,710 +0,0 @@
///
/// Copyright (c) 2019 Sensus Slovensko a.s.
///
using System;
using System.Drawing;
using System.Windows.Forms;
using log4net;
using Common;
using Config.Entities;
using Results.Entities;
using TBF.Rig.Sequences;
using TBF.UiBridge;
using TBF.Resources;
#pragma warning disable 162 /// Disables 'Unreachable code detected' warning
namespace TBF.UI.Process
{
public partial class ProcessTabPageExCtrl : UserControl
{
static readonly ILog log = LogManager.GetLogger(typeof(ProcessTabPageExCtrl));
enum Columns
{
Meter = 0,
Sensor,
Pulses,
RefPulses,
Volume,
Error,
Result,
Energy,
EnergyError,
HeatMeterResult,
}
MetersKind currentMetersKind;
bool pumpOn = true;
bool diverterToTank = true;
/// <summary>
/// Constructor, initializes anonymous event handlers
/// </summary>
public ProcessTabPageExCtrl()
{
currentMetersKind = MetersKind.Single;
InitializeComponent();
#if HEAT_METERS
tLoLabel.Visible = true;
tLoCmpntLabel.Visible = true;
tLoDataLabel.Visible = true;
tHiLabel.Visible = true;
tHiCmpntLabel.Visible = true;
tHiDataLabel.Visible = true;
#endif
Bridge.ProcedureSelectedHandler += delegate(object sndr, ProcedureSelectedEventArgs args)
{
try
{
if (InvokeRequired) Invoke(new EventHandler<ProcedureSelectedEventArgs>(OnProcedureSelected), sndr, args);
else OnProcedureSelected(sndr, args);
}
catch (Exception e) { log.ErrorFormat("ProcessTabPage24.OnProcedureSelected() failed: {0}", e.Message); }
};
Bridge.TestSelectedHandler += delegate(object sender, TestSelectedEventArgs args)
{
try
{
if (InvokeRequired) Invoke(new EventHandler<TestSelectedEventArgs>(OnTestSelected), sender, args);
else OnTestSelected(sender, args);
}
catch (Exception e) { log.ErrorFormat("ProcessTabPage24.OnTestSelected() failed: {0}", e.Message); }
};
Bridge.ProcessDataHandler += delegate(object sender, ProcessDataEventArgs args)
{
try
{
if (InvokeRequired) Invoke(new EventHandler<ProcessDataEventArgs>(OnProcessDataChanged), sender, args);
else OnProcessDataChanged(sender, args);
}
catch (Exception e) { log.ErrorFormat("ProcessTabPage24.OnProcessDataChanged() failed: {0}", e.Message); }
};
Bridge.TestCompletedHandler += delegate(object sender, TestCompletedEventArgs args)
{
try
{
if (InvokeRequired) Invoke(new EventHandler<TestCompletedEventArgs>(OnTestCompleted), sender, args);
else OnTestCompleted(sender, args);
}
catch (Exception e) { log.ErrorFormat("ProcessTabPage24.OnTestCompleted() failed: {0}", e.Message); }
};
Bridge.ProcedureCompletedHandler += delegate(object sender, ProcedureCompletedEventArgs args)
{
try
{
if (InvokeRequired) Invoke(new EventHandler<ProcedureCompletedEventArgs>(OnProcedureCompleted), sender, args);
else OnProcedureCompleted(sender, args);
}
catch (Exception e) { log.ErrorFormat("ProcessTabPage24.OnProcedureCompleted() failed: {0}", e.Message); }
};
Timer timer = new Timer();
timer.Tick += (s, e) => { OnTimerTick(); };
timer.Interval = 5000;
timer.Start();
}
private void ProcessTabPageCtrl_Load(object sender, EventArgs e)
{
Once();
ResetLabelsAndTargetVals();
ResetReadings(); /// Erase all results
OnTimerTick(); /// Redraw measurements that are always available
ProcessTabPageCtrl_Paint(this, null);
}
void Once()
{
UpdateCurrentMetersKind(MetersKind.Single, true);
}
/// <summary>
/// Update 'currentMetersKind' variable and visibility of UI items.
/// </summary>
/// <param name="metersKind">New value</param>
/// <param name="fromScratch">true = always update UI</param>
void UpdateCurrentMetersKind(MetersKind metersKind, bool fromScratch = false)
{
if (currentMetersKind != metersKind || fromScratch)
{
currentMetersKind = metersKind;
metersListView.Items.Clear();
metersListView.Columns.Clear();
metersListView.Columns.Add(Strings.Meter, 60);
metersListView.Columns.Add(Strings.Sensor, 80);
metersListView.Columns.Add(Strings.Pulses_count, 100);
metersListView.Columns.Add(Strings.Ref_pulses_count, 120);
metersListView.Columns.Add(Strings.Volume, 80);
metersListView.Columns.Add(Strings.Error, 80);
metersListView.Columns.Add(Strings.Result, 80);
///
if (metersKind == MetersKind.HeatMeter)
{
metersListView.Columns.Add(Strings.Energy, 80);
metersListView.Columns.Add(Strings.Error, 80);
metersListView.Columns.Add(Strings.Result, 80);
}
if ((metersKind == MetersKind.Single) || (metersKind == MetersKind.HeatMeter))
{
for (int i = 0; i < Data.WMsCount; i++)
{
ListViewItem lvi = new ListViewItem(new string[] { (i + 1).ToString(), "---", "---", "---", "---", "---", "---" });
if (metersKind == MetersKind.HeatMeter)
{
lvi.SubItems.Add("---"); /// energy
lvi.SubItems.Add("---"); /// energy error
lvi.SubItems.Add("---"); /// HeatMeter result
}
metersListView.Items.Add(lvi);
}
}
else if (metersKind == MetersKind.Combined)
{
for (int z = 0; z < TBF.Data.CompoundWMsCount; z++)
{
ListViewItem lvi = new ListViewItem(string.Format("{0} {1}", Strings.Compound_meter_0, z + 1));
lvi.SubItems.Add(string.Empty); /// sensor
lvi.SubItems.Add(string.Empty); /// pulses count
lvi.SubItems.Add("---"); /// ref. pulses count
lvi.SubItems.Add("---"); /// volume
lvi.SubItems.Add("---"); /// error
lvi.SubItems.Add("---"); /// result
metersListView.Items.Add(lvi);
ListViewItem iMain = new ListViewItem(Strings.Main);
iMain.SubItems.Add("---"); /// sensor
iMain.SubItems.Add("---"); /// pulses count
iMain.SubItems.Add(string.Empty); /// ref. pulses count
iMain.SubItems.Add("---"); /// volume
iMain.SubItems.Add(string.Empty); /// error
iMain.SubItems.Add(string.Empty); /// result
metersListView.Items.Add(iMain);
ListViewItem iAux = new ListViewItem(Strings.Aux);
iAux.SubItems.Add("---"); /// sensor
iAux.SubItems.Add("---"); /// pulses count
iAux.SubItems.Add(string.Empty); /// ref. pulses count
iAux.SubItems.Add("---"); /// volume
iAux.SubItems.Add(string.Empty); /// error
iAux.SubItems.Add(string.Empty); /// result
metersListView.Items.Add(iAux);
}
}
}
}
/// <summary>
/// Called when a new procedure is selected
/// </summary>
void ResetLabelsAndTargetVals()
{
/// Target values
targetFlowLowLabel.Text = "---";
targetFlowHighLabel.Text = "---";
targetVolumeLabel.Text = "---";
targetRefCountLabel.Text = "---";
estmtdTimeLabel.Text = "---";
//
refFlowCmpntLabel.Text = "---";
regValveCmpntLabel.Text = "---";
/// Water pressure
prInCmpntLabel.Text = "---";
prOutCmpntLabel.Text = "---";
/// Water temperature
tInCmpntLabel.Text = "---";
tOutCmpntLabel.Text = "---";
tDivCmpntLabel.Text = "---";
tHiCmpntLabel.Text = "---";
tLoCmpntLabel.Text = "---";
scaleCmpntLabel.Text = "---";
if ((currentMetersKind == MetersKind.Single) || (currentMetersKind == MetersKind.HeatMeter))
{
for (int i = 0; i < metersListView.Items.Count; i++)
{
metersListView.Items[i].SubItems[(int)Columns.Sensor].Text = "---";
}
}
else if (currentMetersKind == MetersKind.Combined)
{
for (int z = 0; z < Math.Min(TBF.Data.CompoundWMsCount, metersListView.Items.Count / 3); z++)
{
metersListView.Items[3 * z + 1].SubItems[(int)Columns.Sensor].Text = "---";
metersListView.Items[3 * z + 2].SubItems[(int)Columns.Sensor].Text = "---";
}
}
}
/// <summary>
/// Called when a new procedure or a new test procedure is selected
/// </summary>
void ResetReadings()
{
/// Top part
refPulsesLabel.Text = "---";
refFreqLabel.Text = "---";
refFlowLabel.Text = "---";
refVolumeLabel.Text = "---";
regValvePosLabel.Text = "---";
tDivLabel.Text = "---";
tInLabel.Text = "---";
prInLabel.Text = "---";
tHiDataLabel.Text = "---";
tLoDataLabel.Text = "---";
tOutLabel.Text = "---";
prOutLabel.Text = "---";
massLabel.Text = "---";
massDiffLabel.Text = "---";
volumeCtvLabel.Text = "---";
refErrorLabel.Text = "---";
if (currentMetersKind == MetersKind.Single)
{
for (int i = 0; i < metersListView.Items.Count; i++)
{
metersListView.Items[i].SubItems[(int)Columns.Pulses].Text = "---";
metersListView.Items[i].SubItems[(int)Columns.RefPulses].Text = "---";
metersListView.Items[i].SubItems[(int)Columns.Volume].Text = "---";
metersListView.Items[i].SubItems[(int)Columns.Error].Text = "---";
metersListView.Items[i].SubItems[(int)Columns.Result].Text = "---";
}
}
else if (currentMetersKind == MetersKind.HeatMeter)
{
for (int i = 0; i < metersListView.Items.Count; i++)
{
metersListView.Items[i].SubItems[(int)Columns.Pulses].Text = "---";
metersListView.Items[i].SubItems[(int)Columns.RefPulses].Text = "---";
metersListView.Items[i].SubItems[(int)Columns.Volume].Text = "---";
metersListView.Items[i].SubItems[(int)Columns.Error].Text = "---";
metersListView.Items[i].SubItems[(int)Columns.Result].Text = "---";
metersListView.Items[i].SubItems[(int)Columns.Energy].Text = "---";
metersListView.Items[i].SubItems[(int)Columns.EnergyError].Text = "---";
metersListView.Items[i].SubItems[(int)Columns.HeatMeterResult].Text = "---";
}
}
else if (currentMetersKind == MetersKind.Combined)
{
for (int z = 0; z < Math.Min(TBF.Data.CompoundWMsCount, metersListView.Items.Count / 3); z++)
{
/// Compound
metersListView.Items[3 * z].SubItems[(int)Columns.RefPulses].Text = "---";
metersListView.Items[3 * z].SubItems[(int)Columns.Volume].Text = "---";
metersListView.Items[3 * z].SubItems[(int)Columns.Error].Text = "---";
metersListView.Items[3 * z].SubItems[(int)Columns.Result].Text = "---";
/// Main
metersListView.Items[3 * z + 1].SubItems[(int)Columns.Pulses].Text = "---";
metersListView.Items[3 * z + 1].SubItems[(int)Columns.Volume].Text = "---";
/// Aux
metersListView.Items[3 * z + 2].SubItems[(int)Columns.Pulses].Text = "---";
metersListView.Items[3 * z + 2].SubItems[(int)Columns.Volume].Text = "---";
}
}
}
void OnTimerTick()
{
///
/// Always available
///
airTempLabel.Text = ProcessData.AmbTemp.ToString();
airPressLabel.Text = Common.Units.ConvertTo(Common.Unit.mbar, ProcessData.AmbPress.Val).ToString("F0");
airHumiLabel.Text = ProcessData.AmbHumi.ToString();
tInLabel.Text = ProcessData.TempUp.ToString();
tOutLabel.Text = ProcessData.TempDown.ToString();
tDivLabel.Text = ProcessData.TempDiv.ToString();
prInLabel.Text = ProcessData.PressUp.ToString();
prOutLabel.Text = ProcessData.PressDown.ToString();
//massLabel.Text = ProcessData.Mass.ToString();
#if HEAT_METERS
tHiDataLabel.Text = (ProcessData.TempRefHi1.Valid && ProcessData.TempRefHi2.Valid) ? ((ProcessData.TempRefHi1.Val + ProcessData.TempRefHi2.Val) / 2).ToString("F2") : "---";
tLoDataLabel.Text = (ProcessData.TempRefLo1.Valid && ProcessData.TempRefLo2.Valid) ? ((ProcessData.TempRefLo1.Val + ProcessData.TempRefLo2.Val) / 2).ToString("F2") : "---";
#endif
}
void OnProcedureSelected(object sender, ProcedureSelectedEventArgs args)
{
UpdateCurrentMetersKind(args.Procedure.MetersKind);
ResetLabelsAndTargetVals();
ResetReadings();
OnTimerTick(); /// Redraw measurements that are always available
Invalidate();
}
void OnTestSelected(object sender, TestSelectedEventArgs args)
{
/// Readings and target values
ResetReadings();
/// Target values
targetFlowLowLabel.Text = args.Test.Qfrom.ToString("F3");
targetFlowHighLabel.Text = args.Test.Qto.ToString("F3");
targetVolumeLabel.Text = args.Test.Volume.ToString("F1");
//targetRefCountLabel.Text = args.TotalPulses.ToString();
estmtdTimeLabel.Text = args.Test.TestTime.ToString("F1");
/// Names of virtual bench components
if (args.OutputPath.FlowMeter != null) refFlowCmpntLabel.Text = args.OutputPath.FlowMeter.Name;
if (args.OutputPath.RegValve != null) regValveCmpntLabel.Text = args.OutputPath.RegValve.Name;
if (args.OutputPath.Scale != null) scaleCmpntLabel.Text = args.OutputPath.Scale.Name;
if (args.BenchPath.PressMtrUp != null) prInCmpntLabel.Text = args.BenchPath.PressMtrUp.Name;
if (args.BenchPath.PressMtrDown != null) prOutCmpntLabel.Text = args.BenchPath.PressMtrDown.Name;
if (args.BenchPath.TempMtrUp != null) tInCmpntLabel.Text = args.BenchPath.TempMtrUp.Name;
if (args.BenchPath.TempMtrDown != null) tOutCmpntLabel.Text = args.BenchPath.TempMtrDown.Name;
if (args.OutputPath.TempMtrDiv != null) tDivCmpntLabel.Text = args.OutputPath.TempMtrDiv.Name;
#if HEAT_METERS
if (args.HeatMetersPath != null && args.HeatMetersPath.TMeterRefWarm1 != null) tHiCmpntLabel.Text = args.HeatMetersPath.TMeterRefWarm1.Name;
if (args.HeatMetersPath != null && args.HeatMetersPath.TMeterRefCold1 != null) tLoCmpntLabel.Text = args.HeatMetersPath.TMeterRefCold1.Name;
#endif
OnTimerTick(); /// Redraw measurements that are always available
if ((currentMetersKind == MetersKind.Single) || (currentMetersKind == MetersKind.HeatMeter))
{
for (int i = 0; i < metersListView.Items.Count; i++)
{
metersListView.Items[i].SubItems[(int)Columns.Sensor].Text = (args.MetersPath.RegisterReaders[i] != null)
? args.MetersPath.RegisterReaders[i].Cfg.Name
: string.Empty;
}
}
else if (currentMetersKind == MetersKind.Combined)
{
for (int z = 0; z < Math.Min(TBF.Data.CompoundWMsCount, metersListView.Items.Count / 3); z++)
{
metersListView.Items[3 * z + 1].SubItems[(int)Columns.Sensor].Text
= ((args.MetersPath.RegisterReaders != null) && (args.MetersPath.RegisterReaders.Length > 2 * z) && (args.MetersPath.RegisterReaders[2 * z] != null))
? args.MetersPath.RegisterReaders[2 * z].Cfg.Name
: string.Empty;
metersListView.Items[3 * z + 2].SubItems[(int)Columns.Sensor].Text
= ((args.MetersPath.RegisterReaders != null) && (args.MetersPath.RegisterReaders.Length > 2 * z + 1) && (args.MetersPath.RegisterReaders[2 * z + 1] != null))
? args.MetersPath.RegisterReaders[2 * z + 1].Cfg.Name
: string.Empty;
}
}
if (args.FeedingPath != null && (args.FeedingPath.Pump is Rig.GenericDevices.IPumpFM))
{
pumpPctTextBox.Visible = true;
pumpPctTextBox.Text = (args.FeedingPath.Pump as Rig.GenericDevices.IPumpFM).Power.ToString("F0") + " %";
}
else
{
pumpPctTextBox.Visible = false;
}
}
void OnProcessDataChanged(object sender, ProcessDataEventArgs args)
{
/// Pressure may change faster then temperature, therefore it is updated also here
prInLabel.Text = ProcessData.PressUp.ToString();
prOutLabel.Text = ProcessData.PressDown.ToString();
//massLabel.Text = ProcessData.Mass.ToString();
if (args.TestPhase == Progress.FlowSetting ||
args.TestPhase == Progress.Test)
{
///
/// Available when setting the flow and during a test
///
refFreqLabel.Text = ProcessData.RefFrequency.ToString();
refFlowLabel.Text = Utils.DoubleToStr(ProcessData.RefFlow.Val, 4);
}
if (args.TestPhase == Progress.Test)
{
///
/// Available only during a test
///
refPulsesLabel.Text = ProcessData.RefPulses.ToString();
double refVolume = ProcessData.LtrPerRefPulse * (double)ProcessData.RefPulses;
refVolumeLabel.Text = refVolume.ToString("F2");
//double massDiff = ProcessData.Mass.Val - ProcessData.StartMass.Val;
//massDiffLabel.Text = massDiff.ToString("F3");
//double volumeCtv = 1000 * Formulas.Buoyancy() * massDiff
// / Formulas.WaterDensityFromTempPress((ProcessData.TempUp.Val + ProcessData.TempDown.Val) / 2,
// (ProcessData.PressUp.Val + ProcessData.PressDown.Val) / 2);
//volumeCtvLabel.Text = volumeCtv.ToString("F2");
//double refError = Formulas.ErrorFromVolumes(refVolume, volumeCtv);
//refErrorLabel.Text = refError.ToString("F3");
if (currentMetersKind == MetersKind.Single || currentMetersKind == MetersKind.HeatMeter)
{
for (int i = 0; i < Math.Min(metersListView.Items.Count, ProcessData.RegisterReaders.Length); i++)
{
ListViewItem lvi = metersListView.Items[i];
Rig.GenericDevices.IRegReader rr = ProcessData.RegisterReaders[i];
if (rr != null)
{
lvi.SubItems[(int)Columns.Pulses].Text = rr.WMPulses.ToString();
lvi.SubItems[(int)Columns.RefPulses].Text = rr.WMRefPulses.ToString();
lvi.SubItems[(int)Columns.Volume].Text = rr.WMVolume.ToString("F1");
lvi.SubItems[(int)Columns.Error].Text = Formulas.ErrorFromVolumes(rr.WMVolume, rr.WMRefPulses * ProcessData.LtrPerRefPulse).ToString("F1");
}
if (currentMetersKind == MetersKind.HeatMeter)
{
/// TODO:
lvi.SubItems[(int)Columns.Energy].Text = ProcessData.Energy.Last.ToString("F1");
lvi.SubItems[(int)Columns.EnergyError].Text = Formulas.ErrorFromVolumes(rr.WMVolume, rr.WMRefPulses * ProcessData.LtrPerRefPulse).ToString("F1");
}
}
}
else if (currentMetersKind == MetersKind.Combined)
{
for (int z = 0; z < Math.Min(TBF.Data.CompoundWMsCount, metersListView.Items.Count / 3); z++)
{
Rig.GenericDevices.IRegReader rrMain = (ProcessData.RegisterReaders.Length > 2 * z) ? ProcessData.RegisterReaders[2 * z] : null;
Rig.GenericDevices.IRegReader rrAux = (ProcessData.RegisterReaders.Length > 2 * z + 1) ? ProcessData.RegisterReaders[2 * z + 1] : null;
Double compoundVolume = 0;
if (rrMain != null) compoundVolume += rrMain.WMVolume;
if (rrAux != null) compoundVolume += rrAux.WMVolume;
/// Compound
metersListView.Items[3 * z].SubItems[(int)Columns.RefPulses].Text = ProcessData.RefPulses.ToString();
metersListView.Items[3 * z].SubItems[(int)Columns.Volume].Text = compoundVolume.ToString("F1");
metersListView.Items[3 * z].SubItems[(int)Columns.Error].Text = Formulas.ErrorFromVolumes(compoundVolume, refVolume).ToString("F1"); ;
/// Main
metersListView.Items[3 * z + 1].SubItems[(int)Columns.Pulses].Text = (rrMain != null) ? rrMain.WMPulses.ToString() : string.Empty;
metersListView.Items[3 * z + 1].SubItems[(int)Columns.Volume].Text = (rrMain != null) ? rrMain.WMVolume.ToString("F1") : string.Empty;
/// Aux
metersListView.Items[3 * z + 2].SubItems[(int)Columns.Pulses].Text = (rrAux != null) ? rrMain.WMPulses.ToString() : string.Empty;
metersListView.Items[3 * z + 2].SubItems[(int)Columns.Volume].Text = (rrAux != null) ? rrMain.WMVolume.ToString("F1") : string.Empty;
}
}
}
//if (pumpOn != args.PumpOn || diverterToTank != args.DivToTank)
//{
// //if (pumpOn != args.PumpOn)
// //{
// // if (pumpOn) pumpPictureBox.Image = System.Resources.
// // else pumpPictureBox.Image = System.Resources.
// //}
// pumpOn = args.PumpOn;
// diverterToTank = args.DivToTank;
// Invalidate();
//}
}
void OnTestCompleted(object sender, TestCompletedEventArgs args)
{
if (args == null) return;
TestRslt tRes = args.TestRslt;
if (tRes == null) return;
/// Pressure may change faster then temperature, therefore it is updated also here
prInLabel.Text = ProcessData.PressUp.ToString();
prOutLabel.Text = ProcessData.PressDown.ToString();
//massLabel.Text = ProcessData.Mass.ToString();
massDiffLabel.Text = (tRes.MassEnd - tRes.MassStart).ToString("F3");
refPulsesLabel.Text = tRes.PulsesMaster.ToString("F0");
refFreqLabel.Text = "---";
refFlowLabel.Text = Utils.DoubleToStr(tRes.FlowVolume, 4);
refVolumeLabel.Text = tRes.VolumeCTV.ToString("F2");
//regValvePosLabel.Text = tstRslt.
volumeCtvLabel.Text = tRes.VolumeCTV.ToString("F1");
refErrorLabel.Text = (tRes.ErrorMaster == 0) ? "---" : tRes.ErrorMaster.ToString("F3");
if ((currentMetersKind == MetersKind.Single) && !tRes.Batch.Compound && !tRes.Batch.HeatMeter)
{
///
/// Test results for single meters
///
for (int i = 0; i < Math.Min(metersListView.Items.Count, ProcessData.BatchRslts.Batch.WaterMeters.Count); i++)
{
WaterMeter wm = ProcessData.BatchRslts.Batch.WaterMeters[i];
MeterTestRslt mtr = (wm != null && !wm.Disabled) ? wm.GetMeterTestRslt(args.TestName) : null;
if (mtr != null)
{
metersListView.Items[i].SubItems[(int)Columns.Pulses].Text = mtr.PulsesMeter.ToString("F0");
metersListView.Items[i].SubItems[(int)Columns.RefPulses].Text = mtr.PulsesMaster.ToString("F0");
metersListView.Items[i].SubItems[(int)Columns.Volume].Text = mtr.VolumeMeter.ToString("F2");
metersListView.Items[i].SubItems[(int)Columns.Error].Text = mtr.Error.ToString("F2");
metersListView.Items[i].SubItems[(int)Columns.Result].Text = mtr.Passed ? Strings.Passed : Strings.Failed;
}
}
}
else if ((currentMetersKind == MetersKind.HeatMeter) && tRes.Batch.HeatMeter)
{
///
/// Test results for heat meters
///
for (int i = 0; i < Math.Min(metersListView.Items.Count, ProcessData.BatchRslts.Batch.WaterMeters.Count); i++)
{
WaterMeter wm = ProcessData.BatchRslts.Batch.WaterMeters[i];
if (wm == null || wm.Disabled) continue;
MeterTestRslt mtrVolume = wm.GetMeterTestRslt(args.TestName, CompoundMeterId.HeatMeterVolume);
MeterTestRslt mtrEnergy = wm.GetMeterTestRslt(args.TestName, CompoundMeterId.HeatMeterEnergy);
if (mtrVolume != null)
{
metersListView.Items[i].SubItems[(int)Columns.Pulses].Text = mtrVolume.PulsesMeter.ToString("F0");
metersListView.Items[i].SubItems[(int)Columns.RefPulses].Text = mtrVolume.PulsesMaster.ToString("F0");
metersListView.Items[i].SubItems[(int)Columns.Volume].Text = mtrVolume.VolumeMeter.ToString("F2");
metersListView.Items[i].SubItems[(int)Columns.Error].Text = mtrVolume.Error.ToString("F2");
metersListView.Items[i].SubItems[(int)Columns.Result].Text = mtrVolume.Passed ? Strings.Passed : Strings.Failed;
}
if (mtrEnergy != null)
{
metersListView.Items[i].SubItems[(int)Columns.Energy].Text = mtrEnergy.VolumeMeter.ToString("F1"); ;
metersListView.Items[i].SubItems[(int)Columns.EnergyError].Text = mtrEnergy.Error.ToString("F2");
metersListView.Items[i].SubItems[(int)Columns.HeatMeterResult].Text = mtrEnergy.Passed ? Strings.Passed : Strings.Failed;
}
}
}
else if ((currentMetersKind == MetersKind.Combined) && tRes.Batch.Compound)
{
///
/// Test results for compond meters
///
for (int z = 0; z < Math.Min(TBF.Data.CompoundWMsCount, metersListView.Items.Count / 3); z++)
{
WaterMeter wm = ProcessData.BatchRslts.Batch.WaterMeters[z];
if (wm == null && !wm.Disabled) continue;
MeterTestRslt mtrComp = wm.GetMeterTestRslt(args.TestName, CompoundMeterId.Compound);
MeterTestRslt mtrMain = wm.GetMeterTestRslt(args.TestName, CompoundMeterId.CompoundMain);
MeterTestRslt mtrAux = wm.GetMeterTestRslt(args.TestName, CompoundMeterId.CompoundAux);
if (mtrComp != null)
{
metersListView.Items[3 * z].SubItems[(int)Columns.RefPulses].Text = mtrMain.PulsesMaster.ToString("F0");
metersListView.Items[3 * z].SubItems[(int)Columns.Volume].Text = mtrComp.VolumeMeter.ToString("F2");
metersListView.Items[3 * z].SubItems[(int)Columns.Error].Text = mtrComp.Error.ToString("F2");
metersListView.Items[3 * z].SubItems[(int)Columns.Result].Text = mtrComp.Passed ? Strings.Passed : Strings.Failed;
}
if (mtrMain != null)
{
metersListView.Items[3 * z + 1].SubItems[(int)Columns.Pulses].Text = mtrMain.PulsesMeter.ToString("F0");
metersListView.Items[3 * z + 1].SubItems[(int)Columns.Volume].Text = mtrMain.VolumeMeter.ToString("F2");
}
if (mtrAux != null)
{
metersListView.Items[3 * z + 2].SubItems[(int)Columns.Pulses].Text = mtrAux.PulsesMeter.ToString("F0");
metersListView.Items[2 * z + 2].SubItems[(int)Columns.Volume].Text = mtrAux.VolumeMeter.ToString("F2");
}
}
}
else
{
/// Mismatch between Batch.Compound, Batch.HeatMeter and currentMetersKind
}
}
void OnProcedureCompleted(object sender, ProcedureCompletedEventArgs args)
{
}
private void ProcessTabPageCtrl_Paint(object sender, PaintEventArgs e)
{
System.Drawing.Graphics formGraphics = this.CreateGraphics();
System.Drawing.SolidBrush filledBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Blue);
System.Drawing.SolidBrush emptyBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Gray);
System.Drawing.SolidBrush benchBrush = (pumpOn ? filledBrush : emptyBrush);
int diam = 14; // pipe diameter (pixels)
int left = 20; // left-most pipe x-coordinate
int top = 14; // top-most pipe y-coordinate
int topLeft = 876;
int topRight = 966;
int divTop = 40;
int bottom = 504; // bottom-most pipe y-coordinate
int benchTop = 378; // bench-pipe top y-coordinate
int pumpLeft = 779;
int pumpWdth = 38;
/// Pipes
formGraphics.FillRectangle(filledBrush,new Rectangle(pumpLeft+pumpWdth, bottom-diam, 65, diam)); // tank -> pump
formGraphics.FillRectangle(benchBrush, new Rectangle(left, bottom-diam, pumpLeft-left, diam)); // pump ->bench horizontal
formGraphics.FillRectangle(benchBrush, new Rectangle(left, benchTop, diam, bottom-benchTop)); // ->bench vertical
formGraphics.FillRectangle(benchBrush, new Rectangle(left + diam, benchTop, topLeft-left, diam)); // bench horizontal
formGraphics.FillRectangle(benchBrush, new Rectangle(topLeft, top + diam, diam, benchTop-top-diam)); // bench -> top vertical
formGraphics.FillRectangle(benchBrush, new Rectangle(topLeft, top, topRight-topLeft, diam)); // top horizontal
formGraphics.FillRectangle(benchBrush, new Rectangle(topRight-diam, top+diam, diam, divTop-top-diam)); // top -> diverter vertical
/// Diverter
int displacement = diverterToTank ? 25 : -25;
Point[] points = new Point[4];
points[0].X = topRight - diam;
points[0].Y = divTop;
points[1].X = topRight;
points[1].Y = divTop;
points[2].X = topRight + displacement;
points[2].Y = divTop + 50;
points[3].X = topRight - diam + displacement;
points[3].Y = divTop + 50;
formGraphics.FillPolygon(benchBrush, points);
/// Sink
formGraphics.FillEllipse(emptyBrush, topRight - diam / 2 - 45, divTop + 50, 40, 30);
formGraphics.DrawEllipse(Pens.Black, topRight - diam / 2 - 45, divTop + 50, 40, 30);
/// Tank
formGraphics.DrawRectangle(Pens.Black, topRight - diam / 2, divTop + 51, 60, 80);
emptyBrush.Dispose();
filledBrush.Dispose();
formGraphics.Dispose();
}
private void PaintBypass(System.Drawing.Graphics formGraphics, System.Drawing.SolidBrush brush, int startX, int startY)
{
int w = 80;
int h = 43;
int diam = 10; // pipe diameter (pixels)
formGraphics.FillRectangle(brush, new Rectangle(startX, startY, diam, h - diam));
formGraphics.FillRectangle(brush, new Rectangle(startX, startY + h - diam, w, diam));
formGraphics.FillRectangle(brush, new Rectangle(startX + w - diam, startY, diam, h));
}
}
}

View File

@ -1,237 +0,0 @@
<?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>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACYAAAAjCAYAAAD48HgdAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADrwAAA68AZW8ckkAAAN0SURBVFhHxZg5SDNBGIZHiTZBEA9UEESE2ARvxIMIVuJV
qY0iKoithSBok87CIFgZwUIQlEDEo7EQBRuJKNiYSsFSsDJaeRTf7zvLbvb4drObqH/xNNmZ93symWsj
UqkU6RkeHiYhxH9B72ERA1NTU2zH3+T29tbgwIqdnp7KxvPzgoh+j89PQUVFgmZnZy0OrBg4OzuTcuEw
H5orT0/KSE1OTrL1bcXAxcWF7Hxzw4fnAnILCwvZusBRDAQCARny9sYXyIbVVWcpkFEMBINBKijgi3hl
eVkZrYeHB7aWiisxdb5VVvLF3ILFhJyRkRG2jh5XYiAej8vQtTW+qBuqqwUNDQ2x+WZci4GlpSUpt7nJ
F7bj40NQcbGg/v5+NpfDkxhoaGiQcqkUL8GB9kofPpPDsxioqKiQhd7feRE9h4eC8vPz6erqSuu/sbFB
VVVVEp/Pp4mD7u5u2SYrsUQiIUP8fl5GZXtbKZZMJi0ZJycn37t+kZRWpe7u7rTnWYmBo6MjGeY03/C8
tbVV6zM3N0dtbW2aiMri4qL8svr8rMWAWiQWs0oFg4La29tpfHycxsbGDCItLS20srIin4XDYTY7JzFQ
X18vix0cpKUCAeOIgNHRUZqentb6mUfITM5ioLa2lpqarDJYJJ2dnWyfTGQthvsTMMuocH284Flsd3eX
SktLKS8vzyLz/CyorOwPxSYmJqirq8sigom7t7cnf8re3vQcwzN8xmW5xVZsZmZGHracTCQS0dph8vf0
pKUAFgLa4pk+0wsGMezIjY2NFpm+vj65tPVtQU1NDYVCRikVbCHou7W1ZennBoOYuvQBNkanm8Dx8bFs
hyOHEwN1dUoWNmMuwwmDWHNzM0WjUUMDDvV+lkjwQnpwbPn9fnp8fGSz7HA1+fXEYjEplUzyImZw0KM9
9jQuzw7PYpiD5eWCvr54EY54XJHDlYnL5PAk1tHR8T0P+eKZiEYVOYw4l23GtRjOOgRzRd0yMKDI7e/v
szX0uBI7Pz+XgevrfEEv4IUGWVwdPRnF7u/vZdDODl8oG3w+XIuCbD0VR7HLy0t5JuqvND/B66syaniZ
5uoCR7FQKCQDXl74ArkQiSjvAtfX12xtW7HBwUEqKfG2LXgFf9jgi2PDNtdnxRYWFmQHnHe/jd1isIip
b0B/Df4sTHuk6B/rrIep2LXHGgAAAABJRU5ErkJggg==
</value>
</data>
<data name="flowMeterPictureBox.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACYAAAAmCAYAAACoPemuAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADrwAAA68AZW8ckkAAAN+SURBVFhHtZi5SgRBEIbbW8QjkRXBKxPWEwRF1EjQSBDE
RFBxDdRdEDxBUDDyJXwBH8DAzNxQQdDIR9g3aOfv3emp6qkd5zL4PHqqqn/6qO5qVa1WdVwqlYpWSqVG
iumztrZm2NraqtlLRo3IW9j6+rphZGQkbO8aS3x8fOiDg4Owc0ImJib04+OjjYvR8Tk5OeH2VIBEuVzm
DqC9XauODq3u76MZH6/Zuf4en5+f+ufnx7Czs8O+tba2RgsbR2DiYNjb0+ruThbSCPj097M46ByiNjY2
WPvKyopZa6Kwl5cXY2AdOju1mp+XO03C7q5WU1NMiM/g4KD++vrSs7OzjYUxUZg2qZMsjI0xUT09PXZa
8T80hISFpu/8XA6ehclJ1kdLS0u0MLbQMVL/IWpxMeiD0Oktl+/vb6vFCkNKsIZYU1LQrFBRXV21NjKt
T09PYWEsT+Wx0F28HGbjg+vr4BtpDwmjH1nAPFhYCGJjpKgogIGofz87OwuEsV2InEOdsrK0FMT2dp9o
A3wbDytsYGCg1ogFf3srO6bB2X3q5ka2A9vb1s4Ks45xjpm4zM0FcbGZrq5kO5/9fWtfLBYdYZJDGpaX
g5i9vbKNRP1cLRQKWnV3d+crbHo6iAeSLI26sKamJvwmQSTjJHjnnI2FG8LFhWzXCH4TsX/IxnGhO7uv
T7b5C1HYzIxsHAc6UkCyiUOuI+ZeY5JOHyU3YXT3pZ0+ChWWOl3QPIWFLtkkpS7MpAsmDHcxycHFzeiX
l7JdEo6PtWpuNvGssC4crOgAiiUnCj37kDzzOsJI5n94eKgJGxoaCjqLOsTpLSHvO5sf18PMIn68vr4G
H1DNSI7u9P119iUBxUc9LgoRKwyYg9PvFNUMdaQ3T1xdom4JaSAz9vz8zIWhQrad47zznaTrcJ6cntr4
o6OjRgsTZv7xBQDPKPI6nAcofuo7Eby/v8vCULa3tbVxMUC6DmcFy4X0sedtOqqFCbONxMEgBc6C8x5S
KpXCGtwG9y3BgGmVOkgD1hSZPuBqAEwYfXVB2Y4KmQbIVNYhJQwPs3iHh4dMDMUKo+9TeODw21Eh02AG
FA7I1JIAytERy+gUd025GGGbm5vMCa8uvgHKdlTI9LsFR1gUzpQBpAS6+xqh7JunR4cX7O3tTTQEq6ur
rJOk+MkzDp59zYlOXyP+83GYU9W/sZE2jpG87/4AAAAASUVORK5CYII=
</value>
</data>
<data name="watermeterPictureBox4.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACYAAAAeCAYAAABAFGxuAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADrwAAA68AZW8ckkAAAIGSURBVFhH7de/SwJhGAfwtwJpUlBwaVIEcXDVxcUxQaS1
QdLVwTnQv0AcGgUdo9U1dNAWHVwiEQKFaAkCwZqq5el53rvT03v8cXqeDQ0fjXu97/PFO+w9MZlMYFO1
Wg2EEJbg8vX+iy3i8vW2KHaEznbkgm63C6PRiJ1DtijmQLCjMRLg8/mgUqmwsw5UTEN5UfD7/ZDL5eZm
mSqWz+cxyMpimhZS7r12uy1n4d/GG3O5Y8QFWyWCTpCcRy8lRK3XeUJcoJVGaFrsXj34V9hYrFrtQSj0
wa4Z2VgsGh1Dq9WS79z6PBuLkUbjQZZLJN7Y9ZkVxYrFgQzZl3j83TBz5oDFms02uN3fhrmKAxbzer8M
M2dWFNsH7R4Lh+mXnf+MwsZi6fSLLBUMfrLr82wsVio9ssd5NhYzZ1rsEhXVg4dA3ybN12CnSCQCRCkY
UP0gLmAfnpGQHfQM+zGlIO257hAXZLUMJJPJuQ6yx+KBfr+P/3CreAIVTOoC9uEK8Q8mS3ew5XIZYrEY
nuhCN2qQlQZIQL1eZ+ev3VoHAgFwOOjSXqNXNXRXSqlOp8POJBvt+Xu9ngwS4lQN3oVy+egJybLHt2w2
K0OFOFeHmJFByn5+2eXTM1WMDIdD8Hg8coAQtyquCKGfHVq/kOekUik2k2O6mKZQKOBAKrea0+nE7Y2b
zVhuAr/Ce2bVcGWw1gAAAABJRU5ErkJggg==
</value>
</data>
<data name="watermeterPictureBox3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACYAAAAeCAYAAABAFGxuAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADrwAAA68AZW8ckkAAAIGSURBVFhH7de/SwJhGAfwtwJpUlBwaVIEcXDVxcUxQaS1
QdLVwTnQv0AcGgUdo9U1dNAWHVwiEQKFaAkCwZqq5el53rvT03v8cXqeDQ0fjXu97/PFO+w9MZlMYFO1
Wg2EEJbg8vX+iy3i8vW2KHaEznbkgm63C6PRiJ1DtijmQLCjMRLg8/mgUqmwsw5UTEN5UfD7/ZDL5eZm
mSqWz+cxyMpimhZS7r12uy1n4d/GG3O5Y8QFWyWCTpCcRy8lRK3XeUJcoJVGaFrsXj34V9hYrFrtQSj0
wa4Z2VgsGh1Dq9WS79z6PBuLkUbjQZZLJN7Y9ZkVxYrFgQzZl3j83TBz5oDFms02uN3fhrmKAxbzer8M
M2dWFNsH7R4Lh+mXnf+MwsZi6fSLLBUMfrLr82wsVio9ssd5NhYzZ1rsEhXVg4dA3ybN12CnSCQCRCkY
UP0gLmAfnpGQHfQM+zGlIO257hAXZLUMJJPJuQ6yx+KBfr+P/3CreAIVTOoC9uEK8Q8mS3ew5XIZYrEY
nuhCN2qQlQZIQL1eZ+ev3VoHAgFwOOjSXqNXNXRXSqlOp8POJBvt+Xu9ngwS4lQN3oVy+egJybLHt2w2
K0OFOFeHmJFByn5+2eXTM1WMDIdD8Hg8coAQtyquCKGfHVq/kOekUik2k2O6mKZQKOBAKrea0+nE7Y2b
zVhuAr/Ce2bVcGWw1gAAAABJRU5ErkJggg==
</value>
</data>
<data name="watermeterPictureBox2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACYAAAAeCAYAAABAFGxuAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADrwAAA68AZW8ckkAAAIGSURBVFhH7de/SwJhGAfwtwJpUlBwaVIEcXDVxcUxQaS1
QdLVwTnQv0AcGgUdo9U1dNAWHVwiEQKFaAkCwZqq5el53rvT03v8cXqeDQ0fjXu97/PFO+w9MZlMYFO1
Wg2EEJbg8vX+iy3i8vW2KHaEznbkgm63C6PRiJ1DtijmQLCjMRLg8/mgUqmwsw5UTEN5UfD7/ZDL5eZm
mSqWz+cxyMpimhZS7r12uy1n4d/GG3O5Y8QFWyWCTpCcRy8lRK3XeUJcoJVGaFrsXj34V9hYrFrtQSj0
wa4Z2VgsGh1Dq9WS79z6PBuLkUbjQZZLJN7Y9ZkVxYrFgQzZl3j83TBz5oDFms02uN3fhrmKAxbzer8M
M2dWFNsH7R4Lh+mXnf+MwsZi6fSLLBUMfrLr82wsVio9ssd5NhYzZ1rsEhXVg4dA3ybN12CnSCQCRCkY
UP0gLmAfnpGQHfQM+zGlIO257hAXZLUMJJPJuQ6yx+KBfr+P/3CreAIVTOoC9uEK8Q8mS3ew5XIZYrEY
nuhCN2qQlQZIQL1eZ+ev3VoHAgFwOOjSXqNXNXRXSqlOp8POJBvt+Xu9ngwS4lQN3oVy+egJybLHt2w2
K0OFOFeHmJFByn5+2eXTM1WMDIdD8Hg8coAQtyquCKGfHVq/kOekUik2k2O6mKZQKOBAKrea0+nE7Y2b
zVhuAr/Ce2bVcGWw1gAAAABJRU5ErkJggg==
</value>
</data>
<data name="pumpPictureBox.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACYAAAAmCAYAAACoPemuAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADrwAAA68AZW8ckkAAALTSURBVFhH7Ze9ajJBFIbXP0iRBAL+QMDa3hRqIbkAQSw1
iCRaWHgHuQBLwU7SpLBKaRmSXhOwScQmZW5AUqWb7Lt6ds7uHmMkO3x8kOKBXefMOw/O7jLHWq1W6jdE
IhFlWVYAqXYf9hbLZDIOXKJUKqlms+nCx+LxuFM/Ho/FvG38SGw6napGo+FZsN/v/4hqterOSaVSqtfr
iWv42SlWLBY9QoQkIcHFOMvlUlyP+FYsl8uJoUCSkNgmhi2W1iREsdFopMrlshtycmLZW2Cp62sdLElI
cLH7e0tdXOiMWCymKpVKYH0ginGp01NLKbXmt2KUc35uqcNDnTWfzwMOATG+fbe3OixMMfD+rrPwz/k9
PGL8Qef/FBGmGHh+1nl45haLRVAMnwQqwjPlDwFhiwFsK40PBoOgGP9O4UGXQkyIARoHATEaaLflycCU
GN5WqqnX6+Sjf4zFLPX0JE8GpsRALqezN+iboyN5EmFS7PFRZ2/QN9IEjkkxcHys8230jVTM+SdijYZc
zDEt9vGh823WF62WXMwxLQao1mZ98Se2A6q1WV/8ie2Aam30jVTIMS32f33HwM2NPIEwKYaD48GBzrfQ
80WjUecGx93PT3kiMCl2d6ezHXDEQDNKPzw8yBOBSTGqKRQKajKZ6PNYMpl0B3E+kiabEiuVdO5wOPQe
FNEh0yBaLCnAhNjbm85MJBKOi0fMudkUAJzF/SFhi728oAnRmbPZTBZD2w5rFOFFwJvCg8IWu7zUea1W
y/UAHjECfR5NQItFQWGJvb5a6upKZ7Xb7YCDKIa2nSYB2tYwxPBM8e0DkoMoBtC2838OnJ3pa0lCgovx
tw90Oh1xbbBVjECHzMMISUKCi3H8z5SfnWJo29Eh+4MlCQm/GF4u/vZtY6cYB80oLZDP51263a5Hho9l
s1mnHl90+nj+hL3EOOl02oFE/dB4rVYT53/PSn0BMb7xlEsaQlIAAAAASUVORK5CYII=
</value>
</data>
<data name="reservoirPictureBox.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAI4AAABtCAYAAAB3LVkkAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADrwAAA68AZW8ckkAAAEuSURBVHhe7dIxDoAwEAQx/v/pQFJQBaRM7ZN8zbZzPTcg
mG/AAeGQCIdEOCTCIREOiXBIhEMiHBLhkAiHRDgkwiERDolwSIRDIhwS4ZAIh0Q4JMIhEQ6JcEiEQyIc
EuGQCIdEOCTCIREOiXBIhEMiHBLhkAiHRDgkwiERDolwSIRDIhwS4ZAIh0Q4JMIhEQ6JcEiEQyIcEuGQ
CIdEOCTCIREOiXBIhEMiHBLhkAiHRDgkwiERDolwSIRDIhwS4ZAIh0Q4JMIhEQ6JcEiEQyIcEuGQCIdE
OCTCIREOiXBIhEMiHJIVzm6AP8IhEQ6JcEiEQyIcEuGQCIdEOCTCIREOiXBIhEMiHBLhkKxw5tuN8EU4
JMIhEQ6JcEiEQyIcEuGQCIdEOCTCIXnDgRPXuAF1p5ji1T6jKwAAAABJRU5ErkJggg==
</value>
</data>
</root>