Screens.ProcessTabPageHeatmetersCtrl added, ver. 2.18.1148
This commit is contained in:
@@ -63,8 +63,8 @@ namespace TBF.BenchControl.Keithley.Multimeter_2010_RS232
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Ambient temperature / humidity / pressure meter 'Greco' connected via serial interface (RS232)
|
/// Keithley mulltimeter connected via serial interface (RS232)
|
||||||
/// Connection settings: 19200 Bd 8-bits No-parity 1-stop-bit Flow control: none or hardware.
|
/// Connection settings: 9600Bd 8-bits no-parity 1-stop-bit flow control: none
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public Multimeter(Generic.IComponentCfg cfg)
|
public Multimeter(Generic.IComponentCfg cfg)
|
||||||
: base(cfg)
|
: base(cfg)
|
||||||
|
|||||||
Generated
+4
-1
@@ -679,9 +679,12 @@ namespace TBF
|
|||||||
#elif TURA_SPECIAL || BADGER_MALA_TRAT || BADGER_STREDNA_TRAT || BADGER_VELKA_TRAT || SLM_END || WARSAW_END || RUM_MOB || SENTEC || CEVAK_200
|
#elif TURA_SPECIAL || BADGER_MALA_TRAT || BADGER_STREDNA_TRAT || BADGER_VELKA_TRAT || SLM_END || WARSAW_END || RUM_MOB || SENTEC || CEVAK_200
|
||||||
private ControlComponent_Torino2015.UserControl1 ctrlBrdComponent;
|
private ControlComponent_Torino2015.UserControl1 ctrlBrdComponent;
|
||||||
private TBF.Screens.ProcessTabPageCtrl6 processTabPageCtrl;
|
private TBF.Screens.ProcessTabPageCtrl6 processTabPageCtrl;
|
||||||
#elif TORINO_50 || TORUN_50 || CEVAK_40 || MURES_40 || FUZHOU_50 || MALTA_WSD25 || SLM_50 || PETERSBURG_50 || KEMPNO_50 || BAHRAIN_50 || KRAKOW_50 || JUZNA_AFRIKA_50 || IZRAEL_25 || ZAMBIA || ZODINO || FEWA_50 || FUZHOU_100
|
#elif TORINO_50 || TORUN_50 || CEVAK_40 || MURES_40 || FUZHOU_50 || MALTA_WSD25 || PETERSBURG_50 || KEMPNO_50 || BAHRAIN_50 || KRAKOW_50 || JUZNA_AFRIKA_50 || IZRAEL_25 || ZAMBIA || ZODINO || FEWA_50 || FUZHOU_100
|
||||||
private ControlComponent_Torino2015.UserControl1 ctrlBrdComponent;
|
private ControlComponent_Torino2015.UserControl1 ctrlBrdComponent;
|
||||||
private TBF.Screens.ProcessTabPageCtrl24 processTabPageCtrl;
|
private TBF.Screens.ProcessTabPageCtrl24 processTabPageCtrl;
|
||||||
|
#elif SLM_50
|
||||||
|
private ControlComponent_Torino2015.UserControl1 ctrlBrdComponent;
|
||||||
|
private TBF.Screens.ProcessTabPageHeatMetersCtrl processTabPageCtrl;
|
||||||
#elif TURA_IPERL || IZRAEL_50
|
#elif TURA_IPERL || IZRAEL_50
|
||||||
private ControlComponent_Torino2015.UserControl1 ctrlBrdComponent;
|
private ControlComponent_Torino2015.UserControl1 ctrlBrdComponent;
|
||||||
private TBF.Screens.ProcessTabPageCtrl48 processTabPageCtrl;
|
private TBF.Screens.ProcessTabPageCtrl48 processTabPageCtrl;
|
||||||
|
|||||||
@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
|
|||||||
// Build Number
|
// Build Number
|
||||||
// Revision
|
// Revision
|
||||||
//
|
//
|
||||||
[assembly: AssemblyVersion("2.18.1147.0")]
|
[assembly: AssemblyVersion("2.18.1148.0")]
|
||||||
[assembly: AssemblyFileVersion("2.18.1147.0")]
|
[assembly: AssemblyFileVersion("2.18.1148.0")]
|
||||||
|
|||||||
+3404
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,677 @@
|
|||||||
|
///
|
||||||
|
/// Copyright (c) 2019 Sensus Slovensko a.s.
|
||||||
|
///
|
||||||
|
using System;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using log4net;
|
||||||
|
using Config.Entities;
|
||||||
|
using TBF.BenchControl.Sequences;
|
||||||
|
using TBF.UiBridge;
|
||||||
|
using TBF.Resources;
|
||||||
|
|
||||||
|
#pragma warning disable 162 /// Disables 'Unreachable code detected' warning
|
||||||
|
|
||||||
|
namespace TBF.Screens
|
||||||
|
{
|
||||||
|
public partial class ProcessTabPageHeatMetersCtrl : UserControl
|
||||||
|
{
|
||||||
|
static readonly ILog log = LogManager.GetLogger(typeof(ProcessTabPageHeatMetersCtrl));
|
||||||
|
|
||||||
|
MetersKind currentMetersKind;
|
||||||
|
|
||||||
|
int textBoxesCount;
|
||||||
|
|
||||||
|
Label[] meter;
|
||||||
|
Label[] sensor;
|
||||||
|
Label[] pulses;
|
||||||
|
Label[] refPulses;
|
||||||
|
Label[] volume;
|
||||||
|
Label[] error;
|
||||||
|
Label[] passed;
|
||||||
|
Label[] cmpndVolume;
|
||||||
|
Label[] cmpndError;
|
||||||
|
Label[] cmpndPassed;
|
||||||
|
|
||||||
|
bool pumpOn = true;
|
||||||
|
bool diverterToTank = true;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Constructor, initializes anonymous event handlers
|
||||||
|
/// </summary>
|
||||||
|
public ProcessTabPageHeatMetersCtrl()
|
||||||
|
{
|
||||||
|
currentMetersKind = MetersKind.Single;
|
||||||
|
|
||||||
|
InitializeComponent();
|
||||||
|
|
||||||
|
textBoxesCount = 24;
|
||||||
|
meter = new Label[] {
|
||||||
|
meter1Label, meter2Label, meter3Label, meter4Label, meter5Label, meter6Label,
|
||||||
|
meter7Label, meter8Label, meter9Label, meter10Label, meter11Label, meter12Label,
|
||||||
|
meter13Label, meter14Label, meter15Label, meter16Label, meter17Label, meter18Label,
|
||||||
|
meter19Label, meter20Label, meter21Label, meter22Label, meter23Label, meter24Label,
|
||||||
|
};
|
||||||
|
sensor = new Label[] {
|
||||||
|
sensor1Label, sensor2Label, sensor3Label, sensor4Label, sensor5Label, sensor6Label,
|
||||||
|
sensor7Label, sensor8Label, sensor9Label, sensor10Label, sensor11Label, sensor12Label,
|
||||||
|
sensor13Label, sensor14Label, sensor15Label, sensor16Label, sensor17Label, sensor18Label,
|
||||||
|
sensor19Label, sensor20Label, sensor21Label, sensor22Label, sensor23Label, sensor24Label,
|
||||||
|
};
|
||||||
|
pulses = new Label[] {
|
||||||
|
pulses1Label, pulses2Label, pulses3Label, pulses4Label, pulses5Label, pulses6Label,
|
||||||
|
pulses7Label, pulses8Label, pulses9Label, pulses10Label, pulses11Label, pulses12Label,
|
||||||
|
pulses13Label, pulses14Label, pulses15Label, pulses16Label, pulses17Label, pulses18Label,
|
||||||
|
pulses19Label, pulses20Label, pulses21Label, pulses22Label, pulses23Label, pulses24Label,
|
||||||
|
};
|
||||||
|
refPulses = new Label[] {
|
||||||
|
refPulses1Label, refPulses2Label, refPulses3Label, refPulses4Label, refPulses5Label, refPulses6Label,
|
||||||
|
refPulses7Label, refPulses8Label, refPulses9Label, refPulses10Label, refPulses11Label, refPulses12Label,
|
||||||
|
refPulses13Label, refPulses14Label, refPulses15Label, refPulses16Label, refPulses17Label, refPulses18Label,
|
||||||
|
refPulses19Label, refPulses20Label, refPulses21Label, refPulses22Label, refPulses23Label, refPulses24Label,
|
||||||
|
};
|
||||||
|
volume = new Label[] {
|
||||||
|
volume1Label, volume2Label, volume3Label, volume4Label, volume5Label, volume6Label,
|
||||||
|
volume7Label, volume8Label, volume9Label, volume10Label, volume11Label, volume12Label,
|
||||||
|
volume13Label, volume14Label, volume15Label, volume16Label, volume17Label, volume18Label,
|
||||||
|
volume19Label, volume20Label, volume21Label, volume22Label, volume23Label, volume24Label,
|
||||||
|
};
|
||||||
|
error = new Label[] {
|
||||||
|
error1Label, error2Label, error3Label, error4Label, error5Label, error6Label,
|
||||||
|
error7Label, error8Label, error9Label, error10Label, error11Label, error12Label,
|
||||||
|
error13Label, error14Label, error15Label, error16Label, error17Label, error18Label,
|
||||||
|
error19Label, error20Label, error21Label, error22Label, error23Label, error24Label,
|
||||||
|
};
|
||||||
|
passed = new Label[] {
|
||||||
|
passed1Label, passed2Label, passed3Label, passed4Label, passed5Label, passed6Label,
|
||||||
|
passed7Label, passed8Label, passed9Label, passed10Label, passed11Label, passed12Label,
|
||||||
|
passed13Label, passed14Label, passed15Label, passed16Label, passed17Label, passed18Label,
|
||||||
|
passed19Label, passed20Label, passed21Label, passed22Label, passed23Label, passed24Label,
|
||||||
|
};
|
||||||
|
|
||||||
|
cmpndVolume = new Label[] { volume1zLabel, volume2zLabel, volume3zLabel };
|
||||||
|
cmpndError = new Label[] { error1zLabel, error2zLabel, error3zLabel };
|
||||||
|
cmpndPassed = new Label[] { passed1zLabel, passed2zLabel, passed3zLabel };
|
||||||
|
|
||||||
|
ShuffleLabels(Config.Data.WMsCount, Config.Data.LineSize);
|
||||||
|
|
||||||
|
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); }
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Make sure the layout of labels/text boxes on the screen
|
||||||
|
/// corresponds to the layout of watermeters of the test bench.
|
||||||
|
/// Enable only used labels.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="wmsCount">Number of watermeters</param>
|
||||||
|
/// <param name="lineSize">Number of watermeters in one line</param>
|
||||||
|
void ShuffleLabels(int wmsCount, int lineSize)
|
||||||
|
{
|
||||||
|
if (wmsCount < textBoxesCount && lineSize > 0)
|
||||||
|
{
|
||||||
|
int nrLines = (wmsCount + lineSize - 1) / lineSize;
|
||||||
|
int gap = (textBoxesCount - wmsCount) / nrLines;
|
||||||
|
|
||||||
|
int dest = 0;
|
||||||
|
for (int l = 0; l < nrLines; l++)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < lineSize; i++)
|
||||||
|
{
|
||||||
|
meter[dest] = meter[l * lineSize + l * gap + i];
|
||||||
|
meter[dest].Visible = true;
|
||||||
|
meter[dest].Text = string.Format("Meter {0}", dest + 1);
|
||||||
|
sensor[dest] = sensor[l * lineSize + l * gap + i];
|
||||||
|
sensor[dest].Visible = true;
|
||||||
|
pulses[dest] = pulses[l * lineSize + l * gap + i];
|
||||||
|
pulses[dest].Visible = true;
|
||||||
|
refPulses[dest] = refPulses[l * lineSize + l * gap + i];
|
||||||
|
refPulses[dest].Visible = true;
|
||||||
|
volume[dest] = volume[l * lineSize + l * gap + i];
|
||||||
|
volume[dest].Visible = true;
|
||||||
|
error[dest] = error[l * lineSize + l * gap + i];
|
||||||
|
error[dest].Visible = true;
|
||||||
|
passed[dest] = passed[l * lineSize + l * gap + i];
|
||||||
|
passed[dest].Visible = true;
|
||||||
|
dest++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
textBoxesCount = wmsCount;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ProcessTabPageCtrl_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Once();
|
||||||
|
ResetLabelsAndTargetVals();
|
||||||
|
ResetReadings();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Once()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void UpdateVisibility(MetersKind metersKind)
|
||||||
|
{
|
||||||
|
bool visible = (metersKind == MetersKind.Single || metersKind == MetersKind.HeatMeter);
|
||||||
|
|
||||||
|
for (int i = 2 * Config.Data.CompoundWMsCount; i < textBoxesCount; i++)
|
||||||
|
{
|
||||||
|
meter[i].Visible = visible;
|
||||||
|
sensor[i].Visible = visible;
|
||||||
|
pulses[i].Visible = visible;
|
||||||
|
refPulses[i].Visible = visible;
|
||||||
|
volume[i].Visible = visible;
|
||||||
|
error[i].Visible = visible;
|
||||||
|
passed[i].Visible = visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
groupBox1z.Visible = (metersKind == MetersKind.Combined) && (Config.Data.CompoundWMsCount >= 1);
|
||||||
|
groupBox2z.Visible = (metersKind == MetersKind.Combined) && (Config.Data.CompoundWMsCount >= 2);
|
||||||
|
groupBox3z.Visible = (metersKind == MetersKind.Combined) && (Config.Data.CompoundWMsCount >= 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <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 = "---";
|
||||||
|
|
||||||
|
scaleCmpntLabel.Text = "---";
|
||||||
|
|
||||||
|
if (currentMetersKind == MetersKind.Single || currentMetersKind == MetersKind.HeatMeter)
|
||||||
|
{
|
||||||
|
watermeterPictureBox1.Visible = true;
|
||||||
|
watermeterPictureBox2.Visible = true;
|
||||||
|
watermeterPictureBox3.Visible = true;
|
||||||
|
watermeterPictureBox4.Visible = true;
|
||||||
|
watermeterPictureBox5.Visible = true;
|
||||||
|
watermeterPictureBox6.Visible = true;
|
||||||
|
|
||||||
|
watermeterPictureBox1z.Visible = false;
|
||||||
|
watermeterPictureBox2z.Visible = false;
|
||||||
|
watermeterPictureBox3z.Visible = false;
|
||||||
|
|
||||||
|
groupBox1z.Visible = false;
|
||||||
|
groupBox2z.Visible = false;
|
||||||
|
groupBox3z.Visible = false;
|
||||||
|
|
||||||
|
sensor1Label.Text = "---";
|
||||||
|
|
||||||
|
for (int i = 0; i < textBoxesCount; i++)
|
||||||
|
{
|
||||||
|
sensor[i].Text = "---";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (currentMetersKind == MetersKind.Combined)
|
||||||
|
{
|
||||||
|
watermeterPictureBox1.Visible = false;
|
||||||
|
watermeterPictureBox2.Visible = true;
|
||||||
|
watermeterPictureBox3.Visible = false;
|
||||||
|
watermeterPictureBox4.Visible = false;
|
||||||
|
watermeterPictureBox5.Visible = false;
|
||||||
|
watermeterPictureBox6.Visible = false;
|
||||||
|
|
||||||
|
watermeterPictureBox1z.Visible = true;
|
||||||
|
watermeterPictureBox2z.Visible = false;
|
||||||
|
watermeterPictureBox3z.Visible = false;
|
||||||
|
|
||||||
|
groupBox1z.Visible = true;
|
||||||
|
groupBox2z.Visible = false;
|
||||||
|
groupBox3z.Visible = false;
|
||||||
|
|
||||||
|
sensor1Label.Visible = true;
|
||||||
|
sensor1Label.Text = "---";
|
||||||
|
sensor2Label.Visible = true;
|
||||||
|
sensor2Label.Text = "---";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Called when a new procedure or a new test procedure is selected
|
||||||
|
/// </summary>
|
||||||
|
void ResetReadings()
|
||||||
|
{
|
||||||
|
/// Top part
|
||||||
|
airTempLabel.Text = "---";
|
||||||
|
airPressLabel.Text = "---";
|
||||||
|
airHumiLabel.Text = "---";
|
||||||
|
|
||||||
|
refPulsesLabel.Text = "---";
|
||||||
|
refFreqLabel.Text = "---";
|
||||||
|
refFlowLabel.Text = "---";
|
||||||
|
refVolumeLabel.Text = "---";
|
||||||
|
|
||||||
|
regValvePosLabel.Text = "---";
|
||||||
|
tDivLabel.Text = "---";
|
||||||
|
|
||||||
|
tInLabel.Text = "---";
|
||||||
|
tOutLabel.Text = "---";
|
||||||
|
prInLabel.Text = "---";
|
||||||
|
prOutLabel.Text = "---";
|
||||||
|
|
||||||
|
massLabel.Text = "---";
|
||||||
|
massDiffLabel.Text = "---";
|
||||||
|
volumeCtvLabel.Text = "---";
|
||||||
|
refErrorLabel.Text = "---";
|
||||||
|
|
||||||
|
/// Meters
|
||||||
|
pulses1Label.Text = "---";
|
||||||
|
refPulses1Label.Text = "---";
|
||||||
|
volume1Label.Text = "---";
|
||||||
|
error1Label.Text = "---";
|
||||||
|
passed1Label.Text = "---";
|
||||||
|
|
||||||
|
if (currentMetersKind == MetersKind.Single || currentMetersKind == MetersKind.HeatMeter)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < textBoxesCount; i++)
|
||||||
|
{
|
||||||
|
pulses[i].Text = "---";
|
||||||
|
refPulses[i].Text = "---";
|
||||||
|
volume[i].Text = "---";
|
||||||
|
error[i].Text = "---";
|
||||||
|
passed[i].Text = "---";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (currentMetersKind == MetersKind.Combined)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < 2; i++)
|
||||||
|
{
|
||||||
|
pulses[i].Text = "---";
|
||||||
|
refPulses[i].Text = "---";
|
||||||
|
volume[i].Text = "---";
|
||||||
|
error[i].Text = "---";
|
||||||
|
passed[i].Text = "---";
|
||||||
|
}
|
||||||
|
volume1zLabel.Text = "---";
|
||||||
|
error1zLabel.Text = "---";
|
||||||
|
passed1zLabel.Text = "---";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnProcedureSelected(object sender, ProcedureSelectedEventArgs args)
|
||||||
|
{
|
||||||
|
currentMetersKind = args.Procedure.MetersKind;
|
||||||
|
UpdateVisibility(currentMetersKind);
|
||||||
|
ResetLabelsAndTargetVals();
|
||||||
|
ResetReadings();
|
||||||
|
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.TstTime.ToString("F1");
|
||||||
|
|
||||||
|
/// Names of virtual bench components
|
||||||
|
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.TempDiv != null) tDivCmpntLabel.Text = args.OutputPath.TempDiv.Name;
|
||||||
|
if (args.OutputPath.FlowMeter != null) refFlowCmpntLabel.Text = args.OutputPath.FlowMeter.Name;
|
||||||
|
if (args.OutputPath.RegulValve != null) regValveCmpntLabel.Text = args.OutputPath.RegulValve.Name;
|
||||||
|
if (args.OutputPath.Scale != null) scaleCmpntLabel.Text = args.OutputPath.Scale.Name;
|
||||||
|
|
||||||
|
for (int i = 0; i < textBoxesCount; i++)
|
||||||
|
{
|
||||||
|
sensor[i].Text = (args.MetersPath.RegisterReaders[i] == null) ? "" : args.MetersPath.RegisterReaders[i].Cfg.Name;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (args.FeedingPath != null && (args.FeedingPath.Pump is BenchControl.GenericDevices.IPumpFM))
|
||||||
|
{
|
||||||
|
pumpPctTextBox.Visible = true;
|
||||||
|
pumpPctTextBox.Text = (args.FeedingPath.Pump as BenchControl.GenericDevices.IPumpFM).Power.ToString("F0") + " %";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pumpPctTextBox.Visible = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnProcessDataChanged(object sender, ProcessDataEventArgs args)
|
||||||
|
{
|
||||||
|
///
|
||||||
|
/// Always available
|
||||||
|
///
|
||||||
|
airTempLabel.Text = ProcessData.AmbTemp.ToString();
|
||||||
|
airPressLabel.Text = Config.Units.ConvertTo(Config.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 (args.TestPhase == Config.Entities.Progress.FlowSetting ||
|
||||||
|
args.TestPhase == Config.Entities.Progress.Test)
|
||||||
|
{
|
||||||
|
///
|
||||||
|
/// Available when setting the flow and during a test
|
||||||
|
///
|
||||||
|
refFreqLabel.Text = ProcessData.RefFreq.ToString();
|
||||||
|
refFlowLabel.Text = Utils.DoubleToStr(ProcessData.RefFlow.Val, 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (args.TestPhase == Config.Entities.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 * Config.Formulas.Buoyancy() * massDiff / Config.Formulas.WaterDensityFromTempPress((ProcessData.TempUp.Val + ProcessData.TempDown.Val) / 2,
|
||||||
|
(ProcessData.PressUp.Val + ProcessData.PressDown.Val) / 2,
|
||||||
|
Program.LocalSettings.RealDensity,
|
||||||
|
Program.LocalSettings.AtTemperature); /// [kg/m3]
|
||||||
|
volumeCtvLabel.Text = volumeCtv.ToString("F2");
|
||||||
|
double refError = Config.Formulas.ErrorFromVolumes(refVolume, volumeCtv);
|
||||||
|
refErrorLabel.Text = refError.ToString("F3");
|
||||||
|
|
||||||
|
if (currentMetersKind == MetersKind.Single || currentMetersKind == MetersKind.HeatMeter)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < Math.Min(textBoxesCount, ProcessData.RegisterReaders.Length); i++)
|
||||||
|
{
|
||||||
|
BenchControl.GenericDevices.IRegisterReader rr = ProcessData.RegisterReaders[i];
|
||||||
|
if (rr != null)
|
||||||
|
{
|
||||||
|
pulses[i].Text = rr.WMPulses.ToString();
|
||||||
|
refPulses[i].Text = rr.WMRefPulses.ToString();
|
||||||
|
volume[i].Text = rr.WMVolume.ToString("F1");
|
||||||
|
error[i].Text = Config.Formulas.ErrorFromVolumes(rr.WMVolume, rr.WMRefPulses * ProcessData.LtrPerRefPulse).ToString("F1");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (currentMetersKind == MetersKind.Combined)
|
||||||
|
{
|
||||||
|
for (int compMtr = 0; compMtr < Config.Data.CompoundWMsCount; compMtr++)
|
||||||
|
{
|
||||||
|
int end = Math.Min(2 * compMtr + 2, Math.Min(textBoxesCount, ProcessData.RegisterReaders.Length));
|
||||||
|
|
||||||
|
double compoundVolume = 0;
|
||||||
|
for (int i = 2 * compMtr; i < end; i++)
|
||||||
|
{
|
||||||
|
BenchControl.GenericDevices.IRegisterReader rr = ProcessData.RegisterReaders[i];
|
||||||
|
if (rr != null)
|
||||||
|
{
|
||||||
|
pulses[i].Text = rr.WMPulses.ToString();
|
||||||
|
refPulses[i].Text = rr.WMRefPulses.ToString();
|
||||||
|
volume[i].Text = rr.WMVolume.ToString("F1");
|
||||||
|
error[i].Text = Config.Formulas.ErrorFromVolumes(rr.WMVolume, rr.WMRefPulses * ProcessData.LtrPerRefPulse).ToString("F1");
|
||||||
|
compoundVolume += rr.WMVolume;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cmpndVolume[compMtr].Text = compoundVolume.ToString("F1");
|
||||||
|
cmpndError[compMtr].Text = Config.Formulas.ErrorFromVolumes(compoundVolume, refVolume).ToString("F1");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//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)
|
||||||
|
{
|
||||||
|
Results.Entities.TestRslt tRes = args.TestRslt;
|
||||||
|
if (tRes == null) return;
|
||||||
|
|
||||||
|
airTempLabel.Text = tRes.AmbTempMean.ToString("F1");
|
||||||
|
airPressLabel.Text = Config.Units.ConvertTo(Config.Unit.mbar, tRes.AmbPressMean).ToString("F0");
|
||||||
|
airHumiLabel.Text = tRes.AmbHumiMean.ToString("F1");
|
||||||
|
|
||||||
|
tInLabel.Text = tRes.TempUpMean.ToString("F2");
|
||||||
|
tOutLabel.Text = tRes.TempDownMean.ToString("F2");
|
||||||
|
tDivLabel.Text = tRes.TempDivMean.ToString("F2");
|
||||||
|
|
||||||
|
prInLabel.Text = tRes.PressUpMean.ToString("F2");
|
||||||
|
prOutLabel.Text = tRes.PressDownMean.ToString("F2");
|
||||||
|
|
||||||
|
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 (!tRes.Batch.Compound)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < Math.Min(textBoxesCount, ProcessData.BatchRslts.WaterMeters.Length); i++)
|
||||||
|
{
|
||||||
|
Results.Entities.WaterMeter wm = ProcessData.BatchRslts.WaterMeters[i];
|
||||||
|
Results.Entities.MeterTestRslt mtr = (wm != null) ? wm.GetMeterTestRslt(args.TestName) : null;
|
||||||
|
|
||||||
|
if (mtr != null)
|
||||||
|
{
|
||||||
|
pulses[i].Text = mtr.PulsesMeter.ToString("F0");
|
||||||
|
refPulses[i].Text = mtr.PulsesMaster.ToString("F0");
|
||||||
|
volume[i].Text = mtr.VolumeMeter.ToString("F2");
|
||||||
|
error[i].Text = mtr.Error.ToString("F2");
|
||||||
|
passed[i].Text = mtr.Passed ? Strings.Passed : Strings.Failed;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (int compMtr = 0; compMtr < Config.Data.CompoundWMsCount; compMtr++)
|
||||||
|
{
|
||||||
|
Results.Entities.WaterMeter wm = ProcessData.BatchRslts.WaterMeters[compMtr];
|
||||||
|
if (wm == null) continue;
|
||||||
|
|
||||||
|
int end = Math.Min(textBoxesCount, Config.Data.WMsCount);
|
||||||
|
|
||||||
|
Results.Entities.MeterTestRslt mtrMain = wm.GetMeterTestRslt(args.TestName, CompoundMeterId.CompoundMain);
|
||||||
|
if ((mtrMain != null) && (2 * compMtr < end))
|
||||||
|
{
|
||||||
|
pulses[2 * compMtr].Text = mtrMain.PulsesMeter.ToString("F0");
|
||||||
|
refPulses[2 * compMtr].Text = mtrMain.PulsesMaster.ToString("F0");
|
||||||
|
volume[2 * compMtr].Text = mtrMain.VolumeMeter.ToString("F2");
|
||||||
|
error[2 * compMtr].Text = mtrMain.Error.ToString("F2");
|
||||||
|
passed[2 * compMtr].Text = mtrMain.Passed ? Strings.Passed : Strings.Failed;
|
||||||
|
}
|
||||||
|
|
||||||
|
Results.Entities.MeterTestRslt mtrAux = wm.GetMeterTestRslt(args.TestName, CompoundMeterId.CompoundAux);
|
||||||
|
if ((mtrAux != null) && (2 * compMtr + 1 < end))
|
||||||
|
{
|
||||||
|
pulses[2 * compMtr + 1].Text = mtrAux.PulsesMeter.ToString("F0");
|
||||||
|
refPulses[2 * compMtr + 1].Text = mtrAux.PulsesMaster.ToString("F0");
|
||||||
|
volume[2 * compMtr + 1].Text = mtrAux.VolumeMeter.ToString("F2");
|
||||||
|
error[2 * compMtr + 1].Text = mtrAux.Error.ToString("F2");
|
||||||
|
passed[2 * compMtr + 1].Text = mtrAux.Passed ? Strings.Passed : Strings.Failed;
|
||||||
|
}
|
||||||
|
|
||||||
|
Results.Entities.MeterTestRslt mtrComp = wm.GetMeterTestRslt(args.TestName, CompoundMeterId.Compound);
|
||||||
|
if (mtrComp != null)
|
||||||
|
{
|
||||||
|
cmpndVolume[compMtr].Text = mtrComp.VolumeMeter.ToString("F2");
|
||||||
|
cmpndError[compMtr].Text = mtrComp.Error.ToString("F2");
|
||||||
|
cmpndPassed[compMtr].Text = mtrComp.Passed ? Strings.Passed : Strings.Failed;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
/// Combined meters bypasses
|
||||||
|
if (watermeterPictureBox1z.Visible) PaintBypass(formGraphics, benchBrush, 186, benchTop + diam);
|
||||||
|
if (watermeterPictureBox2z.Visible) PaintBypass(formGraphics, benchBrush, 470, benchTop + diam);
|
||||||
|
if (watermeterPictureBox3z.Visible) PaintBypass(formGraphics, benchBrush, 754, benchTop + diam);
|
||||||
|
|
||||||
|
/// 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,327 @@
|
|||||||
|
<?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="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>
|
||||||
|
<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="watermeterPictureBox1.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="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="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="watermeterPictureBox5.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="watermeterPictureBox6.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="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="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="watermeterPictureBox1z.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="watermeterPictureBox2z.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="watermeterPictureBox3z.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>
|
||||||
|
</root>
|
||||||
@@ -1879,6 +1879,10 @@
|
|||||||
<Compile Include="Screens\ProcessTabPageCtrl48.Designer.cs">
|
<Compile Include="Screens\ProcessTabPageCtrl48.Designer.cs">
|
||||||
<DependentUpon>ProcessTabPageCtrl48.cs</DependentUpon>
|
<DependentUpon>ProcessTabPageCtrl48.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="Screens\ProcessTabPageHeatMetersCtrl.cs" />
|
||||||
|
<Compile Include="Screens\ProcessTabPageHeatMetersCtrl.Designer.cs">
|
||||||
|
<DependentUpon>ProcessTabPageHeatMetersCtrl.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="SelectComponentClassDlg.cs">
|
<Compile Include="SelectComponentClassDlg.cs">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
@@ -2936,6 +2940,9 @@
|
|||||||
<EmbeddedResource Include="Screens\ProcessTabPageCtrl48.resx">
|
<EmbeddedResource Include="Screens\ProcessTabPageCtrl48.resx">
|
||||||
<DependentUpon>ProcessTabPageCtrl48.cs</DependentUpon>
|
<DependentUpon>ProcessTabPageCtrl48.cs</DependentUpon>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Screens\ProcessTabPageHeatMetersCtrl.resx">
|
||||||
|
<DependentUpon>ProcessTabPageHeatMetersCtrl.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
<EmbeddedResource Include="SelectComponentClassDlg.pl.resx">
|
<EmbeddedResource Include="SelectComponentClassDlg.pl.resx">
|
||||||
<DependentUpon>SelectComponentClassDlg.cs</DependentUpon>
|
<DependentUpon>SelectComponentClassDlg.cs</DependentUpon>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
|
|||||||
Reference in New Issue
Block a user