HeatMetersPath, UI, etc., HEAT_METERS_SUPPORT symbol introduced

ProcedureDlg modifications: (1) localization by TBF.Resources.Strings, (2) Heat meters support
FlyingStartMassCollection and CombinedMeters methods with similar sequences
This commit is contained in:
Milan Hanajik 2016-06-28 18:04:52 +02:00
parent 7cbbb2270b
commit 0ac1fe2b4e
42 changed files with 3181 additions and 2871 deletions

View File

@ -74,6 +74,7 @@
<Compile Include="Entities\Enums.cs" />
<Compile Include="Entities\FeedingPath.cs" />
<Compile Include="Entities\Group.cs" />
<Compile Include="Entities\HeatMetersPath.cs" />
<Compile Include="Entities\IHasItemNr.cs" />
<Compile Include="Entities\IHasValves.cs" />
<Compile Include="Entities\MeasurementCorrection.cs" />
@ -99,6 +100,7 @@
<Compile Include="Mappings\ComponentTestMap.cs" />
<Compile Include="Mappings\FeedingPathMap.cs" />
<Compile Include="Mappings\GroupMap.cs" />
<Compile Include="Mappings\HeatMetersPathMap.cs" />
<Compile Include="Mappings\MeasurementCorrectionMap.cs" />
<Compile Include="Mappings\MetersPathMap.cs" />
<Compile Include="Mappings\MeterTestResultMap.cs" />

View File

@ -67,6 +67,7 @@ namespace Config.Entities
{
Single,
Combined,
HeatMeter,
}
public enum CompoundMeterId : byte

View File

@ -0,0 +1,39 @@
///
/// Copyright (c) 2016 Sensus Metering Systems
///
using System;
namespace Config.Entities
{
public class HeatMetersPath : IHasItemNr
{
public virtual int Id { get; protected set; }
public virtual int ItemNr { get; set; }
public virtual string Name { get; set; }
public virtual string TempWarm { get; set; }
public virtual string TempCold { get; set; }
/// ------------- Additional stuff not mapped into the database -------------
public HeatMetersPath()
{
}
public HeatMetersPath(string name, int itemNr)
: this()
{
Name = name;
ItemNr = itemNr;
}
public virtual HeatMetersPath Clone(string name, int itemNr)
{
HeatMetersPath result = new HeatMetersPath(name, itemNr);
result.TempWarm = TempWarm;
result.TempCold = TempCold;
return result;
}
}
}

View File

@ -44,7 +44,10 @@ namespace Config.Entities
public virtual string BenchPath { get; set; }
public virtual string OutputPath { get; set; }
public virtual string MetersPath { get; set; }
public virtual string RelTransBefore { get; set; }
#if HEAT_METERS_SUPPORT
public virtual string HeatMetersPath { get; set; }
#endif
public virtual string RelTransBefore { get; set; }
public virtual string RelTransBetween { get; set; }
public virtual string RelTransAfter { get; set; }
public virtual string TransitionAfter { get; set; }
@ -126,6 +129,9 @@ namespace Config.Entities
result.BenchPath = BenchPath;
result.OutputPath = OutputPath;
result.MetersPath = MetersPath;
#if HEAT_METERS_SUPPORT
result.HeatMetersPath = HeatMetersPath;
#endif
result.RelTransBefore = RelTransBefore;
result.RelTransBetween = RelTransBetween;
result.RelTransAfter = RelTransAfter;

View File

@ -120,7 +120,12 @@ namespace Config.Entities
for (int i = 0; i < 2 * Config.Data.CompoundWMsCount; i++) Meters.Add(new MeterTestResult(this));
for (int i = 0; i < Config.Data.CompoundWMsCount; i++) CombinedMeters.Add(new MeterTestResult(this));
}
}
else if (kind == MetersKind.HeatMeter)
{
/// TODO: Verify if this is OK
for (int i = 0; i < Config.Data.WMsCount; i++) Meters.Add(new MeterTestResult(this));
}
}
public TestResult(Test test, int repetitionNr, MetersKind kind)
: this(kind)

View File

@ -0,0 +1,22 @@
///
/// Copyright (c) 2016 Sensus Metering Systems
///
using FluentNHibernate.Mapping;
using Config.Entities;
namespace Config.Mappings
{
#if HEAT_METERS_SUPPORT
class HeatMetersPathMap : ClassMap<HeatMetersPath>
{
public HeatMetersPathMap()
{
Id(x => x.Id);
Map(x => x.ItemNr);
Map(x => x.Name);
Map(x => x.TempWarm);
Map(x => x.TempCold);
}
}
#endif
}

View File

@ -44,7 +44,10 @@ namespace Config.Mappings
Map(x => x.BenchPath);
Map(x => x.OutputPath);
Map(x => x.MetersPath);
Map(x => x.RelTransBefore);
#if HEAT_METERS_SUPPORT
Map(x => x.HeatMetersPath);
#endif
Map(x => x.RelTransBefore);
Map(x => x.RelTransBetween);
Map(x => x.RelTransAfter);
Map(x => x.TransitionAfter);

View File

@ -49,7 +49,10 @@ namespace Results
ProtocolTitle = procedure.ProtocolTitle,
StartTime = DateTime.Now,
Compound = (procedure.MetersKind == Config.Entities.MetersKind.Combined),
};
#if HEAT_METERS_SUPPORT
HeatMeter = (procedure.MetersKind == Config.Entities.MetersKind.HeatMeter),
#endif
};
///
/// Add watermeter to an array, array index is WM position.

View File

@ -1,5 +1,5 @@
///
/// Copyright (c) 2015 Sensus Metering Systems
/// Copyright (c) 2015-2016 Sensus Metering Systems
///
using System;
using System.Collections.Generic;
@ -31,8 +31,11 @@ namespace Results.Entities
public virtual IList<WaterMeter> WaterMeters { get; set; }
public virtual IList<TestRslt> TestRslts { get; set; }
public virtual bool Compound { get; set; } /// Not mapped to DB now
#if HEAT_METERS_SUPPORT
public virtual bool HeatMeter { get; set; } /// Not mapped to DB now
#endif
public Batch()
public Batch()
{
Tests = new List<TestData>();
WaterMeters = new List<WaterMeter>();

View File

@ -51,7 +51,10 @@ namespace Results.Entities
public virtual double Q2_Qt() { return WaterMeterData.Q2_Qt; }
public virtual double Q1_Qmin() { return WaterMeterData.Q1_Qmin; }
public virtual bool Compound() { return WaterMeterData.Compound; }
public virtual bool Compound() { return WaterMeterData.Compound; }
#if HEAT_METER_SUPPORT
public virtual bool HeatMeter() { return WaterMeterData.HeatMeter; }
#endif
public virtual string ProducerAux() { return WaterMeterData.ProducerAux; }
public virtual double Q3_Qn_Aux() { return WaterMeterData.Q3_Qn_Aux; }

View File

@ -47,7 +47,9 @@ namespace Results.Entities
public virtual string Text5 { get; set; }
public virtual bool Compound { get; set; }
#if HEAT_METER_SUPPORT
public virtual bool HeatMeter { get; set; }
#endif
#if IPERLST || IPERLST_SPECIAL
public virtual int WMTypeId { get; set; }
public virtual int WMTypeRev { get; set; }

View File

@ -46,7 +46,9 @@ namespace Results.Mappings
Map(x => x.Text5);
Map(x => x.Compound);
#if HEAT_METER_SUPPORT
Map(x => x.HeatMeter);
#endif
#if IPERLST || IPERLST_SPECIAL
Map(x => x.WMTypeId);
Map(x => x.WMTypeRev);

View File

@ -0,0 +1,36 @@
///
/// Copyright (c) 2016 Sensus Metering Systems
///
using System.Collections.Generic;
using TBF.BenchControl.GenericDevices;
namespace TBF.BenchControl
{
public class HeatMetersPath
{
public int ItemNr;
public string Name;
public ITempMeter TempWarm;
public ITempMeter TempCold;
/// Constructor from name, the rest is empty
public HeatMetersPath(string name, int itemNr)
{
ItemNr = itemNr;
Name = name;
}
/// Constructor from data entity
public HeatMetersPath(Config.Entities.HeatMetersPath entity, IList<BenchControl.Generic.IComponent> components)
: this(entity.Name, entity.ItemNr)
{
TempWarm = TbfComponents.FindComponent(entity.TempWarm, components) as ITempMeter;
TempCold = TbfComponents.FindComponent(entity.TempCold, components) as ITempMeter;
}
public override string ToString()
{
return string.Format("{0}", Name);
}
}
}

View File

@ -487,8 +487,8 @@ namespace TBF.BenchControl.Sequences
/// Try to fetch all test paths and transitions
/// to detect configuration errors as early as possible.
string errorMsg;
if (!StateMachine.GetPaths(test, out inPath, out benchPath,
out outPath, out sensPath,
if (!StateMachine.GetPaths(test, out inPath, out benchPath, out outPath, out sensPath,
out heatMetersPath,
out transitionBefore, out transitionAfter,
out errorMsg))
{
@ -504,9 +504,9 @@ namespace TBF.BenchControl.Sequences
/// Fetch the test paths and transitions
string errorMsg;
if (!StateMachine.GetPaths(test, out inPath, out benchPath,
out outPath, out sensPath,
out transitionBefore, out transitionAfter,
if (!StateMachine.GetPaths(test, out inPath, out benchPath, out outPath, out sensPath,
out heatMetersPath,
out transitionBefore, out transitionAfter,
out errorMsg))
{
UiBridge.Bridge.OnError(this, errorMsg);
@ -585,9 +585,9 @@ namespace TBF.BenchControl.Sequences
/// Try to fetch all test paths and transitions
/// to detect configuration errors as early as possible.
string errorMsg;
if (!StateMachine.GetPaths(test, out inPath, out benchPath,
out outPath, out sensPath,
out transitionBefore, out transitionAfter,
if (!StateMachine.GetPaths(test, out inPath, out benchPath, out outPath, out sensPath,
out heatMetersPath,
out transitionBefore, out transitionAfter,
out errorMsg))
{
UiBridge.Bridge.OnError(this, errorMsg);
@ -602,9 +602,9 @@ namespace TBF.BenchControl.Sequences
/// Fetch the test paths and transitions
string errorMsg;
if (!StateMachine.GetPaths(test, out inPath, out benchPath,
out outPath, out sensPath,
out transitionBefore, out transitionAfter,
if (!StateMachine.GetPaths(test, out inPath, out benchPath, out outPath, out sensPath,
out heatMetersPath,
out transitionBefore, out transitionAfter,
out errorMsg))
{
UiBridge.Bridge.OnError(this, errorMsg);
@ -659,8 +659,8 @@ namespace TBF.BenchControl.Sequences
/// Fetch the test paths and transitions
string errorMsg;
if (!StateMachine.GetPaths(test, out inPath, out benchPath,
out outPath, out sensPath,
if (!StateMachine.GetPaths(test, out inPath, out benchPath, out outPath, out sensPath,
out heatMetersPath,
out transitionBefore, out transitionAfter,
out errorMsg))
{

View File

@ -54,6 +54,8 @@ namespace TBF.BenchControl.Sequences
protected static BenchControl.BenchPath benchPath;
protected static BenchControl.OutputPath outPath;
protected static BenchControl.MetersPath sensPath;
protected static BenchControl.HeatMetersPath heatMetersPath;
protected static TransitionSequence transitionBefore;
protected static TransitionSequence transitionAfter;

View File

@ -38,7 +38,8 @@ namespace TBF.BenchControl
static IList<Config.Entities.BenchPath> benchPaths;
static IList<Config.Entities.OutputPath> outputPaths;
static IList<Config.Entities.MetersPath> metersPaths;
public static IList<Config.Entities.TransitionSequence> TransitionSequences;
static IList<Config.Entities.HeatMetersPath> heatMetersPaths;
public static IList<Config.Entities.TransitionSequence> TransitionSequences;
/// Public components
public static Elde.ControlBoardDev ControlBoard;
@ -324,7 +325,10 @@ namespace TBF.BenchControl
benchPaths = session.CreateQuery("FROM BenchPath ORDER BY ItemNr").List<Config.Entities.BenchPath>();
outputPaths = session.CreateQuery("FROM OutputPath ORDER BY ItemNr").List<Config.Entities.OutputPath>();
metersPaths = session.CreateQuery("FROM MetersPath ORDER BY ItemNr").List<Config.Entities.MetersPath>();
TransitionSequences = session.CreateQuery("FROM TransitionSequence ORDER BY ItemNr").List<TransitionSequence>();
TransitionSequences = session.CreateQuery("FROM TransitionSequence ORDER BY ItemNr").List<TransitionSequence>();
#if HEAT_METERS_SUPPORT
heatMetersPaths = session.CreateQuery("FROM HeatMetersPath ORDER BY ItemNr").List<Config.Entities.HeatMetersPath>();
#endif
// Automatic detection of empty tank valves
foreach (var opath in outputPaths)
@ -418,13 +422,15 @@ namespace TBF.BenchControl
out BenchPath pben,
out OutputPath pout,
out MetersPath pmtrs,
out TransitionSequence transitionBefore,
out HeatMetersPath phmtrs,
out TransitionSequence transitionBefore,
out TransitionSequence transitionAfter,
out string errorMsg)
{
pfeed = null;
pben = null;
pout = null;
phmtrs = null;
transitionBefore = null;
transitionAfter = null;
@ -445,17 +451,29 @@ namespace TBF.BenchControl
pmtrs = GetMetersPath(test);
foreach (var tr in TransitionSequences)
{
if (tr.Name == test.RelTransBefore) transitionBefore = tr;
if (tr.Name == test.TransitionAfter) transitionAfter = tr;
}
if ((pfeed == null) || (pben == null) || (pout == null) || (pmtrs == null))
{
errorMsg = "Cannot load paths";
return false;
}
if ((pfeed == null) || (pben == null) || (pout == null) || (pmtrs == null))
#if HEAT_METERS_SUPPORT
foreach (var path in heatMetersPaths)
{
if (test.HeatMetersPath == path.Name) { phmtrs = new HeatMetersPath(path, components); break; }
}
if (phmtrs == null)
{
errorMsg = "Cannot load paths";
return false;
}
#endif
foreach (var tr in TransitionSequences)
{
if (tr.Name == test.RelTransBefore) transitionBefore = tr;
if (tr.Name == test.TransitionAfter) transitionAfter = tr;
}
if (pout.Balance == null)
{

View File

@ -29,35 +29,27 @@ namespace TBF.BenchControl.TestMethods.CombinedMeters
public IList<Event> Execute(Config.Entities.Test test, CombinedTestParams testParams)
{
Elde.ControlBoardDev cBrd = StateMachine.ControlBoard;
IList<Event> e = new List<Event>(); /// Events from currently running operations
Event retVal = Event.Done;
checkUiOp = new Operations.CheckUIOp(true); /// Runs in more then one state
LtrPerRefPulse = outPath.FlowMeter.LtrPerPulse; /// [ltr/pulse], nominal flow in [m3/h]
/// Notes:
/// float timeHr = volumeLtr / (1000.0f * targetFlow);
/// float timeSec = 3600.0f * timeHr;
/// int refPulses = (int)(timeSec * (2000.0f * targetFlow / pOut.FlowMeter.NominalFlow));
int totalPulses = (int)(test.Volume / LtrPerRefPulse + 0.5f);
LtrPerRefPulse = outPath.FlowMeter.NominalFlow / 7200.0f; /// [ltr/pulse]
///
processDataLoggingOp = new TBF.BenchControl.Operations.ProcessDataLoggingOp(processDataLogger, this);
int repetitionNr = 1; /// First test: repetitionNr=1
//====================================
// Transition or SetRoute - Start
//====================================
LtrPerRefPulse = outPath.FlowMeter.LtrPerPulse;
int totalPulses = (int)(test.Volume / LtrPerRefPulse + 0.5f);
int repetitionNr = 1; /// First test: repetitionNr = 1
//====================================
// Transition or SetRoute - Start
//====================================
switch (Transition(transitionBefore, TransitionContext.BeforeTest))
{
case Event.Error: { retVal = Event.Error; goto stopTest; }
case Event.UiCmdStop: { retVal = Event.UiCmdStop; goto stopTest; }
}
//====================================
//====================================
loop:
/// Start the test, initialize test results
Bridge.OnTestSelected(this, new TestSelectedEventArgs(test, repetitionNr, inPath, benchPath, outPath, sensPath, totalPulses));
@ -65,110 +57,165 @@ namespace TBF.BenchControl.TestMethods.CombinedMeters
TestStartTime = DateTime.Now;
TestProgressEventArgs.SetEstimatedTimes(new int[] { 1, 1, 1, 30, Convert.ToInt32(test.TstTime) + 15, 0, 0 });
Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.JustStarted));
Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
int flowSetTime0 = StateMachine.Time;
//------------------------------------------------
Bridge.OnActivity(this, Strings.Setting_the_flow);
//------------------------------------------------
if (inPath.Pump is GenericDevices.IPumpFM) (inPath.Pump as GenericDevices.IPumpFM).TurnOn(test.PumpPower);
//------------------------------------------------
Bridge.OnActivity(this, Strings.Checking_tank_capacity);
//------------------------------------------------
bool tankEmptyingInProgress = test.Emptying;
State.Create("CombinedMeters : Waiting 5 sec")
.AddOperation(checkUiOp)
.AddOperation(new Operations.TimerOp(5))
.EnterState();
do
{
e = StateMachine.WaitRunDevsRunOps();
Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
if (TestAndLogUiCmdStop(test,e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
while (!e.Contains(Event.TimerExpired));
State.Create("CombinedMeters : Starting the pump")
.AddOperation(checkUiOp)
.AddOperation(cBrd.SetValvesOp(inPath.Pump, null))
.EnterState();
do
{
e = StateMachine.WaitRunDevsRunOps();
Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
if (TestAndLogUiCmdStop(test,e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
while (!e.Contains(Event.ValvesSet));
if (!test.Emptying) /// If condition met => skip measuring and force emptying
if (!tankEmptyingInProgress) /// If condition met => skip measuring and force emptying
{
///
/// Measure the weight and skip emptying if there is enough room in the tank
///
State.Create("CombinedMeters : Measuring the mass of water in the tank")
///
/// Measure the weight and skip emptying if there is enough room in the tank
///
State.Create("CombinedMeters : Checking available tank capacity")
.AddOperation(checkUiOp)
.AddOperation(outPath.Balance.ReadMassOp(ref Mass))
.EnterState();
do
{
e = StateMachine.WaitRunDevsRunOps();
Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
if (TestAndLogUiCmdStop(test,e)) { retVal = Event.UiCmdStop; goto stopTest; }
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
while (!e.Contains(Event.BalanceDone));
float estimatedEndMass = Mass.Val + test.Volume;
if (estimatedEndMass < outPath.Balance.Capacity * Constants.TankFullFactor)
if (estimatedEndMass >= outPath.Balance.Capacity * Constants.TankFullFactor)
{
goto set_flow; /// Enough room in the tank -> skip emptying
tankEmptyingInProgress = true;
}
}
///
if (tankEmptyingInProgress)
{
State.Create("SequenceBase : Opening the emptying valve")
.AddOperation(checkUiOp)
.AddOperation(StateMachine.ControlBoard.SetValvesOp(outPath.EmptyTankValve, null))
.EnterState();
do
{
e = StateMachine.WaitRunDevsRunOps();
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
while (!e.Contains(Event.ValvesSet));
}
///
/// Empty the water tank
///
switch (EmptyTheTank(outPath.EmptyTankValve, outPath.Balance))
{
case Event.Error: { retVal = Event.Error; goto stopTest; }
case Event.UiCmdStop: { retVal = Event.UiCmdStop; goto stopTest; }
}
set_flow:
if (inPath.Pump != null)
{
//------------------------------------------------
Bridge.OnActivity(this, Strings.Starting_the_pump);
//------------------------------------------------
if (inPath.Pump is GenericDevices.IPumpFM) (inPath.Pump as GenericDevices.IPumpFM).TurnOn(test.PumpPower);
///
State.Create("CombinedMeters : Starting the pump")
.AddOperation(checkUiOp)
.AddOperation(cBrd.SetValvesOp(inPath.Pump, null))
.AddOperation(StateMachine.ControlBoard.UpdateTankWeightOp())
.EnterState();
do
{
e = StateMachine.WaitRunDevsRunOps();
Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
while (!e.Contains(Event.ValvesSet));
}
if (test.TimePump2StartV > 0)
{
State.Create("CombinedMeters : Waiting after the pump started")
.AddOperation(checkUiOp)
.AddOperation(new Operations.TimerOp(test.TimePump2StartV))
.AddOperation(StateMachine.ControlBoard.UpdateTankWeightOp())
.EnterState();
do
{
e = StateMachine.WaitRunDevsRunOps();
Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
while (!e.Contains(Event.TimerExpired));
}
if (benchPath.StopBFValve != null)
{
State.Create("CombinedMeters : Opening the stop backflow valve")
.AddOperation(checkUiOp)
.AddOperation(StateMachine.ControlBoard.SetValvesOp(benchPath.StopBFValve, null))
.AddOperation(StateMachine.ControlBoard.UpdateTankWeightOp())
.EnterState();
do
{
e = StateMachine.WaitRunDevsRunOps();
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
}
while (!e.Contains(Event.ValvesSet));
}
if (test.TimeBeforeFlow > 0)
{
State.Create("CombinedMeters : Waiting before flow setting process starts")
.AddOperation(checkUiOp)
.AddOperation(new Operations.TimerOp(test.TimeBeforeFlow))
.AddOperation(StateMachine.ControlBoard.UpdateTankWeightOp())
.EnterState();
do
{
e = StateMachine.WaitRunDevsRunOps();
Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
while (!e.Contains(Event.TimerExpired));
}
setting_flow:
//------------------------------------------------
Bridge.OnActivity(this, Strings.Setting_the_flow);
//------------------------------------------------
State.Create("CombinedMeters : Setting the flow")
.AddOperation(checkUiOp)
.AddOperation(outPath.RegulValve.SetFlowOp(outPath.FlowMeter, test.Qfrom, test.Qto, outPath.PidCoef, RefFlow, 600)) /// timeout = 10 min.
.EnterState();
do
{
e = StateMachine.WaitRunDevsRunOps();
Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
State.Create("CombinedMeters : Setting the flow")
.AddOperation(checkUiOp)
.AddOperation(StateMachine.ControlBoard.UpdateTankWeightOp())
.AddOperation(outPath.RegulValve.SetFlowOp(outPath.FlowMeter, test.Qfrom, test.Qto, outPath.PidCoef, RefFlow, 990)) /// timeout = 16.5 min.
.EnterState();
do
{
e = StateMachine.WaitRunDevsRunOps();
Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
if (e.Contains(Event.OpArgumentError)) { retVal = Event.OpArgumentError; goto stopTest; }
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
if (e.Contains(Event.RegulValveTimeOut))
{
Bridge.OnError(this, Strings.Timeout);
retVal = Event.Done;
goto stopTest;
}
if (e.Contains(Event.Next)) goto flow_set;
}
while (!e.Contains(Event.FlowReached));
if (e.Contains(Event.OpArgumentError)) { retVal = Event.OpArgumentError; goto stopTest; }
if (TestAndLogUiCmdStop(test,e)) { retVal = Event.UiCmdStop; goto stopTest; }
if (e.Contains(Event.RegulValveTimeOut))
{
Bridge.OnError(this, Strings.Timeout);
retVal = Event.Done;
goto stopTest;
}
if (e.Contains(Event.Next)) goto flow_set;
}
while (!e.Contains(Event.FlowReached));
flow_set:
int flowSetTime = StateMachine.Time - flowSetTime0;
int flowSetTime = StateMachine.Time - flowSetTime0;
float currentFlow = RefFlow.Val;
/// Extract cameras from the current sensors path, add operations to the detection state
@ -179,39 +226,63 @@ namespace TBF.BenchControl.TestMethods.CombinedMeters
if (cameraRoi != null) measureOperations.Add(cameraRoi.MeasureOp());
}
State.Create("CombinedMeters : Waiting before 1st mass measurement")
.AddOperation(checkUiOp)
.AddOperation(benchPath.TempIn.ReadTempOp(ref TempIn))
.AddOperation(benchPath.TempOut.ReadTempOp(ref TempOut))
.AddOperation(outPath.TempDiv.ReadTempOp(ref TempDiv))
.AddOperation(benchPath.PressIn.ReadPressureOp(ref PressureUp))
.AddOperation(benchPath.PressOut.ReadPressureOp(ref PressureDown))
.AddOperation((StateMachine.Ambient != null)
? StateMachine.Ambient.ReadAmbientOp(AmbientTemp, AmbientPressure, AmbientHumidity) : null)
.AddOperation(outPath.Balance.ReadMassOp(ref Mass))
.AddOperation(cBrd.UpdateTankWeightOp())
.AddOperation(processDataLoggingOp)
.AddOperation(new Operations.TimerOp(test.TimeFlow2Mass))
.EnterState();
do
{
e = StateMachine.WaitRunDevsRunOps();
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
if (TestAndLogUiCmdStop(test,e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
while (!e.Contains(Event.TimerExpired));
if (tankEmptyingInProgress)
{
//------------------------------------------------
Bridge.OnActivity(this, Strings.Closing_the_tank);
//------------------------------------------------
///
/// Make sure tank emptying completed
///
switch (EmptyTheTank(outPath.EmptyTankValve, outPath.Balance))
{
case Event.Error: { retVal = Event.Error; goto stopTest; }
case Event.UiCmdStop: { retVal = Event.UiCmdStop; goto stopTest; }
}
tankEmptyingInProgress = false;
}
if (test.TimeFlow2Mass > 0)
{
State.Create("CombinedMeters : Waiting before 1st mass measurement")
.AddOperation(checkUiOp)
.AddOperation(cBrd.UpdateTankWeightOp())
.AddOperation(new Operations.TimerOp(test.TimeFlow2Mass))
.EnterState();
do
{
e = StateMachine.WaitRunDevsRunOps();
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
while (!e.Contains(Event.TimerExpired));
}
LogProcessHeader(processDataLogger, "Start mass");
//------------------------------------------------
Bridge.OnActivity(this, Strings.Measuring_the_weight);
//------------------------------------------------
State.Create("CombinedMeters : Measuring the start mass")
LogProcessHeader(processDataLogger, "Start mass");
State.Create("CombinedMeters : Measuring the start mass")
.AddOperation(checkUiOp)
.AddOperation(benchPath.TempIn.ReadTempOp(ref TempIn))
.AddOperation(benchPath.TempOut.ReadTempOp(ref TempOut))
.AddOperation(outPath.TempDiv.ReadTempOp(ref TempDiv))
.AddOperation(benchPath.PressIn.ReadPressureOp(ref PressureUp))
.AddOperation(benchPath.PressOut.ReadPressureOp(ref PressureDown))
.AddOperation((StateMachine.Ambient != null)
? StateMachine.Ambient.ReadAmbientOp(AmbientTemp, AmbientPressure, AmbientHumidity) : null)
.AddOperations(measureOperations)
.AddOperation(outPath.Balance.ReadStableMassOp(ref StartMass, test.MassRepeats, test.MassSpread, test.MassMethod))
.EnterState();
.AddOperation(cBrd.UpdateTankWeightOp())
.AddOperation(processDataLoggingOp)
.EnterState();
do
{
e = StateMachine.WaitRunDevsRunOps();
@ -220,6 +291,9 @@ namespace TBF.BenchControl.TestMethods.CombinedMeters
}
while (!e.Contains(Event.BalanceDone));
LogProcessHeader(processDataLogger, "Measurement");
log.WarnFormat("Start mass = {0}kg", StartMass);
Mass.Val = StartMass.Val;
//------------------------------------------------
@ -227,7 +301,16 @@ namespace TBF.BenchControl.TestMethods.CombinedMeters
//------------------------------------------------
State.Create("CombinedMeters : Starting the test")
.AddOperation(checkUiOp)
.AddOperation(benchPath.TempIn.ReadTempOp(ref TempIn))
.AddOperation(benchPath.TempOut.ReadTempOp(ref TempOut))
.AddOperation(outPath.TempDiv.ReadTempOp(ref TempDiv))
.AddOperation(benchPath.PressIn.ReadPressureOp(ref PressureUp))
.AddOperation(benchPath.PressOut.ReadPressureOp(ref PressureDown))
.AddOperation((StateMachine.Ambient != null)
? StateMachine.Ambient.ReadAmbientOp(AmbientTemp, AmbientPressure, AmbientHumidity) : null)
.AddOperations(measureOperations)
.AddOperation(cBrd.UpdateTankWeightOp())
.AddOperation(processDataLoggingOp)
.AddOperation(cBrd.StartMeasurementOp(outPath, Elde.TestMethods.Diverter | Elde.TestMethods.Synchro,
test.Qfrom, test.Qto, totalPulses, (float)test.TolerRed))
.EnterState();
@ -241,55 +324,62 @@ namespace TBF.BenchControl.TestMethods.CombinedMeters
/// Measurement loop - preparation
readRegistersOp = new Operations.ReadMoreRegistersOp(sensPath.RegisterReaders);
queryEnd1 = cBrd.QueryMeasurementEndOp();
queryEnd2 = cBrd.QueryMeasurementEndOp();
int estimtdEndTime = StateMachine.Time + (int)test.TstTime;
ClearAllStatistics();
int estimtdEndTime = StateMachine.Time + (int)test.TstTime;
/// Measurement loop - begin
while (true)
{
//--------------------------------
switch(ReadRegistersTempPressAmbient(measureOperations, true))
{
case Event.Error: { retVal = Event.Error; goto stopTest; }
case Event.UiCmdStop: { retVal = Event.UiCmdStop; goto stopTest; }
case Event.MeasurementCompleted: goto test_completed;
}
State.Create("Read water meters")
.AddOperation(checkUiOp)
.AddOperations(measureOperations)
.AddOperation(readRegistersOp)
.AddOperation(benchPath.TempIn.ReadTempOp(ref TempIn))
.AddOperation(benchPath.TempOut.ReadTempOp(ref TempOut))
.AddOperation(outPath.TempDiv.ReadTempOp(ref TempDiv))
.AddOperation(benchPath.PressIn.ReadPressureOp(ref PressureUp))
.AddOperation(benchPath.PressOut.ReadPressureOp(ref PressureDown))
.AddOperation(outPath.Balance.ReadMassOp(ref Mass))
.AddOperation(StateMachine.ControlBoard.UpdateTankWeightOp())
.AddOperation((StateMachine.Ambient != null)
? StateMachine.Ambient.ReadAmbientOp(AmbientTemp, AmbientPressure, AmbientHumidity)
: null)
.AddOperation(cBrd.QueryMeasurementEndOp())
.AddOperation(processDataLoggingOp)
.EnterState();
do
{
e = StateMachine.WaitRunDevsRunOps();
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
if (e.Contains(Event.MeasurementCompleted)) goto test_completed;
int remainingTime = Math.Max(estimtdEndTime - StateMachine.Time, 0);
if (remainingTime > 60)
{
Bridge.OnActivity(this, string.Format("{0} ... {1} {2} {3} {4}", Strings.Test_in_progress, remainingTime / 60, "min", remainingTime % 60, Strings.sec));
}
else
{
Bridge.OnActivity(this, string.Format("{0} ... {1} s", Strings.Test_in_progress, remainingTime));
}
//------------------------------------------------
int remainingTime = Math.Max(estimtdEndTime - StateMachine.Time, 0);
if (remainingTime > 60)
{
Bridge.OnActivity(this, string.Format("{0} ... {1} {2} {3} {4}", Strings.Test_in_progress, remainingTime / 60, "min", remainingTime % 60, Strings.sec));
}
else
{
Bridge.OnActivity(this, string.Format("{0} ... {1} s", Strings.Test_in_progress, remainingTime));
}
//------------------------------------------------
UpdateAllStatistics();
UpdateAllStatistics();
RefFreq.Val = cBrd.ReferenceFreq;
RefFlow.Val = cBrd.ReferenceFlow;
/// TODO: Reimplement
//for (int i = 0; i < Config.Data.CompoundWMsCount; i++)
//{
// data.TestResult.CombinedMeters[i].VolumeMeter = data.TestResult.Meters[2 * i].VolumeMeter
// + data.TestResult.Meters[2 * i + 1].VolumeMeter;
// if (data.Volume.Valid)
// {
// data.TestResult.CombinedMeters[i].VolumeErrorPct =
// Formulas.ErrorFromVolumes(data.TestResult.CombinedMeters[i].VolumeMeter, data.Volume.Val);
// }
//}
Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.Test));
Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.Test));
}
/// Measurement loop - end
Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.Test));
Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.Test));
}
while (true);
/// Measurement loop - end
test_completed:
State.Create("CombinedMeters : Waiting before mass measurement")
//------------------------------------------------
Bridge.OnActivity(this, Strings.Measuring_the_weight);
//------------------------------------------------
State.Create("CombinedMeters : Waiting before the 2nd mass measurement")
.AddOperation(checkUiOp)
.AddOperation(benchPath.TempIn.ReadTempOp(ref TempIn))
.AddOperation(benchPath.TempOut.ReadTempOp(ref TempOut))
@ -312,14 +402,22 @@ namespace TBF.BenchControl.TestMethods.CombinedMeters
}
while (!e.Contains(Event.TimerExpired));
//------------------------------------------------
Bridge.OnActivity(this, Strings.Measuring_the_weight);
//------------------------------------------------
LogProcessHeader(processDataLogger, "End mass");
State.Create("CombinedMeters : Measuring the end mass")
.AddOperation(checkUiOp)
.AddOperation(benchPath.TempIn.ReadTempOp(ref TempIn))
.AddOperation(benchPath.TempOut.ReadTempOp(ref TempOut))
.AddOperation(outPath.TempDiv.ReadTempOp(ref TempDiv))
.AddOperation(benchPath.PressIn.ReadPressureOp(ref PressureUp))
.AddOperation(benchPath.PressOut.ReadPressureOp(ref PressureDown))
.AddOperation(readRegistersOp)
.AddOperation((StateMachine.Ambient != null)
? StateMachine.Ambient.ReadAmbientOp(AmbientTemp, AmbientPressure, AmbientHumidity) : null)
.AddOperation(outPath.Balance.ReadStableMassOp(ref EndMass, test.MassRepeats, test.MassSpread, test.MassMethod))
.AddOperation(cBrd.UpdateTankWeightOp())
.EnterState();
.AddOperation(processDataLoggingOp)
.EnterState();
do
{
e = StateMachine.WaitRunDevsRunOps();
@ -328,6 +426,7 @@ namespace TBF.BenchControl.TestMethods.CombinedMeters
}
while (!e.Contains(Event.BalanceDone));
///
log.WarnFormat("End mass = {0}kg", EndMass);
TestEndTime = DateTime.Now;
//------------------------------------------------
@ -464,13 +563,11 @@ namespace TBF.BenchControl.TestMethods.CombinedMeters
/// Append the results to the CSV-file
allResults.Info(TestResult2CsvLine(testName, test.Part));
if (++repetitionNr <= test.Repeats)
{
goto loop;
}
stopTest:
///----------------------///

View File

@ -33,17 +33,11 @@ namespace TBF.BenchControl.TestMethods.FlyingStartMassCollection
IList<Event> e = new List<Event>(); /// Events from currently running operations
Event retVal = Event.Done;
checkUiOp = new Operations.CheckUIOp(true); /// Runs in more then one state
LtrPerRefPulse = outPath.FlowMeter.LtrPerPulse; /// [ltr/pulse], nominal flow in [m3/h]
/// Notes:
/// float timeHr = volumeLtr / (1000.0f * targetFlow);
/// float timeSec = 3600.0f * timeHr;
/// int refPulses = (int)(timeSec * (2000.0f * targetFlow / pOut.FlowMeter.NominalFlow));
int totalPulses = (int)(test.Volume / LtrPerRefPulse + 0.5f);
processDataLoggingOp = new TBF.BenchControl.Operations.ProcessDataLoggingOp(processDataLogger, this);
LtrPerRefPulse = outPath.FlowMeter.LtrPerPulse;
int totalPulses = (int)(test.Volume / LtrPerRefPulse + 0.5f);
int repetitionNr = 1; /// First test: repetitionNr = 1
//====================================
@ -55,8 +49,6 @@ namespace TBF.BenchControl.TestMethods.FlyingStartMassCollection
case Event.UiCmdStop: { retVal = Event.UiCmdStop; goto stopTest; }
}
int flowSetTime0 = StateMachine.Time;
//====================================
loop:
/// Start the test, initialize test results
@ -65,126 +57,131 @@ namespace TBF.BenchControl.TestMethods.FlyingStartMassCollection
TestStartTime = DateTime.Now;
TestProgressEventArgs.SetEstimatedTimes(new int[] { 1, 1, 1, 30, Convert.ToInt32(test.TstTime) + 15, 0, 0 });
Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.JustStarted));
Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
int flowSetTime0 = StateMachine.Time;
//------------------------------------------------
Bridge.OnActivity(this, Strings.Checking_tank_capacity);
//------------------------------------------------
bool tankEmptyingInProgress = test.Emptying;
//------------------------------------------------
Bridge.OnActivity(this, Strings.Checking_tank_capacity);
//------------------------------------------------
bool tankEmptyingInProgress = test.Emptying;
if (!tankEmptyingInProgress) /// If condition met => skip measuring and force emptying
{
///
/// Measure the weight and skip emptying if there is enough room in the tank
///
State.Create("FlyingStartMassCollection : Checking available tank capacity")
.AddOperation(checkUiOp)
.AddOperation(outPath.Balance.ReadMassOp(ref Mass))
.EnterState();
do {
e = StateMachine.WaitRunDevsRunOps();
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
if (TestAndLogUiCmdStop(test,e)) { retVal = Event.UiCmdStop; goto stopTest; }
if (!tankEmptyingInProgress) /// If condition met => skip measuring and force emptying
{
///
/// Measure the weight and skip emptying if there is enough room in the tank
///
State.Create("FlyingStartMassCollection : Checking available tank capacity")
.AddOperation(checkUiOp)
.AddOperation(outPath.Balance.ReadMassOp(ref Mass))
.EnterState();
do
{
e = StateMachine.WaitRunDevsRunOps();
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
while (!e.Contains(Event.BalanceDone));
while (!e.Contains(Event.BalanceDone));
float estimatedEndMass = Mass.Val + test.Volume;
if (estimatedEndMass >= outPath.Balance.Capacity * Constants.TankFullFactor)
{
tankEmptyingInProgress = true;
}
}
///
if (tankEmptyingInProgress)
{
State.Create("SequenceBase : Opening the emptying valve")
.AddOperation(checkUiOp)
.AddOperation(StateMachine.ControlBoard.SetValvesOp(outPath.EmptyTankValve, null))
.EnterState();
do {
e = StateMachine.WaitRunDevsRunOps();
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
if (TestAndLogUiCmdStop(test,e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
while (!e.Contains(Event.ValvesSet));
}
float estimatedEndMass = Mass.Val + test.Volume;
if (estimatedEndMass >= outPath.Balance.Capacity * Constants.TankFullFactor)
{
tankEmptyingInProgress = true;
}
}
///
if (tankEmptyingInProgress)
{
State.Create("SequenceBase : Opening the emptying valve")
.AddOperation(checkUiOp)
.AddOperation(StateMachine.ControlBoard.SetValvesOp(outPath.EmptyTankValve, null))
.EnterState();
do
{
e = StateMachine.WaitRunDevsRunOps();
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
while (!e.Contains(Event.ValvesSet));
}
if (inPath.Pump != null)
{
//------------------------------------------------
Bridge.OnActivity(this, Strings.Starting_the_pump);
//------------------------------------------------
if (inPath.Pump is GenericDevices.IPumpFM) (inPath.Pump as GenericDevices.IPumpFM).TurnOn(test.PumpPower);
///
State.Create("FlyingStartMassCollection : Starting the pump")
.AddOperation(checkUiOp)
.AddOperation(cBrd.SetValvesOp(inPath.Pump, null))
.AddOperation(StateMachine.ControlBoard.UpdateTankWeightOp())
.EnterState();
do {
e = StateMachine.WaitRunDevsRunOps();
Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
if (inPath.Pump != null)
{
//------------------------------------------------
Bridge.OnActivity(this, Strings.Starting_the_pump);
//------------------------------------------------
if (inPath.Pump is GenericDevices.IPumpFM) (inPath.Pump as GenericDevices.IPumpFM).TurnOn(test.PumpPower);
///
State.Create("FlyingStartMassCollection : Starting the pump")
.AddOperation(checkUiOp)
.AddOperation(cBrd.SetValvesOp(inPath.Pump, null))
.AddOperation(StateMachine.ControlBoard.UpdateTankWeightOp())
.EnterState();
do
{
e = StateMachine.WaitRunDevsRunOps();
Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
if (TestAndLogUiCmdStop(test,e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
while (!e.Contains(Event.ValvesSet));
}
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
while (!e.Contains(Event.ValvesSet));
}
if (test.TimePump2StartV > 0)
{
State.Create("FlyingStartMassCollection : Waiting after the pump started")
.AddOperation(checkUiOp)
.AddOperation(new Operations.TimerOp(test.TimePump2StartV))
.AddOperation(StateMachine.ControlBoard.UpdateTankWeightOp())
.EnterState();
do {
e = StateMachine.WaitRunDevsRunOps();
Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
if (test.TimePump2StartV > 0)
{
State.Create("FlyingStartMassCollection : Waiting after the pump started")
.AddOperation(checkUiOp)
.AddOperation(new Operations.TimerOp(test.TimePump2StartV))
.AddOperation(StateMachine.ControlBoard.UpdateTankWeightOp())
.EnterState();
do
{
e = StateMachine.WaitRunDevsRunOps();
Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
if (TestAndLogUiCmdStop(test,e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
while (!e.Contains(Event.TimerExpired));
}
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
while (!e.Contains(Event.TimerExpired));
}
if (benchPath.StopBFValve != null)
{
State.Create("FlyingStartMassCollection : Opening the stop backflow valve")
.AddOperation(checkUiOp)
.AddOperation(StateMachine.ControlBoard.SetValvesOp(benchPath.StopBFValve, null))
.AddOperation(StateMachine.ControlBoard.UpdateTankWeightOp())
.EnterState();
do {
e = StateMachine.WaitRunDevsRunOps();
if (TestAndLogUiCmdStop(test,e)) { retVal = Event.UiCmdStop; goto stopTest; }
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
}
while (!e.Contains(Event.ValvesSet));
}
if (benchPath.StopBFValve != null)
{
State.Create("FlyingStartMassCollection : Opening the stop backflow valve")
.AddOperation(checkUiOp)
.AddOperation(StateMachine.ControlBoard.SetValvesOp(benchPath.StopBFValve, null))
.AddOperation(StateMachine.ControlBoard.UpdateTankWeightOp())
.EnterState();
do
{
e = StateMachine.WaitRunDevsRunOps();
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
}
while (!e.Contains(Event.ValvesSet));
}
if (test.TimeBeforeFlow > 0)
{
State.Create("FlyingStartMassCollection : Waiting before flow setting process starts")
.AddOperation(checkUiOp)
.AddOperation(new Operations.TimerOp(test.TimeBeforeFlow))
.AddOperation(StateMachine.ControlBoard.UpdateTankWeightOp())
.EnterState();
do {
e = StateMachine.WaitRunDevsRunOps();
Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
if (test.TimeBeforeFlow > 0)
{
State.Create("FlyingStartMassCollection : Waiting before flow setting process starts")
.AddOperation(checkUiOp)
.AddOperation(new Operations.TimerOp(test.TimeBeforeFlow))
.AddOperation(StateMachine.ControlBoard.UpdateTankWeightOp())
.EnterState();
do
{
e = StateMachine.WaitRunDevsRunOps();
Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
if (TestAndLogUiCmdStop(test,e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
while (!e.Contains(Event.TimerExpired));
}
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
while (!e.Contains(Event.TimerExpired));
}
setting_flow:
@ -192,62 +189,61 @@ namespace TBF.BenchControl.TestMethods.FlyingStartMassCollection
//------------------------------------------------
Bridge.OnActivity(this, Strings.Setting_the_flow);
//------------------------------------------------
State.Create("FlyingStartMassCollection : Setting the flow")
.AddOperation(checkUiOp)
.AddOperation(StateMachine.ControlBoard.UpdateTankWeightOp())
.AddOperation(outPath.RegulValve.SetFlowOp(outPath.FlowMeter, test.Qfrom, test.Qto, outPath.PidCoef, RefFlow, 990)) /// timeout = 16.5 min.
.EnterState();
do
{
e = StateMachine.WaitRunDevsRunOps();
Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
State.Create("FlyingStartMassCollection : Setting the flow")
.AddOperation(checkUiOp)
.AddOperation(StateMachine.ControlBoard.UpdateTankWeightOp())
.AddOperation(outPath.RegulValve.SetFlowOp(outPath.FlowMeter, test.Qfrom, test.Qto, outPath.PidCoef, RefFlow, 990)) /// timeout = 16.5 min.
.EnterState();
do
{
e = StateMachine.WaitRunDevsRunOps();
Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.FlowSetting));
if (e.Contains(Event.OpArgumentError)) { retVal = Event.OpArgumentError; goto stopTest; }
if (TestAndLogUiCmdStop(test,e)) { retVal = Event.UiCmdStop; goto stopTest; }
if (e.Contains(Event.OpArgumentError)) { retVal = Event.OpArgumentError; goto stopTest; }
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
if (e.Contains(Event.RegulValveTimeOut))
{
Bridge.OnError(this, Strings.Timeout);
retVal = Event.Done;
goto stopTest;
}
if (e.Contains(Event.Next)) goto flow_set;
}
while (!e.Contains(Event.FlowReached));
{
Bridge.OnError(this, Strings.Timeout);
retVal = Event.Done;
goto stopTest;
}
if (e.Contains(Event.Next)) goto flow_set;
}
while (!e.Contains(Event.FlowReached));
flow_set:
int flowSetTime = StateMachine.Time - flowSetTime0;
float currentFlow = RefFlow.Val;
int flowSetTime = StateMachine.Time - flowSetTime0;
float currentFlow = RefFlow.Val;
/// Extract cameras from the current sensors path, add operations to the detection state
IList<IOperation> measureOperations = new List<IOperation>();
for (int i = 0; i < sensPath.RegisterReaders.Length; i++)
{
GenericDevices.ICameraRoi cameraRoi = sensPath.RegisterReaders[i] as GenericDevices.ICameraRoi;
if (cameraRoi != null) measureOperations.Add(cameraRoi.MeasureOp());
}
/// Extract cameras from the current sensors path, add operations to the detection state
IList<IOperation> measureOperations = new List<IOperation>();
for (int i = 0; i < sensPath.RegisterReaders.Length; i++)
{
GenericDevices.ICameraRoi cameraRoi = sensPath.RegisterReaders[i] as GenericDevices.ICameraRoi;
if (cameraRoi != null) measureOperations.Add(cameraRoi.MeasureOp());
}
if (tankEmptyingInProgress)
{
//------------------------------------------------
Bridge.OnActivity(this, Strings.Closing_the_tank);
//------------------------------------------------
if (tankEmptyingInProgress)
{
//------------------------------------------------
Bridge.OnActivity(this, Strings.Closing_the_tank);
//------------------------------------------------
///
/// Make sure tank emptying completed
///
switch (EmptyTheTank(outPath.EmptyTankValve, outPath.Balance))
{
case Event.Error: { retVal = Event.Error; goto stopTest; }
case Event.UiCmdStop: { retVal = Event.UiCmdStop; goto stopTest; }
}
tankEmptyingInProgress = false;
}
///
/// Make sure tank emptying completed
///
switch (EmptyTheTank(outPath.EmptyTankValve, outPath.Balance))
{
case Event.Error: { retVal = Event.Error; goto stopTest; }
case Event.UiCmdStop: { retVal = Event.UiCmdStop; goto stopTest; }
}
tankEmptyingInProgress = false;
}
if (test.TimeFlow2Mass > 0)
{
@ -258,7 +254,7 @@ namespace TBF.BenchControl.TestMethods.FlyingStartMassCollection
.EnterState();
do{
e = StateMachine.WaitRunDevsRunOps();
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
if (TestAndLogUiCmdStop(test,e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
while (!e.Contains(Event.TimerExpired));
@ -333,7 +329,6 @@ namespace TBF.BenchControl.TestMethods.FlyingStartMassCollection
/// Measurement loop - preparation
readRegistersOp = new Operations.ReadMoreRegistersOp(sensPath.RegisterReaders);
queryEnd1 = cBrd.QueryMeasurementEndOp();
int estimtdEndTime = StateMachine.Time + (int)test.TstTime;
ClearAllStatistics();
@ -353,7 +348,7 @@ namespace TBF.BenchControl.TestMethods.FlyingStartMassCollection
.AddOperation((StateMachine.Ambient != null)
? StateMachine.Ambient.ReadAmbientOp(AmbientTemp, AmbientPressure, AmbientHumidity)
: null)
.AddOperation(queryEnd1)
.AddOperation(cBrd.QueryMeasurementEndOp())
.AddOperation(processDataLoggingOp)
.EnterState();
do
@ -389,7 +384,7 @@ namespace TBF.BenchControl.TestMethods.FlyingStartMassCollection
//------------------------------------------------
Bridge.OnActivity(this, Strings.Measuring_the_weight);
//------------------------------------------------
State.Create("FlyingStartMassCollection : Waiting before 2nd mass measurement")
State.Create("FlyingStartMassCollection : Waiting before the 2nd mass measurement")
.AddOperation(checkUiOp)
.AddOperation(benchPath.TempIn.ReadTempOp(ref TempIn))
.AddOperation(benchPath.TempOut.ReadTempOp(ref TempOut))
@ -407,14 +402,14 @@ namespace TBF.BenchControl.TestMethods.FlyingStartMassCollection
do
{
e = StateMachine.WaitRunDevsRunOps();
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
if (TestAndLogUiCmdStop(test,e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
while (!e.Contains(Event.TimerExpired));
LogProcessHeader(processDataLogger, "End mass");
State.Create("FlyingStartMassCollection : Measuring the end mass")
State.Create("FlyingStartMassCollection : Measuring the end mass")
.AddOperation(checkUiOp)
.AddOperation(benchPath.TempIn.ReadTempOp(ref TempIn))
.AddOperation(benchPath.TempOut.ReadTempOp(ref TempOut))
@ -507,59 +502,122 @@ namespace TBF.BenchControl.TestMethods.FlyingStartMassCollection
{
if (test.Part != 0 && test.Part != Utils.PartNr(i + 1, BatchRslts.Batch.Compound)) continue;
Results.Entities.MeterTestRslt meterRslt = BatchRslts.GetMeterTestRslt(testName, i, Config.Entities.CompoundMeterId.Single);
GenericDevices.IRegisterReader regReader = sensPath.RegisterReaders[i];
WaterMeters.iPerl.WaterMeter iPerl = regReader as WaterMeters.iPerl.WaterMeter;
if (BatchRslts.Batch.Compound)
{
///
/// Compound meters
///
Results.Entities.MeterTestRslt mainMeterRslt = BatchRslts.GetMeterTestRslt(testName, i, Config.Entities.CompoundMeterId.CompoundMain);
Results.Entities.MeterTestRslt auxMeterRslt = BatchRslts.GetMeterTestRslt(testName, i, Config.Entities.CompoundMeterId.CompoundAux);
if (meterRslt != null && regReader != null)
{
meterRslt.PulsesPerLiter = regReader.PulsesPerLtr;
meterRslt.PulsesMeter = Convert.ToDouble(regReader.WMPulses);
meterRslt.PulsesMaster = Convert.ToDouble(regReader.WMRefPulses);
for (int isAux = 0; isAux <= 1; isAux++) /// 0=main, 1=aux
{
GenericDevices.IRegisterReader regReader = sensPath.RegisterReaders[2 * i + isAux];
Results.Entities.MeterTestRslt meterRslt = (isAux == 0) ? mainMeterRslt : auxMeterRslt;
if (iPerl != null)
{
meterRslt.TimestampStart = iPerl.TimestampSecStart;
meterRslt.TimestampEnd = iPerl.NoSamples ? (iPerl.TimestampSecStart + tstRslt.TestTime) : iPerl.TimestampSecEnd;
meterRslt.TestTime = iPerl.NoSamples ? tstRslt.TestTime : (meterRslt.TimestampEnd - meterRslt.TimestampStart);
meterRslt.VolumeStart = iPerl.VolumeLtrStart; /// liter
meterRslt.VolumeEnd = iPerl.VolumeLtrEnd; /// liter
meterRslt.VolumeMeter = Math.Abs(iPerl.VolumeLtrEnd - iPerl.VolumeLtrStart);
meterRslt.VolumeRef = tstRslt.VolumeCTV * meterRslt.TestTime / tstRslt.TestTime;
iPerl.VolumeLtrRef = meterRslt.VolumeRef;
if (meterRslt != null && regReader != null)
{
meterRslt.PulsesPerLiter = regReader.PulsesPerLtr;
/// Optionally supress pulses from the large water meter
meterRslt.PulsesMeter = Convert.ToDouble(regReader.WMPulses);
meterRslt.PulsesMaster = Convert.ToDouble(regReader.WMRefPulses);
meterRslt.TestTime = tstRslt.TestTime;
meterRslt.VolumeStart = 0;
meterRslt.VolumeEnd = 0;
meterRslt.VolumeRef = tstRslt.VolumeCTV;
meterRslt.VolumeMeter = meterRslt.PulsesMeter * regReader.LtrsPerPulse; /// liter
if (meterRslt.PulsesMaster != 0)
{
meterRslt.VolumeMeter *= (tstRslt.PulsesMaster / meterRslt.PulsesMaster);
}
meterRslt.Error = Formulas.ErrorFromVolumes(meterRslt.VolumeMeter, tstRslt.VolumeCTV); /// Main/Aux meter error is not usedfor evaluation
}
}
Results.Entities.MeterTestRslt compoundMeterRslt = BatchRslts.GetMeterTestRslt(testName, i, Config.Entities.CompoundMeterId.Compound);
if (compoundMeterRslt != null && mainMeterRslt != null && auxMeterRslt != null)
{
compoundMeterRslt.VolumeRef = tstRslt.VolumeCTV;
compoundMeterRslt.VolumeMeter = mainMeterRslt.VolumeMeter + auxMeterRslt.VolumeMeter;
compoundMeterRslt.PulsesMaster = tstRslt.PulsesMaster;
compoundMeterRslt.TestTime = tstRslt.TestTime;
compoundMeterRslt.Error = Formulas.ErrorFromVolumes(compoundMeterRslt.VolumeMeter, compoundMeterRslt.VolumeRef);
compoundMeterRslt.Passed = (compoundMeterRslt.Error >= test.ErrLimLo + test.Uncertainty)
&& (compoundMeterRslt.Error <= test.ErrLimHi - test.Uncertainty);
mainMeterRslt.Passed = auxMeterRslt.Passed = compoundMeterRslt.Passed;
mainMeterRslt.TestDone = auxMeterRslt.TestDone = compoundMeterRslt.TestDone = true;
}
}
#if HEAT_METERS_SUPPORT
else if (BatchRslts.Batch.HeatMeter)
{
///
/// Heat meters
///
}
#endif
else
{
/// MetersKind.Single meters
Results.Entities.MeterTestRslt meterRslt = BatchRslts.GetMeterTestRslt(testName, i, Config.Entities.CompoundMeterId.Single);
GenericDevices.IRegisterReader regReader = sensPath.RegisterReaders[i];
WaterMeters.iPerl.WaterMeter iPerl = regReader as WaterMeters.iPerl.WaterMeter;
if (meterRslt != null && regReader != null)
{
meterRslt.PulsesPerLiter = regReader.PulsesPerLtr;
meterRslt.PulsesMeter = Convert.ToDouble(regReader.WMPulses);
meterRslt.PulsesMaster = Convert.ToDouble(regReader.WMRefPulses);
if (iPerl != null)
{
meterRslt.TimestampStart = iPerl.TimestampSecStart;
meterRslt.TimestampEnd = iPerl.NoSamples ? (iPerl.TimestampSecStart + tstRslt.TestTime) : iPerl.TimestampSecEnd;
meterRslt.TestTime = iPerl.NoSamples ? tstRslt.TestTime : (meterRslt.TimestampEnd - meterRslt.TimestampStart);
meterRslt.VolumeStart = iPerl.VolumeLtrStart; /// liter
meterRslt.VolumeEnd = iPerl.VolumeLtrEnd; /// liter
meterRslt.VolumeMeter = Math.Abs(iPerl.VolumeLtrEnd - iPerl.VolumeLtrStart);
meterRslt.VolumeRef = tstRslt.VolumeCTV * meterRslt.TestTime / tstRslt.TestTime;
iPerl.VolumeLtrRef = meterRslt.VolumeRef;
#if IPERLST || IPERLST_SPECIAL
meterRslt.WaterMeter.CalibFactor = (iPerl.CalibrationStruct != null) ? iPerl.CalibrationStruct.Calibration : 0;
meterRslt.WaterMeter.Q2Correction = iPerl.Q2CorrectionFactor;
#endif
iPerl.LastTestResult2 = iPerl.LastTestResult; /// Save shift previous test result
iPerl.LastTestResult = meterRslt; /// Save this test result
iPerl.NominalTestFlow = 500.0 * (test.Qfrom + test.Qto); /// Ave. + convert to liter/hour
}
else
{
meterRslt.TestTime = tstRslt.TestTime; /// TODO: Malo by sa citat z dosky
meterRslt.VolumeStart = 0; /// liter
meterRslt.VolumeEnd = 0; /// liter
meterRslt.VolumeMeter = meterRslt.PulsesMeter * regReader.LtrsPerPulse; /// liter
meterRslt.VolumeRef = meterRslt.PulsesMaster * tstRslt.ConstMaster; /// liter
}
iPerl.LastTestResult2 = iPerl.LastTestResult; /// Save shift previous test result
iPerl.LastTestResult = meterRslt; /// Save this test result
iPerl.NominalTestFlow = 500.0 * (test.Qfrom + test.Qto); /// Ave. + convert to liter/hour
}
else
{
meterRslt.TestTime = tstRslt.TestTime; /// TODO: Malo by sa citat z dosky
meterRslt.VolumeStart = 0; /// liter
meterRslt.VolumeEnd = 0; /// liter
meterRslt.VolumeMeter = meterRslt.PulsesMeter * regReader.LtrsPerPulse; /// liter
meterRslt.VolumeRef = meterRslt.PulsesMaster * tstRslt.ConstMaster; /// liter
}
meterRslt.Error = Formulas.ErrorFromVolumes(meterRslt.VolumeMeter, meterRslt.VolumeRef);
meterRslt.Passed = (meterRslt.Error >= test.ErrLimLo + test.Uncertainty)
&& (meterRslt.Error <= test.ErrLimHi - test.Uncertainty);
meterRslt.TestDone = true;
}
}
meterRslt.Error = Formulas.ErrorFromVolumes(meterRslt.VolumeMeter, meterRslt.VolumeRef);
meterRslt.Passed = (meterRslt.Error >= test.ErrLimLo + test.Uncertainty)
&& (meterRslt.Error <= test.ErrLimHi - test.Uncertainty);
meterRslt.TestDone = true;
}
}
tstRslt.Components = Results.Entities.Components
.UpdateList(BatchRslts.ComponentsList,
new Results.Entities.Components((BenchInfo != null) ? BenchInfo.TestBenchId : 1,
(BenchInfo != null) ? BenchInfo.TestBenchName : "testbench",
inPath.Pump != null ? inPath.Pump.Name : string.Empty,
outPath.FlowMeter != null ? outPath.FlowMeter.Name : string.Empty,
outPath.Balance != null ? outPath.Balance.Name : string.Empty,
outPath.RegulValve != null ? outPath.RegulValve.Name : string.Empty,
outPath.Diverter != null ? outPath.Diverter.Name : string.Empty));
tstRslt.Components = Results.Entities.Components
.UpdateList(BatchRslts.ComponentsList,
new Results.Entities.Components((BenchInfo != null) ? BenchInfo.TestBenchId : 1,
(BenchInfo != null) ? BenchInfo.TestBenchName : "testbench",
inPath.Pump != null ? inPath.Pump.Name : string.Empty,
outPath.FlowMeter != null ? outPath.FlowMeter.Name : string.Empty,
outPath.Balance != null ? outPath.Balance.Name : string.Empty,
outPath.RegulValve != null ? outPath.RegulValve.Name : string.Empty,
outPath.Diverter != null ? outPath.Diverter.Name : string.Empty));
}
/// Update results
Bridge.OnTestCompleted(this, new TestCompletedEventArgs(testName, tstRslt));

View File

@ -17,7 +17,7 @@ namespace TBF.BenchControl.TestMethods.FlyingStartMassCollection
public bool Evaluate(Test test) { return true; }
public bool Publish(Test test) { return true; }
public bool CanTest(MetersKind meters) { return meters == MetersKind.Single; }
public bool CanTest(MetersKind meters) { return true; }
public TestMethod()
{

View File

@ -57,7 +57,7 @@ namespace TBF.Forms
nrMetersLabel.Text = Strings.Nr_meters_in_a_group;
groupBox1.Text = Strings.Water_Meter;
singleRadioButton.Text = Strings.SingleBtnText;
combinedRadioButton.Text = Strings.CombinedBtnText;
combinedRadioButton.Text = Strings.Compound;
groupBox2.Text = Strings.Device;
screenRadioButton.Text = Strings.ScreenBtnText;
printerRadioButton.Text = Strings.PrinterBtnText;

View File

@ -106,6 +106,11 @@ namespace TBF
[XmlIgnore]
public int MetersColumnCount { get { return (MetersColumnWidths != null) ? MetersColumnWidths.Length : 0; } }
[XmlArrayAttribute("HeatMetersColumnWidths")]
public int[] HeatMetersColumnWidths;
[XmlIgnore]
public int HeatMetersColumnCount { get { return (HeatMetersColumnWidths != null) ? HeatMetersColumnWidths.Length : 0; } }
/// Transitions
public int TransitionsDlgLeft;
public int TransitionsDlgTop;

View File

@ -563,7 +563,6 @@ namespace TBF
return;
}
if ((testResults != null) && (testResults.Count != 0) && (testResults[0].MetersKind == MetersKind.Single))
{
PrintOrderDocument doc = new PrintOrderDocument(procedure[0], testResults, tester);

View File

@ -31,150 +31,148 @@ namespace TBF
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PathsDlg));
this.splitContainer = new System.Windows.Forms.SplitContainer();
this.pathsTabControl = new System.Windows.Forms.TabControl();
this.feedingTabPage = new System.Windows.Forms.TabPage();
this.pathsFeedingCtrl = new TBF.UiControls.PathsFeedingCtrl();
this.benchTabPage = new System.Windows.Forms.TabPage();
this.pathsBenchCtrl = new TBF.UiControls.PathsBenchCtrl();
this.outputTabPage = new System.Windows.Forms.TabPage();
this.pathsOutputCtrl = new TBF.UiControls.PathsOutputCtrl();
this.metersTabPage = new System.Windows.Forms.TabPage();
this.pathsMetersCtrl = new TBF.UiControls.PathsMetersCtrl();
this.sharedButtons = new TBF.UiControls.SharedButtons();
((System.ComponentModel.ISupportInitialize)(this.splitContainer)).BeginInit();
this.splitContainer.Panel1.SuspendLayout();
this.splitContainer.Panel2.SuspendLayout();
this.splitContainer.SuspendLayout();
this.pathsTabControl.SuspendLayout();
this.feedingTabPage.SuspendLayout();
this.benchTabPage.SuspendLayout();
this.outputTabPage.SuspendLayout();
this.metersTabPage.SuspendLayout();
this.SuspendLayout();
//
// splitContainer
//
resources.ApplyResources(this.splitContainer, "splitContainer");
this.splitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
this.splitContainer.Name = "splitContainer";
//
// splitContainer.Panel1
//
resources.ApplyResources(this.splitContainer.Panel1, "splitContainer.Panel1");
this.splitContainer.Panel1.Controls.Add(this.pathsTabControl);
//
// splitContainer.Panel2
//
resources.ApplyResources(this.splitContainer.Panel2, "splitContainer.Panel2");
this.splitContainer.Panel2.Controls.Add(this.sharedButtons);
//
// pathsTabControl
//
resources.ApplyResources(this.pathsTabControl, "pathsTabControl");
this.pathsTabControl.Controls.Add(this.feedingTabPage);
this.pathsTabControl.Controls.Add(this.benchTabPage);
this.pathsTabControl.Controls.Add(this.outputTabPage);
this.pathsTabControl.Controls.Add(this.metersTabPage);
this.pathsTabControl.Name = "pathsTabControl";
this.pathsTabControl.SelectedIndex = 0;
this.pathsTabControl.SelectedIndexChanged += new System.EventHandler(this.pathsTabControl_SelectedIndexChanged);
//
// feedingTabPage
//
resources.ApplyResources(this.feedingTabPage, "feedingTabPage");
this.feedingTabPage.Controls.Add(this.pathsFeedingCtrl);
this.feedingTabPage.Name = "feedingTabPage";
this.feedingTabPage.UseVisualStyleBackColor = true;
//
// pathsFeedingCtrl
//
resources.ApplyResources(this.pathsFeedingCtrl, "pathsFeedingCtrl");
this.pathsFeedingCtrl.DoubleClickActivation = false;
this.pathsFeedingCtrl.FullRowSelect = true;
this.pathsFeedingCtrl.GridLines = true;
this.pathsFeedingCtrl.Name = "pathsFeedingCtrl";
this.pathsFeedingCtrl.UseCompatibleStateImageBehavior = false;
this.pathsFeedingCtrl.View = System.Windows.Forms.View.Details;
this.pathsFeedingCtrl.SelectedIndexChanged += new System.EventHandler(this.SelectedIndexChanged);
//
// benchTabPage
//
resources.ApplyResources(this.benchTabPage, "benchTabPage");
this.benchTabPage.Controls.Add(this.pathsBenchCtrl);
this.benchTabPage.Name = "benchTabPage";
this.benchTabPage.UseVisualStyleBackColor = true;
//
// pathsBenchCtrl
//
resources.ApplyResources(this.pathsBenchCtrl, "pathsBenchCtrl");
this.pathsBenchCtrl.DoubleClickActivation = false;
this.pathsBenchCtrl.FullRowSelect = true;
this.pathsBenchCtrl.GridLines = true;
this.pathsBenchCtrl.Name = "pathsBenchCtrl";
this.pathsBenchCtrl.UseCompatibleStateImageBehavior = false;
this.pathsBenchCtrl.View = System.Windows.Forms.View.Details;
this.pathsBenchCtrl.SelectedIndexChanged += new System.EventHandler(this.SelectedIndexChanged);
//
// outputTabPage
//
resources.ApplyResources(this.outputTabPage, "outputTabPage");
this.outputTabPage.Controls.Add(this.pathsOutputCtrl);
this.outputTabPage.Name = "outputTabPage";
this.outputTabPage.UseVisualStyleBackColor = true;
//
// pathsOutputCtrl
//
resources.ApplyResources(this.pathsOutputCtrl, "pathsOutputCtrl");
this.pathsOutputCtrl.DoubleClickActivation = false;
this.pathsOutputCtrl.FullRowSelect = true;
this.pathsOutputCtrl.GridLines = true;
this.pathsOutputCtrl.Name = "pathsOutputCtrl";
this.pathsOutputCtrl.UseCompatibleStateImageBehavior = false;
this.pathsOutputCtrl.View = System.Windows.Forms.View.Details;
this.pathsOutputCtrl.SelectedIndexChanged += new System.EventHandler(this.SelectedIndexChanged);
//
// metersTabPage
//
resources.ApplyResources(this.metersTabPage, "metersTabPage");
this.metersTabPage.Controls.Add(this.pathsMetersCtrl);
this.metersTabPage.Name = "metersTabPage";
this.metersTabPage.UseVisualStyleBackColor = true;
//
// pathsMetersCtrl
//
resources.ApplyResources(this.pathsMetersCtrl, "pathsMetersCtrl");
this.pathsMetersCtrl.DoubleClickActivation = false;
this.pathsMetersCtrl.FullRowSelect = true;
this.pathsMetersCtrl.GridLines = true;
this.pathsMetersCtrl.Name = "pathsMetersCtrl";
this.pathsMetersCtrl.UseCompatibleStateImageBehavior = false;
this.pathsMetersCtrl.View = System.Windows.Forms.View.Details;
this.pathsMetersCtrl.SelectedIndexChanged += new System.EventHandler(this.SelectedIndexChanged);
//
// sharedButtons
//
resources.ApplyResources(this.sharedButtons, "sharedButtons");
this.sharedButtons.Name = "sharedButtons";
//
// PathsDlg
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.splitContainer);
this.Name = "PathsDlg";
this.Load += new System.EventHandler(this.PathsDlg_Load);
this.splitContainer.Panel1.ResumeLayout(false);
this.splitContainer.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer)).EndInit();
this.splitContainer.ResumeLayout(false);
this.pathsTabControl.ResumeLayout(false);
this.feedingTabPage.ResumeLayout(false);
this.benchTabPage.ResumeLayout(false);
this.outputTabPage.ResumeLayout(false);
this.metersTabPage.ResumeLayout(false);
this.ResumeLayout(false);
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PathsDlg));
this.splitContainer = new System.Windows.Forms.SplitContainer();
this.pathsTabControl = new System.Windows.Forms.TabControl();
this.feedingTabPage = new System.Windows.Forms.TabPage();
this.pathsFeedingCtrl = new TBF.UiControls.PathsFeedingCtrl();
this.benchTabPage = new System.Windows.Forms.TabPage();
this.pathsBenchCtrl = new TBF.UiControls.PathsBenchCtrl();
this.outputTabPage = new System.Windows.Forms.TabPage();
this.pathsOutputCtrl = new TBF.UiControls.PathsOutputCtrl();
this.metersTabPage = new System.Windows.Forms.TabPage();
this.pathsMetersCtrl = new TBF.UiControls.PathsMetersCtrl();
this.sharedButtons = new TBF.UiControls.SharedButtons();
((System.ComponentModel.ISupportInitialize)(this.splitContainer)).BeginInit();
this.splitContainer.Panel1.SuspendLayout();
this.splitContainer.Panel2.SuspendLayout();
this.splitContainer.SuspendLayout();
this.pathsTabControl.SuspendLayout();
this.feedingTabPage.SuspendLayout();
this.benchTabPage.SuspendLayout();
this.outputTabPage.SuspendLayout();
this.metersTabPage.SuspendLayout();
this.SuspendLayout();
//
// splitContainer
//
resources.ApplyResources(this.splitContainer, "splitContainer");
this.splitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
this.splitContainer.Name = "splitContainer";
//
// splitContainer.Panel1
//
this.splitContainer.Panel1.Controls.Add(this.pathsTabControl);
//
// splitContainer.Panel2
//
this.splitContainer.Panel2.Controls.Add(this.sharedButtons);
//
// pathsTabControl
//
this.pathsTabControl.Controls.Add(this.feedingTabPage);
this.pathsTabControl.Controls.Add(this.benchTabPage);
this.pathsTabControl.Controls.Add(this.outputTabPage);
this.pathsTabControl.Controls.Add(this.metersTabPage);
resources.ApplyResources(this.pathsTabControl, "pathsTabControl");
this.pathsTabControl.Name = "pathsTabControl";
this.pathsTabControl.SelectedIndex = 0;
this.pathsTabControl.SelectedIndexChanged += new System.EventHandler(this.pathsTabControl_SelectedIndexChanged);
//
// feedingTabPage
//
this.feedingTabPage.Controls.Add(this.pathsFeedingCtrl);
resources.ApplyResources(this.feedingTabPage, "feedingTabPage");
this.feedingTabPage.Name = "feedingTabPage";
this.feedingTabPage.UseVisualStyleBackColor = true;
//
// pathsFeedingCtrl
//
resources.ApplyResources(this.pathsFeedingCtrl, "pathsFeedingCtrl");
this.pathsFeedingCtrl.DoubleClickActivation = false;
this.pathsFeedingCtrl.FullRowSelect = true;
this.pathsFeedingCtrl.GridLines = true;
this.pathsFeedingCtrl.Name = "pathsFeedingCtrl";
this.pathsFeedingCtrl.UseCompatibleStateImageBehavior = false;
this.pathsFeedingCtrl.View = System.Windows.Forms.View.Details;
this.pathsFeedingCtrl.SelectedIndexChanged += new System.EventHandler(this.SelectedIndexChanged);
//
// benchTabPage
//
this.benchTabPage.Controls.Add(this.pathsBenchCtrl);
resources.ApplyResources(this.benchTabPage, "benchTabPage");
this.benchTabPage.Name = "benchTabPage";
this.benchTabPage.UseVisualStyleBackColor = true;
//
// pathsBenchCtrl
//
resources.ApplyResources(this.pathsBenchCtrl, "pathsBenchCtrl");
this.pathsBenchCtrl.DoubleClickActivation = false;
this.pathsBenchCtrl.FullRowSelect = true;
this.pathsBenchCtrl.GridLines = true;
this.pathsBenchCtrl.Name = "pathsBenchCtrl";
this.pathsBenchCtrl.UseCompatibleStateImageBehavior = false;
this.pathsBenchCtrl.View = System.Windows.Forms.View.Details;
this.pathsBenchCtrl.SelectedIndexChanged += new System.EventHandler(this.SelectedIndexChanged);
//
// outputTabPage
//
this.outputTabPage.Controls.Add(this.pathsOutputCtrl);
resources.ApplyResources(this.outputTabPage, "outputTabPage");
this.outputTabPage.Name = "outputTabPage";
this.outputTabPage.UseVisualStyleBackColor = true;
//
// pathsOutputCtrl
//
resources.ApplyResources(this.pathsOutputCtrl, "pathsOutputCtrl");
this.pathsOutputCtrl.DoubleClickActivation = false;
this.pathsOutputCtrl.FullRowSelect = true;
this.pathsOutputCtrl.GridLines = true;
this.pathsOutputCtrl.Name = "pathsOutputCtrl";
this.pathsOutputCtrl.UseCompatibleStateImageBehavior = false;
this.pathsOutputCtrl.View = System.Windows.Forms.View.Details;
this.pathsOutputCtrl.SelectedIndexChanged += new System.EventHandler(this.SelectedIndexChanged);
//
// metersTabPage
//
this.metersTabPage.Controls.Add(this.pathsMetersCtrl);
resources.ApplyResources(this.metersTabPage, "metersTabPage");
this.metersTabPage.Name = "metersTabPage";
this.metersTabPage.UseVisualStyleBackColor = true;
//
// pathsMetersCtrl
//
resources.ApplyResources(this.pathsMetersCtrl, "pathsMetersCtrl");
this.pathsMetersCtrl.DoubleClickActivation = false;
this.pathsMetersCtrl.FullRowSelect = true;
this.pathsMetersCtrl.GridLines = true;
this.pathsMetersCtrl.Name = "pathsMetersCtrl";
this.pathsMetersCtrl.UseCompatibleStateImageBehavior = false;
this.pathsMetersCtrl.View = System.Windows.Forms.View.Details;
this.pathsMetersCtrl.SelectedIndexChanged += new System.EventHandler(this.SelectedIndexChanged);
//
// sharedButtons
//
resources.ApplyResources(this.sharedButtons, "sharedButtons");
this.sharedButtons.Name = "sharedButtons";
//
// PathsDlg
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.splitContainer);
this.Name = "PathsDlg";
this.Load += new System.EventHandler(this.PathsDlg_Load);
this.splitContainer.Panel1.ResumeLayout(false);
this.splitContainer.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer)).EndInit();
this.splitContainer.ResumeLayout(false);
this.pathsTabControl.ResumeLayout(false);
this.feedingTabPage.ResumeLayout(false);
this.benchTabPage.ResumeLayout(false);
this.outputTabPage.ResumeLayout(false);
this.metersTabPage.ResumeLayout(false);
this.ResumeLayout(false);
}
@ -186,10 +184,10 @@ namespace TBF
private System.Windows.Forms.TabPage benchTabPage;
private System.Windows.Forms.TabPage outputTabPage;
private System.Windows.Forms.TabPage metersTabPage;
private UiControls.SharedButtons sharedButtons;
private UiControls.SharedButtons sharedButtons;
private UiControls.PathsFeedingCtrl pathsFeedingCtrl;
private UiControls.PathsBenchCtrl pathsBenchCtrl;
private UiControls.PathsOutputCtrl pathsOutputCtrl;
private UiControls.PathsMetersCtrl pathsMetersCtrl;
}
}
}

View File

@ -1,5 +1,5 @@
///
/// Copyright (c) 2013-2015 Sensus Metering Systems
/// Copyright (c) 2013-2016 Sensus Metering Systems
///
using System;
using System.Collections.Generic;
@ -22,7 +22,8 @@ namespace TBF
Feeding,
Bench,
Output,
Meters,
WaterMeters,
HeatMeters,
}
/// Used when re-scaling the dialog: 100% = 96dpi, 125% = 120dpi, 150% = 144dpi
@ -33,6 +34,11 @@ namespace TBF
public IList<IValve> Valves;
public ISession Session; /// One common DB session passed also to the controls inside tab pages
#if HEAT_METERS_SUPPORT
private System.Windows.Forms.TabPage heatMetersTabPage;
private UiControls.PathsHeatMetersCtrl pathsHeatMetersCtrl;
#endif
public PathsDlg()
{
/// Detect display setting: 100% = 96dpi, 125% = 120dpi, 150% = 144dpi.
@ -64,14 +70,49 @@ namespace TBF
pathsTabControl.TabPages[(int)PathsDlgTabs.Feeding].Tag = pathsFeedingCtrl;
pathsTabControl.TabPages[(int)PathsDlgTabs.Bench].Tag = pathsBenchCtrl;
pathsTabControl.TabPages[(int)PathsDlgTabs.Output].Tag = pathsOutputCtrl;
pathsTabControl.TabPages[(int)PathsDlgTabs.Meters].Tag = pathsMetersCtrl;
pathsTabControl.TabPages[(int)PathsDlgTabs.WaterMeters].Tag = pathsMetersCtrl;
// Requires 'Session' to be created
// Requires 'Session' to be created
pathsFeedingCtrl.Initialize(this, pathsTabControl.TabPages[(int)PathsDlgTabs.Feeding]);
pathsBenchCtrl.Initialize(this, pathsTabControl.TabPages[(int)PathsDlgTabs.Bench]);
pathsOutputCtrl.Initialize(this, pathsTabControl.TabPages[(int)PathsDlgTabs.Output]);
pathsMetersCtrl.Initialize(this, pathsTabControl.TabPages[(int)PathsDlgTabs.Meters]);
}
pathsMetersCtrl.Initialize(this, pathsTabControl.TabPages[(int)PathsDlgTabs.WaterMeters]);
#if HEAT_METERS_SUPPORT
this.heatMetersTabPage = new System.Windows.Forms.TabPage();
this.pathsHeatMetersCtrl = new TBF.UiControls.PathsHeatMetersCtrl();
this.heatMetersTabPage.SuspendLayout();
this.SuspendLayout();
this.pathsTabControl.Controls.Add(this.heatMetersTabPage);
//
// heatMetersTabPage
//
this.heatMetersTabPage.Controls.Add(this.pathsHeatMetersCtrl);
this.heatMetersTabPage.Name = "heatMetersTabPage";
this.heatMetersTabPage.UseVisualStyleBackColor = true;
//
// pathsHeatMetersCtrl
//
this.pathsHeatMetersCtrl.DoubleClickActivation = false;
this.pathsHeatMetersCtrl.FullRowSelect = true;
this.pathsHeatMetersCtrl.GridLines = true;
this.pathsHeatMetersCtrl.Name = "pathsHeatMetersCtrl";
this.pathsHeatMetersCtrl.UseCompatibleStateImageBehavior = false;
this.pathsHeatMetersCtrl.View = System.Windows.Forms.View.Details;
this.pathsHeatMetersCtrl.SelectedIndexChanged += new System.EventHandler(this.SelectedIndexChanged);
this.heatMetersTabPage.ResumeLayout(false);
this.ResumeLayout(false);
pathsTabControl.TabPages[(int)PathsDlgTabs.HeatMeters].Text = Strings.Heat_meter_sensors; /// Localization
pathsTabControl.TabPages[(int)PathsDlgTabs.HeatMeters].Tag = pathsHeatMetersCtrl;
// Requires 'Session' to be created
pathsHeatMetersCtrl.Initialize(this, pathsTabControl.TabPages[(int)PathsDlgTabs.HeatMeters]);
#endif
}
private void PathsDlg_Load(object sender, EventArgs e)
{
@ -89,8 +130,8 @@ namespace TBF
pathsTabControl.TabPages[(int)PathsDlgTabs.Feeding].Text = Strings.FeedingTabPageTitle;
pathsTabControl.TabPages[(int)PathsDlgTabs.Bench].Text = Strings.BenchTabPageTitle;
pathsTabControl.TabPages[(int)PathsDlgTabs.Output].Text = Strings.OutputTabPageTitle;
pathsTabControl.TabPages[(int)PathsDlgTabs.Meters].Text = Strings.MetersTabPageTitle;
}
pathsTabControl.TabPages[(int)PathsDlgTabs.WaterMeters].Text = Strings.MetersTabPageTitle;
}
private void Unlocked(object sender, EventArgs e)
{

View File

@ -117,331 +117,379 @@
<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="outputTabPage.Size" type="System.Drawing.Size, System.Drawing">
<value>831, 277</value>
</data>
<data name="&gt;&gt;splitContainer.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;pathsTabControl.Parent" xml:space="preserve">
<value>splitContainer.Panel1</value>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="splitContainer.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="sharedButtons.TabIndex" type="System.Int32, mscorlib">
<data name="splitContainer.IsSplitterFixed" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="splitContainer.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="pathsFeedingCtrl.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="pathsFeedingCtrl.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="pathsFeedingCtrl.Size" type="System.Drawing.Size, System.Drawing">
<value>825, 271</value>
</data>
<data name="pathsFeedingCtrl.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;feedingTabPage.Parent" xml:space="preserve">
<value>pathsTabControl</value>
<data name="&gt;&gt;pathsFeedingCtrl.Name" xml:space="preserve">
<value>pathsFeedingCtrl</value>
</data>
<data name="&gt;&gt;pathsFeedingCtrl.Type" xml:space="preserve">
<value>TBF.UiControls.PathsFeedingCtrl, TBF, Version=2.8.315.1, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;pathsFeedingCtrl.Parent" xml:space="preserve">
<value>feedingTabPage</value>
</data>
<data name="&gt;&gt;pathsFeedingCtrl.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="feedingTabPage.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 34</value>
</data>
<data name="feedingTabPage.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="feedingTabPage.Size" type="System.Drawing.Size, System.Drawing">
<value>831, 277</value>
</data>
<data name="feedingTabPage.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="feedingTabPage.Text" xml:space="preserve">
<value> Feeding </value>
</data>
<data name="&gt;&gt;feedingTabPage.Name" xml:space="preserve">
<value>feedingTabPage</value>
</data>
<data name="&gt;&gt;feedingTabPage.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="metersTabPage.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;pathsOutputCtrl.Parent" xml:space="preserve">
<value>outputTabPage</value>
</data>
<data name="&gt;&gt;benchTabPage.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;outputTabPage.Parent" xml:space="preserve">
<data name="&gt;&gt;feedingTabPage.Parent" xml:space="preserve">
<value>pathsTabControl</value>
</data>
<data name="pathsOutputCtrl.Location" type="System.Drawing.Point, System.Drawing">
<data name="&gt;&gt;feedingTabPage.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="pathsBenchCtrl.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="pathsBenchCtrl.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="pathsBenchCtrl.Size" type="System.Drawing.Size, System.Drawing">
<value>825, 271</value>
</data>
<data name="pathsFeedingCtrl.Size" type="System.Drawing.Size, System.Drawing">
<value>825, 271</value>
<data name="pathsBenchCtrl.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;pathsBenchCtrl.Name" xml:space="preserve">
<value>pathsBenchCtrl</value>
</data>
<data name="&gt;&gt;pathsBenchCtrl.Type" xml:space="preserve">
<value>TBF.UiControls.PathsBenchCtrl, TBF, Version=2.8.315.1, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;pathsBenchCtrl.Parent" xml:space="preserve">
<value>benchTabPage</value>
</data>
<data name="&gt;&gt;pathsBenchCtrl.Type" xml:space="preserve">
<value>TBF.UiControls.PathsBenchCtrl, TBF, Version=2.3.244.1, Culture=neutral, PublicKeyToken=null</value>
<data name="&gt;&gt;pathsBenchCtrl.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="splitContainer.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<data name="benchTabPage.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 34</value>
</data>
<data name="benchTabPage.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="benchTabPage.Size" type="System.Drawing.Size, System.Drawing">
<value>831, 277</value>
</data>
<data name="benchTabPage.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="benchTabPage.Text" xml:space="preserve">
<value> Bench </value>
</data>
<data name="&gt;&gt;benchTabPage.Name" xml:space="preserve">
<value>benchTabPage</value>
</data>
<data name="&gt;&gt;benchTabPage.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;benchTabPage.Parent" xml:space="preserve">
<value>pathsTabControl</value>
</data>
<data name="&gt;&gt;benchTabPage.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="pathsOutputCtrl.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="pathsOutputCtrl.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="pathsOutputCtrl.Size" type="System.Drawing.Size, System.Drawing">
<value>825, 271</value>
</data>
<data name="pathsOutputCtrl.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;pathsOutputCtrl.Name" xml:space="preserve">
<value>pathsOutputCtrl</value>
</data>
<data name="&gt;&gt;pathsOutputCtrl.Type" xml:space="preserve">
<value>TBF.UiControls.PathsOutputCtrl, TBF, Version=2.8.315.1, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;pathsOutputCtrl.Parent" xml:space="preserve">
<value>outputTabPage</value>
</data>
<data name="&gt;&gt;pathsOutputCtrl.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="outputTabPage.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 34</value>
</data>
<data name="outputTabPage.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="outputTabPage.Size" type="System.Drawing.Size, System.Drawing">
<value>831, 277</value>
</data>
<data name="outputTabPage.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="outputTabPage.Text" xml:space="preserve">
<value> Output </value>
</data>
<data name="&gt;&gt;outputTabPage.Name" xml:space="preserve">
<value>outputTabPage</value>
</data>
<data name="&gt;&gt;outputTabPage.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;outputTabPage.Parent" xml:space="preserve">
<value>pathsTabControl</value>
</data>
<data name="&gt;&gt;outputTabPage.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="pathsMetersCtrl.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="pathsMetersCtrl.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="pathsMetersCtrl.Size" type="System.Drawing.Size, System.Drawing">
<value>831, 277</value>
</data>
<data name="pathsMetersCtrl.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;pathsMetersCtrl.Name" xml:space="preserve">
<value>pathsMetersCtrl</value>
</data>
<data name="&gt;&gt;pathsMetersCtrl.Type" xml:space="preserve">
<value>TBF.UiControls.PathsMetersCtrl, TBF, Version=2.8.315.1, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;pathsMetersCtrl.Parent" xml:space="preserve">
<value>metersTabPage</value>
</data>
<data name="&gt;&gt;pathsMetersCtrl.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="metersTabPage.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 34</value>
</data>
<data name="metersTabPage.Size" type="System.Drawing.Size, System.Drawing">
<value>831, 277</value>
</data>
<data name="metersTabPage.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="metersTabPage.Text" xml:space="preserve">
<value> Sensors </value>
</data>
<data name="&gt;&gt;metersTabPage.Name" xml:space="preserve">
<value>metersTabPage</value>
</data>
<data name="&gt;&gt;metersTabPage.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;metersTabPage.Parent" xml:space="preserve">
<value>pathsTabControl</value>
</data>
<data name="&gt;&gt;metersTabPage.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="pathsHeatMetersCtrl.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="pathsHeatMetersCtrl.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="pathsHeatMetersCtrl.Size" type="System.Drawing.Size, System.Drawing">
<value>831, 277</value>
</data>
<data name="pathsHeatMetersCtrl.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;pathsHeatMetersCtrl.Name" xml:space="preserve">
<value>pathsHeatMetersCtrl</value>
</data>
<data name="&gt;&gt;pathsHeatMetersCtrl.Type" xml:space="preserve">
<value>TBF.UiControls.PathsHeatMetersCtrl, TBF, Version=2.8.315.1, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;pathsHeatMetersCtrl.Parent" xml:space="preserve">
<value>heatMetersTabPage</value>
</data>
<data name="&gt;&gt;pathsHeatMetersCtrl.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="heatMetersTabPage.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 34</value>
</data>
<data name="heatMetersTabPage.Size" type="System.Drawing.Size, System.Drawing">
<value>831, 277</value>
</data>
<data name="heatMetersTabPage.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="heatMetersTabPage.Text" xml:space="preserve">
<value>Heat meter sensors</value>
</data>
<data name="&gt;&gt;heatMetersTabPage.Name" xml:space="preserve">
<value>heatMetersTabPage</value>
</data>
<data name="&gt;&gt;heatMetersTabPage.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;heatMetersTabPage.Parent" xml:space="preserve">
<value>pathsTabControl</value>
</data>
<data name="&gt;&gt;heatMetersTabPage.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="pathsTabControl.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="pathsTabControl.ItemSize" type="System.Drawing.Size, System.Drawing">
<value>42, 30</value>
</data>
<data name="pathsTabControl.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="pathsTabControl.Size" type="System.Drawing.Size, System.Drawing">
<value>839, 315</value>
</data>
<data name="pathsTabControl.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;pathsTabControl.Name" xml:space="preserve">
<value>pathsTabControl</value>
</data>
<data name="&gt;&gt;pathsTabControl.Type" xml:space="preserve">
<value>System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;pathsTabControl.Parent" xml:space="preserve">
<value>splitContainer.Panel1</value>
</data>
<data name="&gt;&gt;pathsTabControl.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;splitContainer.Panel1.Name" xml:space="preserve">
<value>splitContainer.Panel1</value>
</data>
<data name="&gt;&gt;splitContainer.Panel1.Type" xml:space="preserve">
<value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;splitContainer.Panel1.Parent" xml:space="preserve">
<value>splitContainer</value>
</data>
<data name="&gt;&gt;splitContainer.Panel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="sharedButtons.Location" type="System.Drawing.Point, System.Drawing">
<value>-2, 0</value>
</data>
<data name="sharedButtons.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 521</value>
</data>
<data name="sharedButtons.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;sharedButtons.Name" xml:space="preserve">
<value>sharedButtons</value>
</data>
<data name="&gt;&gt;sharedButtons.Type" xml:space="preserve">
<value>TBF.UiControls.SharedButtons, TBF, Version=2.8.315.1, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;sharedButtons.Parent" xml:space="preserve">
<value>splitContainer.Panel2</value>
</data>
<data name="&gt;&gt;sharedButtons.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;splitContainer.Panel2.Name" xml:space="preserve">
<value>splitContainer.Panel2</value>
</data>
<data name="&gt;&gt;splitContainer.Panel2.Type" xml:space="preserve">
<value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;splitContainer.Panel2.Parent" xml:space="preserve">
<value>splitContainer</value>
</data>
<data name="&gt;&gt;splitContainer.Panel2.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;feedingTabPage.Name" xml:space="preserve">
<value>feedingTabPage</value>
</data>
<data name="benchTabPage.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="&gt;&gt;pathsOutputCtrl.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>6, 13</value>
</data>
<data name="&gt;&gt;metersTabPage.Parent" xml:space="preserve">
<value>pathsTabControl</value>
</data>
<data name="pathsBenchCtrl.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="feedingTabPage.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 34</value>
</data>
<data name="&gt;&gt;outputTabPage.Name" xml:space="preserve">
<value>outputTabPage</value>
</data>
<data name="&gt;&gt;pathsOutputCtrl.Name" xml:space="preserve">
<value>pathsOutputCtrl</value>
</data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterParent</value>
</data>
<data name="&gt;&gt;pathsFeedingCtrl.Type" xml:space="preserve">
<value>TBF.UiControls.PathsFeedingCtrl, TBF, Version=2.3.244.1, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;benchTabPage.Parent" xml:space="preserve">
<value>pathsTabControl</value>
</data>
<data name="&gt;&gt;pathsMetersCtrl.Type" xml:space="preserve">
<value>TBF.UiControls.PathsMetersCtrl, TBF, Version=2.3.244.1, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="benchTabPage.Text" xml:space="preserve">
<value> Bench </value>
</data>
<data name="&gt;&gt;outputTabPage.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;metersTabPage.Name" xml:space="preserve">
<value>metersTabPage</value>
</data>
<data name="pathsFeedingCtrl.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="pathsTabControl.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="&gt;&gt;pathsFeedingCtrl.Name" xml:space="preserve">
<value>pathsFeedingCtrl</value>
</data>
<data name="benchTabPage.Size" type="System.Drawing.Size, System.Drawing">
<value>831, 277</value>
</data>
<data name="splitContainer.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="&gt;&gt;outputTabPage.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="&gt;&gt;splitContainer.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;sharedButtons.Parent" xml:space="preserve">
<value>splitContainer.Panel2</value>
</data>
<data name="&gt;&gt;pathsMetersCtrl.Name" xml:space="preserve">
<value>pathsMetersCtrl</value>
<data name="splitContainer.Size" type="System.Drawing.Size, System.Drawing">
<value>941, 315</value>
</data>
<data name="splitContainer.SplitterDistance" type="System.Int32, mscorlib">
<value>839</value>
</data>
<data name="splitContainer.IsSplitterFixed" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="pathsBenchCtrl.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="&gt;&gt;sharedButtons.Name" xml:space="preserve">
<value>sharedButtons</value>
</data>
<data name="sharedButtons.Location" type="System.Drawing.Point, System.Drawing">
<value>-2, 0</value>
</data>
<data name="outputTabPage.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;pathsTabControl.Type" xml:space="preserve">
<value>System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="pathsTabControl.Size" type="System.Drawing.Size, System.Drawing">
<value>839, 315</value>
</data>
<data name="&gt;&gt;splitContainer.Panel2.Type" xml:space="preserve">
<value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="feedingTabPage.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="pathsTabControl.ItemSize" type="System.Drawing.Size, System.Drawing">
<value>42, 30</value>
</data>
<data name="pathsMetersCtrl.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="outputTabPage.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="&gt;&gt;sharedButtons.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;sharedButtons.Type" xml:space="preserve">
<value>TBF.UiControls.SharedButtons, TBF, Version=2.3.244.1, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;metersTabPage.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;pathsMetersCtrl.Parent" xml:space="preserve">
<value>metersTabPage</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>PathsDlg</value>
</data>
<data name="pathsMetersCtrl.Size" type="System.Drawing.Size, System.Drawing">
<value>831, 277</value>
</data>
<data name="outputTabPage.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 34</value>
</data>
<data name="pathsTabControl.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;metersTabPage.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="&gt;&gt;splitContainer.Panel1.Name" xml:space="preserve">
<value>splitContainer.Panel1</value>
</data>
<data name="&gt;&gt;pathsFeedingCtrl.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;pathsMetersCtrl.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="pathsBenchCtrl.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="feedingTabPage.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="outputTabPage.Text" xml:space="preserve">
<value> Output </value>
</data>
<data name="&gt;&gt;benchTabPage.Name" xml:space="preserve">
<value>benchTabPage</value>
</data>
<data name="feedingTabPage.Text" xml:space="preserve">
<value> Feeding </value>
</data>
<data name="&gt;&gt;pathsBenchCtrl.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="pathsOutputCtrl.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;benchTabPage.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;pathsOutputCtrl.Type" xml:space="preserve">
<value>TBF.UiControls.PathsOutputCtrl, TBF, Version=2.3.244.1, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;splitContainer.Type" xml:space="preserve">
<value>System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;splitContainer.Panel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;splitContainer.Panel1.Type" xml:space="preserve">
<value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="metersTabPage.Size" type="System.Drawing.Size, System.Drawing">
<value>831, 277</value>
</data>
<data name="pathsMetersCtrl.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;pathsFeedingCtrl.Parent" xml:space="preserve">
<value>feedingTabPage</value>
</data>
<data name="pathsOutputCtrl.Size" type="System.Drawing.Size, System.Drawing">
<value>825, 271</value>
</data>
<data name="&gt;&gt;splitContainer.Panel2.Name" xml:space="preserve">
<value>splitContainer.Panel2</value>
</data>
<data name="&gt;&gt;pathsTabControl.Name" xml:space="preserve">
<value>pathsTabControl</value>
</data>
<data name="splitContainer.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="benchTabPage.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="pathsTabControl.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="sharedButtons.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 521</value>
</data>
<data name="&gt;&gt;splitContainer.Name" xml:space="preserve">
<value>splitContainer</value>
</data>
<data name="splitContainer.Size" type="System.Drawing.Size, System.Drawing">
<value>941, 315</value>
<data name="&gt;&gt;splitContainer.Type" xml:space="preserve">
<value>System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="pathsMetersCtrl.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
<data name="&gt;&gt;splitContainer.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="benchTabPage.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 34</value>
</data>
<data name="&gt;&gt;pathsBenchCtrl.Name" xml:space="preserve">
<value>pathsBenchCtrl</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Bench - Paths</value>
</data>
<data name="pathsFeedingCtrl.TabIndex" type="System.Int32, mscorlib">
<data name="&gt;&gt;splitContainer.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>941, 315</value>
</data>
<data name="pathsFeedingCtrl.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="feedingTabPage.Size" type="System.Drawing.Size, System.Drawing">
<value>831, 277</value>
</data>
<data name="&gt;&gt;feedingTabPage.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;pathsTabControl.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="metersTabPage.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 34</value>
</data>
<data name="&gt;&gt;splitContainer.Panel1.Parent" xml:space="preserve">
<value>splitContainer</value>
</data>
<data name="pathsOutputCtrl.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>6, 13</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>941, 315</value>
</data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterParent</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Bench - Paths</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>PathsDlg</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>

View File

@ -80,6 +80,7 @@ namespace TBF
this.parametersTabPage = new System.Windows.Forms.TabPage();
this.parametersListViewEx = new TBF.UiControls.ListViewEx();
this.sharedButtons = new TBF.UiControls.SharedButtons();
this.metersKindRadioButton3 = new System.Windows.Forms.RadioButton();
((System.ComponentModel.ISupportInitialize)(this.mainSplitContainer)).BeginInit();
this.mainSplitContainer.Panel1.SuspendLayout();
this.mainSplitContainer.Panel2.SuspendLayout();
@ -101,30 +102,28 @@ namespace TBF
//
// mainSplitContainer.Panel1
//
resources.ApplyResources(this.mainSplitContainer.Panel1, "mainSplitContainer.Panel1");
this.mainSplitContainer.Panel1.Controls.Add(this.tabControl);
//
// mainSplitContainer.Panel2
//
resources.ApplyResources(this.mainSplitContainer.Panel2, "mainSplitContainer.Panel2");
this.mainSplitContainer.Panel2.Controls.Add(this.sharedButtons);
//
// tabControl
//
resources.ApplyResources(this.tabControl, "tabControl");
this.tabControl.Controls.Add(this.generalTabPage);
this.tabControl.Controls.Add(this.historyTabPage);
this.tabControl.Controls.Add(this.metrology1TabPage);
this.tabControl.Controls.Add(this.metrology2TabPage);
this.tabControl.Controls.Add(this.processTabPage);
this.tabControl.Controls.Add(this.parametersTabPage);
resources.ApplyResources(this.tabControl, "tabControl");
this.tabControl.Name = "tabControl";
this.tabControl.SelectedIndex = 0;
this.tabControl.SelectedIndexChanged += new System.EventHandler(this.tabControl_SelectedIndexChanged);
//
// generalTabPage
//
resources.ApplyResources(this.generalTabPage, "generalTabPage");
this.generalTabPage.Controls.Add(this.metersKindRadioButton3);
this.generalTabPage.Controls.Add(this.fileWriter4ComboBox);
this.generalTabPage.Controls.Add(this.fileWriter3ComboBox);
this.generalTabPage.Controls.Add(this.printer2ComboBox);
@ -159,33 +158,32 @@ namespace TBF
this.generalTabPage.Controls.Add(this.label12);
this.generalTabPage.Controls.Add(this.procNameTextBox);
this.generalTabPage.Controls.Add(this.label1);
this.generalTabPage.ImageKey = global::TBF.Resources.Strings.Camera;
resources.ApplyResources(this.generalTabPage, "generalTabPage");
this.generalTabPage.Name = "generalTabPage";
this.generalTabPage.ToolTipText = global::TBF.Resources.Strings.Camera;
this.generalTabPage.UseVisualStyleBackColor = true;
//
// fileWriter4ComboBox
//
resources.ApplyResources(this.fileWriter4ComboBox, "fileWriter4ComboBox");
this.fileWriter4ComboBox.FormattingEnabled = true;
resources.ApplyResources(this.fileWriter4ComboBox, "fileWriter4ComboBox");
this.fileWriter4ComboBox.Name = "fileWriter4ComboBox";
//
// fileWriter3ComboBox
//
resources.ApplyResources(this.fileWriter3ComboBox, "fileWriter3ComboBox");
this.fileWriter3ComboBox.FormattingEnabled = true;
resources.ApplyResources(this.fileWriter3ComboBox, "fileWriter3ComboBox");
this.fileWriter3ComboBox.Name = "fileWriter3ComboBox";
//
// printer2ComboBox
//
resources.ApplyResources(this.printer2ComboBox, "printer2ComboBox");
this.printer2ComboBox.FormattingEnabled = true;
resources.ApplyResources(this.printer2ComboBox, "printer2ComboBox");
this.printer2ComboBox.Name = "printer2ComboBox";
//
// fileWriter2ComboBox
//
resources.ApplyResources(this.fileWriter2ComboBox, "fileWriter2ComboBox");
this.fileWriter2ComboBox.FormattingEnabled = true;
resources.ApplyResources(this.fileWriter2ComboBox, "fileWriter2ComboBox");
this.fileWriter2ComboBox.Name = "fileWriter2ComboBox";
//
// protocolTitleTextBox
@ -202,7 +200,6 @@ namespace TBF
// metersKindRadioButton2
//
resources.ApplyResources(this.metersKindRadioButton2, "metersKindRadioButton2");
this.metersKindRadioButton2.ImageKey = global::TBF.Resources.Strings.Camera;
this.metersKindRadioButton2.Name = "metersKindRadioButton2";
this.metersKindRadioButton2.TabStop = true;
this.metersKindRadioButton2.UseVisualStyleBackColor = true;
@ -210,69 +207,63 @@ namespace TBF
// metersKindRadioButton1
//
resources.ApplyResources(this.metersKindRadioButton1, "metersKindRadioButton1");
this.metersKindRadioButton1.ImageKey = global::TBF.Resources.Strings.Camera;
this.metersKindRadioButton1.Name = "metersKindRadioButton1";
this.metersKindRadioButton1.TabStop = true;
this.metersKindRadioButton1.UseVisualStyleBackColor = true;
//
// transitionEndComboBox
//
resources.ApplyResources(this.transitionEndComboBox, "transitionEndComboBox");
this.transitionEndComboBox.FormattingEnabled = true;
resources.ApplyResources(this.transitionEndComboBox, "transitionEndComboBox");
this.transitionEndComboBox.Name = "transitionEndComboBox";
//
// transitionEndLabel
//
resources.ApplyResources(this.transitionEndLabel, "transitionEndLabel");
this.transitionEndLabel.ImageKey = global::TBF.Resources.Strings.Camera;
this.transitionEndLabel.Name = "transitionEndLabel";
//
// transitionStartComboBox
//
resources.ApplyResources(this.transitionStartComboBox, "transitionStartComboBox");
this.transitionStartComboBox.FormattingEnabled = true;
resources.ApplyResources(this.transitionStartComboBox, "transitionStartComboBox");
this.transitionStartComboBox.Name = "transitionStartComboBox";
//
// transitionStartLabel
//
resources.ApplyResources(this.transitionStartLabel, "transitionStartLabel");
this.transitionStartLabel.ImageKey = global::TBF.Resources.Strings.Camera;
this.transitionStartLabel.Name = "transitionStartLabel";
//
// fileWriter1ComboBox
//
resources.ApplyResources(this.fileWriter1ComboBox, "fileWriter1ComboBox");
this.fileWriter1ComboBox.FormattingEnabled = true;
resources.ApplyResources(this.fileWriter1ComboBox, "fileWriter1ComboBox");
this.fileWriter1ComboBox.Name = "fileWriter1ComboBox";
//
// printer1ComboBox
//
resources.ApplyResources(this.printer1ComboBox, "printer1ComboBox");
this.printer1ComboBox.FormattingEnabled = true;
resources.ApplyResources(this.printer1ComboBox, "printer1ComboBox");
this.printer1ComboBox.Name = "printer1ComboBox";
//
// dataEntryComboBox
//
resources.ApplyResources(this.dataEntryComboBox, "dataEntryComboBox");
this.dataEntryComboBox.FormattingEnabled = true;
resources.ApplyResources(this.dataEntryComboBox, "dataEntryComboBox");
this.dataEntryComboBox.Name = "dataEntryComboBox";
//
// resultsWriterLabel
//
resources.ApplyResources(this.resultsWriterLabel, "resultsWriterLabel");
this.resultsWriterLabel.ImageKey = global::TBF.Resources.Strings.Camera;
this.resultsWriterLabel.Name = "resultsWriterLabel";
//
// resultsPrinterLabel
//
resources.ApplyResources(this.resultsPrinterLabel, "resultsPrinterLabel");
this.resultsPrinterLabel.ImageKey = global::TBF.Resources.Strings.Camera;
this.resultsPrinterLabel.Name = "resultsPrinterLabel";
//
// dataEntryLabel
//
resources.ApplyResources(this.dataEntryLabel, "dataEntryLabel");
this.dataEntryLabel.ImageKey = global::TBF.Resources.Strings.Camera;
this.dataEntryLabel.Name = "dataEntryLabel";
//
// notesTextBox
@ -283,7 +274,6 @@ namespace TBF
// label18
//
resources.ApplyResources(this.label18, "label18");
this.label18.ImageKey = global::TBF.Resources.Strings.Camera;
this.label18.Name = "label18";
//
// watermetersTextBox
@ -294,7 +284,6 @@ namespace TBF
// watermetersLabel
//
resources.ApplyResources(this.watermetersLabel, "watermetersLabel");
this.watermetersLabel.ImageKey = global::TBF.Resources.Strings.Camera;
this.watermetersLabel.Name = "watermetersLabel";
//
// lastChangedOnTextBox
@ -305,7 +294,6 @@ namespace TBF
// label15
//
resources.ApplyResources(this.label15, "label15");
this.label15.ImageKey = global::TBF.Resources.Strings.Camera;
this.label15.Name = "label15";
//
// lastChangedByTextBox
@ -316,7 +304,6 @@ namespace TBF
// label16
//
resources.ApplyResources(this.label16, "label16");
this.label16.ImageKey = global::TBF.Resources.Strings.Camera;
this.label16.Name = "label16";
//
// createdOnTextBox
@ -327,7 +314,6 @@ namespace TBF
// label14
//
resources.ApplyResources(this.label14, "label14");
this.label14.ImageKey = global::TBF.Resources.Strings.Camera;
this.label14.Name = "label14";
//
// createdByTextBox
@ -338,7 +324,6 @@ namespace TBF
// label13
//
resources.ApplyResources(this.label13, "label13");
this.label13.ImageKey = global::TBF.Resources.Strings.Camera;
this.label13.Name = "label13";
//
// descriptionTextBox
@ -349,7 +334,6 @@ namespace TBF
// label12
//
resources.ApplyResources(this.label12, "label12");
this.label12.ImageKey = global::TBF.Resources.Strings.Camera;
this.label12.Name = "label12";
//
// procNameTextBox
@ -360,22 +344,19 @@ namespace TBF
// label1
//
resources.ApplyResources(this.label1, "label1");
this.label1.ImageKey = global::TBF.Resources.Strings.Camera;
this.label1.Name = "label1";
//
// historyTabPage
//
resources.ApplyResources(this.historyTabPage, "historyTabPage");
this.historyTabPage.Controls.Add(this.historyListViewEx);
this.historyTabPage.ImageKey = global::TBF.Resources.Strings.Camera;
resources.ApplyResources(this.historyTabPage, "historyTabPage");
this.historyTabPage.Name = "historyTabPage";
this.historyTabPage.ToolTipText = global::TBF.Resources.Strings.Camera;
this.historyTabPage.UseVisualStyleBackColor = true;
//
// historyListViewEx
//
resources.ApplyResources(this.historyListViewEx, "historyListViewEx");
this.historyListViewEx.AllowColumnReorder = true;
resources.ApplyResources(this.historyListViewEx, "historyListViewEx");
this.historyListViewEx.DoubleClickActivation = false;
this.historyListViewEx.FullRowSelect = true;
this.historyListViewEx.GridLines = true;
@ -385,17 +366,15 @@ namespace TBF
//
// metrology1TabPage
//
resources.ApplyResources(this.metrology1TabPage, "metrology1TabPage");
this.metrology1TabPage.Controls.Add(this.metrology1ListViewEx);
this.metrology1TabPage.ImageKey = global::TBF.Resources.Strings.Camera;
resources.ApplyResources(this.metrology1TabPage, "metrology1TabPage");
this.metrology1TabPage.Name = "metrology1TabPage";
this.metrology1TabPage.ToolTipText = global::TBF.Resources.Strings.Camera;
this.metrology1TabPage.UseVisualStyleBackColor = true;
//
// metrology1ListViewEx
//
resources.ApplyResources(this.metrology1ListViewEx, "metrology1ListViewEx");
this.metrology1ListViewEx.AllowColumnReorder = true;
resources.ApplyResources(this.metrology1ListViewEx, "metrology1ListViewEx");
this.metrology1ListViewEx.DoubleClickActivation = false;
this.metrology1ListViewEx.FullRowSelect = true;
this.metrology1ListViewEx.GridLines = true;
@ -406,17 +385,15 @@ namespace TBF
//
// metrology2TabPage
//
resources.ApplyResources(this.metrology2TabPage, "metrology2TabPage");
this.metrology2TabPage.Controls.Add(this.metrology2ListViewEx);
this.metrology2TabPage.ImageKey = global::TBF.Resources.Strings.Camera;
resources.ApplyResources(this.metrology2TabPage, "metrology2TabPage");
this.metrology2TabPage.Name = "metrology2TabPage";
this.metrology2TabPage.ToolTipText = global::TBF.Resources.Strings.Camera;
this.metrology2TabPage.UseVisualStyleBackColor = true;
//
// metrology2ListViewEx
//
resources.ApplyResources(this.metrology2ListViewEx, "metrology2ListViewEx");
this.metrology2ListViewEx.AllowColumnReorder = true;
resources.ApplyResources(this.metrology2ListViewEx, "metrology2ListViewEx");
this.metrology2ListViewEx.DoubleClickActivation = false;
this.metrology2ListViewEx.FullRowSelect = true;
this.metrology2ListViewEx.GridLines = true;
@ -427,17 +404,15 @@ namespace TBF
//
// processTabPage
//
resources.ApplyResources(this.processTabPage, "processTabPage");
this.processTabPage.Controls.Add(this.processListViewEx);
this.processTabPage.ImageKey = global::TBF.Resources.Strings.Camera;
resources.ApplyResources(this.processTabPage, "processTabPage");
this.processTabPage.Name = "processTabPage";
this.processTabPage.ToolTipText = global::TBF.Resources.Strings.Camera;
this.processTabPage.UseVisualStyleBackColor = true;
//
// processListViewEx
//
resources.ApplyResources(this.processListViewEx, "processListViewEx");
this.processListViewEx.AllowColumnReorder = true;
resources.ApplyResources(this.processListViewEx, "processListViewEx");
this.processListViewEx.DoubleClickActivation = false;
this.processListViewEx.FullRowSelect = true;
this.processListViewEx.GridLines = true;
@ -448,17 +423,15 @@ namespace TBF
//
// parametersTabPage
//
resources.ApplyResources(this.parametersTabPage, "parametersTabPage");
this.parametersTabPage.Controls.Add(this.parametersListViewEx);
this.parametersTabPage.ImageKey = global::TBF.Resources.Strings.Camera;
resources.ApplyResources(this.parametersTabPage, "parametersTabPage");
this.parametersTabPage.Name = "parametersTabPage";
this.parametersTabPage.ToolTipText = global::TBF.Resources.Strings.Camera;
this.parametersTabPage.UseVisualStyleBackColor = true;
//
// parametersListViewEx
//
resources.ApplyResources(this.parametersListViewEx, "parametersListViewEx");
this.parametersListViewEx.AllowColumnReorder = true;
resources.ApplyResources(this.parametersListViewEx, "parametersListViewEx");
this.parametersListViewEx.DoubleClickActivation = false;
this.parametersListViewEx.FullRowSelect = true;
this.parametersListViewEx.Name = "parametersListViewEx";
@ -470,6 +443,13 @@ namespace TBF
resources.ApplyResources(this.sharedButtons, "sharedButtons");
this.sharedButtons.Name = "sharedButtons";
//
// metersKindRadioButton3
//
resources.ApplyResources(this.metersKindRadioButton3, "metersKindRadioButton3");
this.metersKindRadioButton3.Name = "metersKindRadioButton3";
this.metersKindRadioButton3.TabStop = true;
this.metersKindRadioButton3.UseVisualStyleBackColor = true;
//
// ProcedureDlg
//
resources.ApplyResources(this, "$this");
@ -543,5 +523,6 @@ namespace TBF
private System.Windows.Forms.ComboBox fileWriter3ComboBox;
private System.Windows.Forms.ComboBox printer2ComboBox;
private System.Windows.Forms.ComboBox fileWriter4ComboBox;
private System.Windows.Forms.RadioButton metersKindRadioButton3;
}
}

View File

@ -43,7 +43,8 @@ namespace TBF
IList<BenchPath> benchPaths;
IList<OutputPath> outputPaths;
IList<MetersPath> metersPaths;
IList<TransitionSequence> transitionSequences;
IList<HeatMetersPath> heatMetersPaths;
IList<TransitionSequence> transitionSequences;
IList<TestParamsCtrl> testParamsCtrls;
IList<ProcedureParamsCtrl> procedureParamsCtrls;
@ -131,7 +132,10 @@ namespace TBF
benchPaths = session.CreateQuery("FROM BenchPath").List<BenchPath>();
outputPaths = session.CreateQuery("FROM OutputPath").List<OutputPath>();
metersPaths = session.CreateQuery("FROM MetersPath").List<MetersPath>();
transitionSequences = session.CreateQuery("FROM TransitionSequence").List<TransitionSequence>();
#if HEAT_METERS_SUPPORT
heatMetersPaths = session.CreateQuery("FROM HeatMetersPath").List<HeatMetersPath>();
#endif
transitionSequences = session.CreateQuery("FROM TransitionSequence").List<TransitionSequence>();
}
transitionStartComboBox.Items.Add("---");
@ -294,8 +298,11 @@ namespace TBF
fileWriter4ComboBox.Enabled = false;
metersKindRadioButton1.Enabled = false;
metersKindRadioButton2.Enabled = false;
notesTextBox.Enabled = false;
metersKindRadioButton3.Enabled = false;
notesTextBox.Enabled = false;
#if !HEAT_METERS_SUPPORT
metersKindRadioButton3.Visible = false;
#endif
/// Make some controls readonly
createdByTextBox.ReadOnly = true;
createdOnTextBox.ReadOnly = true;
@ -317,9 +324,34 @@ namespace TBF
void Localize()
{
Text = Strings.Procedure;
generalTabPage.Text = Strings.General;
historyTabPage.Text = Strings.History_of_changes;
metrology1TabPage.Text = Strings.Metrology + " I.";
metrology2TabPage.Text = Strings.Metrology + " II.";
processTabPage.Text = Strings.Process;
parametersTabPage.Text = Strings.Parameters;
label1.Text = Strings.Procedure_name;
label12.Text = Strings.Short_description;
label13.Text = Strings.Created_by;
label16.Text = Strings.Last_changed_by;
label14.Text = Strings.Date;
label15.Text = Strings.Date;
label18.Text = Strings.Notes;
watermetersLabel.Text = Strings.Meter_types_tested;
protocolTitleLabel.Text = Strings.Protocol_title;
dataEntryLabel.Text = Strings.Data_entry;
transitionStartLabel.Text = Strings.Purge_Begin;
transitionEndLabel.Text = Strings.Purge_End;
resultsPrinterLabel.Text = Strings.Printing;
resultsWriterLabel.Text = Strings.Saving_results;
metersKindRadioButton1.Text = Strings.SingleBtnText;
metersKindRadioButton2.Text = Strings.CombinedBtnText;
}
metersKindRadioButton2.Text = Strings.Compound;
metersKindRadioButton3.Text = Strings.Heat_meter;
}
void RefreshAllTabs()
{
@ -377,9 +409,12 @@ namespace TBF
fileWriter4ComboBox.Text = (fields.Length >= 4) ? fields[3] : "---";
}
metersKindRadioButton1.Checked = (LoadedProcedure.MetersKind == MetersKind.Single);
metersKindRadioButton1.Checked = (LoadedProcedure.MetersKind == MetersKind.Single
|| (LoadedProcedure.MetersKind != MetersKind.Combined && LoadedProcedure.MetersKind != MetersKind.HeatMeter));
metersKindRadioButton2.Checked = (LoadedProcedure.MetersKind == MetersKind.Combined);
notesTextBox.Text = LoadedProcedure.LongDescription;
metersKindRadioButton3.Checked = (LoadedProcedure.MetersKind == MetersKind.HeatMeter);
notesTextBox.Text = LoadedProcedure.LongDescription;
}
void UpdateFromGeneralTab()
@ -447,7 +482,9 @@ namespace TBF
LoadedProcedure.ResultsWriter = sb.ToString();
}
LoadedProcedure.MetersKind = (metersKindRadioButton1.Checked ? MetersKind.Single : MetersKind.Combined);
LoadedProcedure.MetersKind = (metersKindRadioButton1.Checked ? MetersKind.Single
: (metersKindRadioButton2.Checked ? MetersKind.Combined
: MetersKind.HeatMeter));
LoadedProcedure.LongDescription = notesTextBox.Text;
}
@ -659,7 +696,10 @@ namespace TBF
Bench,
Output,
Sensor,
TrnStart,
#if HEAT_METERS_SUPPORT
HeatMeterSensors,
#endif
TrnStart,
TrnStop,
ProcessClmnCount
}
@ -672,10 +712,13 @@ namespace TBF
processListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Part, Width = 40 });
processListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Q_from_m3h, Width = 80 });
processListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Q_to_m3h, Width = 80 });
processListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Feeding_chdr, Width = 90 });
processListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Bench_chdr, Width = 90 });
processListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Output_chdr, Width = 90 });
processListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Sensors_chdr, Width = 90 });
processListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Feeding_chdr, Width = 80 });
processListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Bench_chdr, Width = 80 });
processListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Output_chdr, Width = 80 });
processListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Sensors_chdr, Width = 80 });
#if HEAT_METERS_SUPPORT
processListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Heat_meter_sensors, Width = 110 });
#endif
processListViewEx.Columns.Add(new ColumnHeader { Text = Strings.TransitionStart_chdr, Width = 100 });
processListViewEx.Columns.Add(new ColumnHeader { Text = Strings.TransitionEnd_chdr, Width = 100 });
@ -689,6 +732,9 @@ namespace TBF
new ComboBox(), /// Table
new ComboBox(), /// Output
new ComboBox(), /// Meters
#if HEAT_METERS_SUPPORT
new ComboBox(), /// Heat meters
#endif
new ComboBox(), /// TransitionStart
new ComboBox(), /// TransitionEnd
};
@ -697,6 +743,9 @@ namespace TBF
foreach (var path in benchPaths) ((ComboBox)processEditors[(int)ProcessClmn.Bench]).Items.Add(path.Name);
foreach (var path in outputPaths) ((ComboBox)processEditors[(int)ProcessClmn.Output]).Items.Add(path.Name);
foreach (var path in metersPaths) ((ComboBox)processEditors[(int)ProcessClmn.Sensor]).Items.Add(path.Name);
#if HEAT_METERS_SUPPORT
foreach (var path in heatMetersPaths) ((ComboBox)processEditors[(int)ProcessClmn.HeatMeterSensors]).Items.Add(path.Name);
#endif
((ComboBox)processEditors[(int)ProcessClmn.TrnStart]).Items.Add("---");
((ComboBox)processEditors[(int)ProcessClmn.TrnStop]).Items.Add("---");
@ -859,6 +908,9 @@ namespace TBF
lviProcess.SubItems.Add(test.BenchPath);
lviProcess.SubItems.Add(test.OutputPath);
lviProcess.SubItems.Add(test.MetersPath);
#if HEAT_METERS_SUPPORT
lviProcess.SubItems.Add(test.HeatMetersPath);
#endif
lviProcess.SubItems.Add(string.IsNullOrEmpty(test.RelTransBefore) ? "---" : test.RelTransBefore);
lviProcess.SubItems.Add(string.IsNullOrEmpty(test.TransitionAfter) ? "---" : test.TransitionAfter);
@ -992,6 +1044,12 @@ namespace TBF
{
entity.MetersPath = lvi.SubItems[(int)ProcessClmn.Sensor].Text;
}
#if HEAT_METERS_SUPPORT
if ((processEditors[(int)ProcessClmn.HeatMeterSensors] as ComboBox).Items.Contains(lvi.SubItems[(int)ProcessClmn.HeatMeterSensors].Text))
{
entity.HeatMetersPath = lvi.SubItems[(int)ProcessClmn.HeatMeterSensors].Text;
}
#endif
if ((processEditors[(int)ProcessClmn.TrnStart] as ComboBox).Items.Contains(lvi.SubItems[(int)ProcessClmn.TrnStart].Text))
{
entity.RelTransBefore = lvi.SubItems[(int)ProcessClmn.TrnStart].Text.Equals("---") ? string.Empty : lvi.SubItems[(int)ProcessClmn.TrnStart].Text;
@ -1291,6 +1349,9 @@ namespace TBF
dataEntryComboBox.Enabled = true;
metersKindRadioButton1.Enabled = true;
metersKindRadioButton2.Enabled = true;
#if HEAT_METERS_SUPPORT
metersKindRadioButton3.Enabled = true;
#endif
printer1ComboBox.Enabled = true;
printer2ComboBox.Enabled = true;
fileWriter1ComboBox.Enabled = true;

View File

@ -1,238 +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="protocolTitleLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>85, 13</value>
</data>
<data name="protocolTitleLabel.Text" xml:space="preserve">
<value>Název protokolu</value>
</data>
<data name="metersKindRadioButton2.Size" type="System.Drawing.Size, System.Drawing">
<value>90, 17</value>
</data>
<data name="metersKindRadioButton2.Text" xml:space="preserve">
<value>Kombinované</value>
</data>
<data name="metersKindRadioButton1.Size" type="System.Drawing.Size, System.Drawing">
<value>48, 17</value>
</data>
<data name="metersKindRadioButton1.Text" xml:space="preserve">
<value>Singl</value>
</data>
<data name="transitionEndLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>55, 13</value>
</data>
<data name="transitionEndLabel.Text" xml:space="preserve">
<value>Vypuštění</value>
</data>
<data name="transitionStartLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>38, 13</value>
</data>
<data name="transitionStartLabel.Text" xml:space="preserve">
<value>Plnění</value>
</data>
<data name="resultsWriterLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>33, 13</value>
</data>
<data name="resultsWriterLabel.Text" xml:space="preserve">
<value>Uložit</value>
</data>
<data name="resultsPrinterLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>48, 13</value>
</data>
<data name="resultsPrinterLabel.Text" xml:space="preserve">
<value>Tisknout</value>
</data>
<data name="dataEntryLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 13</value>
</data>
<data name="dataEntryLabel.Text" xml:space="preserve">
<value>Vložte data</value>
</data>
<data name="label18.Size" type="System.Drawing.Size, System.Drawing">
<value>56, 13</value>
</data>
<data name="label18.Text" xml:space="preserve">
<value>Poznámky</value>
</data>
<data name="watermetersLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>115, 13</value>
</data>
<data name="watermetersLabel.Text" xml:space="preserve">
<value>Testované typy měřičů</value>
</data>
<data name="label15.Size" type="System.Drawing.Size, System.Drawing">
<value>38, 13</value>
</data>
<data name="label15.Text" xml:space="preserve">
<value>Datum</value>
</data>
<data name="label16.Size" type="System.Drawing.Size, System.Drawing">
<value>83, 13</value>
</data>
<data name="label16.Text" xml:space="preserve">
<value>Poslední změna</value>
</data>
<data name="label14.Size" type="System.Drawing.Size, System.Drawing">
<value>38, 13</value>
</data>
<data name="label14.Text" xml:space="preserve">
<value>Datum</value>
</data>
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
<value>42, 13</value>
</data>
<data name="label13.Text" xml:space="preserve">
<value>Vytvořil</value>
</data>
<data name="label12.Size" type="System.Drawing.Size, System.Drawing">
<value>71, 13</value>
</data>
<data name="label12.Text" xml:space="preserve">
<value>Stručný popis</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>79, 13</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Jméno postupu</value>
</data>
<data name="generalTabPage.Text" xml:space="preserve">
<value>Obecné</value>
</data>
<data name="historyTabPage.Text" xml:space="preserve">
<value>Historie změn</value>
</data>
<data name="metrology1TabPage.Text" xml:space="preserve">
<value>Metrologie I.</value>
</data>
<data name="metrology2TabPage.Text" xml:space="preserve">
<value>Metrologie II.</value>
</data>
<data name="processTabPage.Text" xml:space="preserve">
<value>Proces</value>
</data>
<data name="parametersTabPage.Text" xml:space="preserve">
<value>Parametry</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Procedura</value>
</data>
</root>

View File

@ -1,328 +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="protocolTitleTextBox.Location" type="System.Drawing.Point, System.Drawing">
<value>148, 105</value>
</data>
<data name="protocolTitleTextBox.Size" type="System.Drawing.Size, System.Drawing">
<value>526, 20</value>
</data>
<data name="protocolTitleLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>20, 108</value>
</data>
<data name="metersKindRadioButton2.Location" type="System.Drawing.Point, System.Drawing">
<value>428, 162</value>
</data>
<data name="metersKindRadioButton2.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 17</value>
</data>
<data name="metersKindRadioButton2.Text" xml:space="preserve">
<value>Verbund</value>
</data>
<data name="metersKindRadioButton1.Location" type="System.Drawing.Point, System.Drawing">
<value>357, 162</value>
</data>
<data name="metersKindRadioButton1.Size" type="System.Drawing.Size, System.Drawing">
<value>53, 17</value>
</data>
<data name="metersKindRadioButton1.Text" xml:space="preserve">
<value>Einzel</value>
</data>
<data name="transitionEndLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>20, 200</value>
</data>
<data name="transitionEndLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>62, 13</value>
</data>
<data name="transitionEndLabel.Text" xml:space="preserve">
<value>Entwässern</value>
</data>
<data name="transitionStartLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>45, 13</value>
</data>
<data name="transitionStartLabel.Text" xml:space="preserve">
<value>Befüllen</value>
</data>
<data name="resultsWriterLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>20, 269</value>
</data>
<data name="resultsWriterLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>122, 13</value>
</data>
<data name="resultsWriterLabel.Text" xml:space="preserve">
<value>Speichern auf Festplatte</value>
</data>
<data name="resultsPrinterLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>20, 223</value>
</data>
<data name="resultsPrinterLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>45, 13</value>
</data>
<data name="resultsPrinterLabel.Text" xml:space="preserve">
<value>Drucker</value>
</data>
<data name="dataEntryLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>20, 154</value>
</data>
<data name="dataEntryLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>112, 13</value>
</data>
<data name="dataEntryLabel.Text" xml:space="preserve">
<value>Zählernummereingabe</value>
</data>
<data name="notesTextBox.Location" type="System.Drawing.Point, System.Drawing">
<value>357, 195</value>
</data>
<data name="label18.Location" type="System.Drawing.Point, System.Drawing">
<value>290, 200</value>
</data>
<data name="label18.Size" type="System.Drawing.Size, System.Drawing">
<value>61, 13</value>
</data>
<data name="label18.Text" xml:space="preserve">
<value>Bemerkung</value>
</data>
<data name="watermetersTextBox.Location" type="System.Drawing.Point, System.Drawing">
<value>148, 128</value>
</data>
<data name="watermetersTextBox.Size" type="System.Drawing.Size, System.Drawing">
<value>526, 20</value>
</data>
<data name="watermetersLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>20, 131</value>
</data>
<data name="watermetersLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>70, 13</value>
</data>
<data name="watermetersLabel.Text" xml:space="preserve">
<value>Wasserzellen</value>
</data>
<data name="lastChangedOnTextBox.Location" type="System.Drawing.Point, System.Drawing">
<value>357, 82</value>
</data>
<data name="label15.Location" type="System.Drawing.Point, System.Drawing">
<value>290, 85</value>
</data>
<data name="label15.Size" type="System.Drawing.Size, System.Drawing">
<value>38, 13</value>
</data>
<data name="label15.Text" xml:space="preserve">
<value>Datum</value>
</data>
<data name="label16.Size" type="System.Drawing.Size, System.Drawing">
<value>102, 13</value>
</data>
<data name="label16.Text" xml:space="preserve">
<value>letzte Änderung von</value>
</data>
<data name="createdOnTextBox.Location" type="System.Drawing.Point, System.Drawing">
<value>357, 59</value>
</data>
<data name="label14.Location" type="System.Drawing.Point, System.Drawing">
<value>290, 62</value>
</data>
<data name="label14.Size" type="System.Drawing.Size, System.Drawing">
<value>38, 13</value>
</data>
<data name="label14.Text" xml:space="preserve">
<value>Datum</value>
</data>
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
<value>62, 13</value>
</data>
<data name="label13.Text" xml:space="preserve">
<value>Errstellt von</value>
</data>
<data name="descriptionTextBox.Size" type="System.Drawing.Size, System.Drawing">
<value>526, 20</value>
</data>
<data name="label12.Size" type="System.Drawing.Size, System.Drawing">
<value>92, 13</value>
</data>
<data name="label12.Text" xml:space="preserve">
<value>Kurzbeschreibung</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 13</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Prüfungsname</value>
</data>
<data name="generalTabPage.Size" type="System.Drawing.Size, System.Drawing">
<value>923, 371</value>
</data>
<data name="generalTabPage.Text" xml:space="preserve">
<value> Allgemein </value>
</data>
<data name="historyListViewEx.Size" type="System.Drawing.Size, System.Drawing">
<value>917, 365</value>
</data>
<data name="historyTabPage.Size" type="System.Drawing.Size, System.Drawing">
<value>923, 371</value>
</data>
<data name="historyTabPage.Text" xml:space="preserve">
<value>Änderungen</value>
</data>
<data name="metrology1ListViewEx.Size" type="System.Drawing.Size, System.Drawing">
<value>917, 365</value>
</data>
<data name="metrology1TabPage.Size" type="System.Drawing.Size, System.Drawing">
<value>923, 371</value>
</data>
<data name="metrology1TabPage.Text" xml:space="preserve">
<value> Metrologie I. </value>
</data>
<data name="metrology2ListViewEx.Size" type="System.Drawing.Size, System.Drawing">
<value>917, 365</value>
</data>
<data name="metrology2TabPage.Size" type="System.Drawing.Size, System.Drawing">
<value>923, 371</value>
</data>
<data name="metrology2TabPage.Text" xml:space="preserve">
<value> Metrologie II. </value>
</data>
<data name="processListViewEx.Size" type="System.Drawing.Size, System.Drawing">
<value>917, 365</value>
</data>
<data name="processTabPage.Size" type="System.Drawing.Size, System.Drawing">
<value>923, 371</value>
</data>
<data name="processTabPage.Text" xml:space="preserve">
<value> Prüfstrecke </value>
</data>
<data name="parametersListViewEx.Size" type="System.Drawing.Size, System.Drawing">
<value>923, 371</value>
</data>
<data name="parametersTabPage.Size" type="System.Drawing.Size, System.Drawing">
<value>923, 371</value>
</data>
<data name="tabControl.Size" type="System.Drawing.Size, System.Drawing">
<value>931, 409</value>
</data>
<data name="mainSplitContainer.Size" type="System.Drawing.Size, System.Drawing">
<value>1034, 409</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>1034, 409</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Prüfung</value>
</data>
</root>

File diff suppressed because it is too large Load Diff

View File

@ -1,193 +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="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>79, 13</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>程序</value>
</data>
<data name="dataEntryLabel.Text" xml:space="preserve">
<value>输入数据</value>
</data>
<data name="generalTabPage.Text" xml:space="preserve">
<value>总体情况</value>
</data>
<data name="historyTabPage.Text" xml:space="preserve">
<value>变更历史记录</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>程序名</value>
</data>
<data name="label12.Text" xml:space="preserve">
<value>简短描述</value>
</data>
<data name="label13.Text" xml:space="preserve">
<value>创建者</value>
</data>
<data name="label14.Text" xml:space="preserve">
<value>日期</value>
</data>
<data name="label15.Text" xml:space="preserve">
<value>日期</value>
</data>
<data name="label16.Text" xml:space="preserve">
<value>最后修改者</value>
</data>
<data name="label18.Text" xml:space="preserve">
<value>记录</value>
</data>
<data name="metersKindRadioButton1.Text" xml:space="preserve">
<value>单个的</value>
</data>
<data name="metersKindRadioButton2.Text" xml:space="preserve">
<value>组合的</value>
</data>
<data name="metrology1TabPage.Text" xml:space="preserve">
<value>计量 I.</value>
</data>
<data name="metrology2TabPage.Text" xml:space="preserve">
<value>计量 II.</value>
</data>
<data name="parametersTabPage.Text" xml:space="preserve">
<value>参数</value>
</data>
<data name="processTabPage.Text" xml:space="preserve">
<value>进程</value>
</data>
<data name="protocolTitleLabel.Text" xml:space="preserve">
<value>方案标题</value>
</data>
<data name="resultsPrinterLabel.Text" xml:space="preserve">
<value>打印结果</value>
</data>
<data name="resultsWriterLabel.Text" xml:space="preserve">
<value>写入结果</value>
</data>
<data name="transitionEndLabel.Text" xml:space="preserve">
<value>清除 - 结束</value>
</data>
<data name="transitionStartLabel.Text" xml:space="preserve">
<value>清除 - 开始</value>
</data>
<data name="watermetersLabel.Text" xml:space="preserve">
<value>测试仪表型号</value>
</data>
</root>

View File

@ -609,24 +609,6 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Combined meters.
/// </summary>
internal static string Combined_meters {
get {
return ResourceManager.GetString("Combined_meters", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Combined.
/// </summary>
internal static string CombinedBtnText {
get {
return ResourceManager.GetString("CombinedBtnText", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Communication.
/// </summary>
@ -645,6 +627,15 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Compound.
/// </summary>
internal static string Compound {
get {
return ResourceManager.GetString("Compound", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Compound meter {0}.
/// </summary>
@ -654,6 +645,15 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Compound meters.
/// </summary>
internal static string Compound_meters {
get {
return ResourceManager.GetString("Compound_meters", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Configuration.
/// </summary>
@ -771,6 +771,15 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Created by.
/// </summary>
internal static string Created_by {
get {
return ResourceManager.GetString("Created_by", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Data.
/// </summary>
@ -780,6 +789,15 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Data entry.
/// </summary>
internal static string Data_entry {
get {
return ResourceManager.GetString("Data_entry", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Database Settings.
/// </summary>
@ -1347,6 +1365,15 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to General.
/// </summary>
internal static string General {
get {
return ResourceManager.GetString("General", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Get mass of water in the tank.
/// </summary>
@ -1383,6 +1410,33 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Heat meter.
/// </summary>
internal static string Heat_meter {
get {
return ResourceManager.GetString("Heat_meter", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Heat meter sensors.
/// </summary>
internal static string Heat_meter_sensors {
get {
return ResourceManager.GetString("Heat_meter_sensors", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to History of changes.
/// </summary>
internal static string History_of_changes {
get {
return ResourceManager.GetString("History_of_changes", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Horizontally.
/// </summary>
@ -1500,6 +1554,15 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Last changed by.
/// </summary>
internal static string Last_changed_by {
get {
return ResourceManager.GetString("Last_changed_by", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Less.
/// </summary>
@ -1725,6 +1788,15 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Meter types tested.
/// </summary>
internal static string Meter_types_tested {
get {
return ResourceManager.GetString("Meter_types_tested", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Sensors.
/// </summary>
@ -1833,6 +1905,15 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to PHeat.
/// </summary>
internal static string New_heat_meters_path_name {
get {
return ResourceManager.GetString("New_heat_meters_path_name", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to - Copy.
/// </summary>
@ -1950,6 +2031,15 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Notes.
/// </summary>
internal static string Notes {
get {
return ResourceManager.GetString("Notes", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to &lt;nothing to configure&gt;.
/// </summary>
@ -2364,6 +2454,15 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Printing.
/// </summary>
internal static string Printing {
get {
return ResourceManager.GetString("Printing", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Procedure.
/// </summary>
@ -2391,6 +2490,15 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Procedure name.
/// </summary>
internal static string Procedure_name {
get {
return ResourceManager.GetString("Procedure_name", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Procedures.
/// </summary>
@ -2400,6 +2508,15 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Process.
/// </summary>
internal static string Process {
get {
return ResourceManager.GetString("Process", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Producer.
/// </summary>
@ -2454,6 +2571,15 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Protocol title.
/// </summary>
internal static string Protocol_title {
get {
return ResourceManager.GetString("Protocol_title", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Publish.
/// </summary>
@ -2517,6 +2643,15 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Purge - Begin.
/// </summary>
internal static string Purge_Begin {
get {
return ResourceManager.GetString("Purge_Begin", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Fill the test bench with water?.
/// </summary>
@ -2526,6 +2661,15 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Purge - End.
/// </summary>
internal static string Purge_End {
get {
return ResourceManager.GetString("Purge_End", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Purging.
/// </summary>
@ -2913,6 +3057,15 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Saving results.
/// </summary>
internal static string Saving_results {
get {
return ResourceManager.GetString("Saving_results", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Screen.
/// </summary>
@ -3048,6 +3201,15 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Short description.
/// </summary>
internal static string Short_description {
get {
return ResourceManager.GetString("Short_description", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Show cycle end form.
/// </summary>
@ -3237,6 +3399,15 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to T cold.
/// </summary>
internal static string T_cold {
get {
return ResourceManager.GetString("T_cold", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to T div..
/// </summary>
@ -3273,6 +3444,15 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to T inlet.
/// </summary>
internal static string T_inlet {
get {
return ResourceManager.GetString("T_inlet", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to T out.
/// </summary>
@ -3291,6 +3471,24 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to T outlet.
/// </summary>
internal static string T_outlet {
get {
return ResourceManager.GetString("T_outlet", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to T warm.
/// </summary>
internal static string T_warm {
get {
return ResourceManager.GetString("T_warm", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Target flow high [m3/h]:.
/// </summary>

View File

@ -252,10 +252,10 @@
<data name="cold" xml:space="preserve">
<value>Studený</value>
</data>
<data name="Combined_meters" xml:space="preserve">
<data name="Compound_meters" xml:space="preserve">
<value>Kombinovaná měřidla</value>
</data>
<data name="CombinedBtnText" xml:space="preserve">
<data name="Compound" xml:space="preserve">
<value>Kombinovaný</value>
</data>
<data name="Communication" xml:space="preserve">
@ -1215,4 +1215,55 @@
<data name="Purchase_order_may_have_max_N_characters" xml:space="preserve">
<value>Objednávka může mít maximálně {0} znaků</value>
</data>
<data name="Heat_meter" xml:space="preserve">
<value>Měřič tepla</value>
</data>
<data name="Heat_meter_sensors" xml:space="preserve">
<value>Senzory měřičů tepla</value>
</data>
<data name="Created_by" xml:space="preserve">
<value>Vytvořil</value>
</data>
<data name="Data_entry" xml:space="preserve">
<value>Vkládání údajů</value>
</data>
<data name="General" xml:space="preserve">
<value>Obecné</value>
</data>
<data name="History_of_changes" xml:space="preserve">
<value>Historie změn</value>
</data>
<data name="Last_changed_by" xml:space="preserve">
<value>Poslední změna</value>
</data>
<data name="Meter_types_tested" xml:space="preserve">
<value>Testované typy měřičů</value>
</data>
<data name="Notes" xml:space="preserve">
<value>Poznámky</value>
</data>
<data name="Printing" xml:space="preserve">
<value>Tisk výsledků</value>
</data>
<data name="Procedure_name" xml:space="preserve">
<value>Jméno postupu</value>
</data>
<data name="Process" xml:space="preserve">
<value>Proces</value>
</data>
<data name="Protocol_title" xml:space="preserve">
<value>Název protokolu</value>
</data>
<data name="Purge_Begin" xml:space="preserve">
<value>Plnění</value>
</data>
<data name="Purge_End" xml:space="preserve">
<value>Vypuštění</value>
</data>
<data name="Saving_results" xml:space="preserve">
<value>Ukládání výsledků</value>
</data>
<data name="Short_dercription" xml:space="preserve">
<value>Stručný popis</value>
</data>
</root>

View File

@ -741,9 +741,6 @@
<data name="Method_selection" xml:space="preserve">
<value>Auswahl Prüfart</value>
</data>
<data name="String1" xml:space="preserve">
<value />
</data>
<data name="Test_method2" xml:space="preserve">
<value>Prüfart</value>
</data>
@ -843,10 +840,10 @@
<data name="Changes_will_be_lost_Do_you_want_to_proceed" xml:space="preserve">
<value>Ergebnisse gehen verloren! Wollen sie fortfahren?</value>
</data>
<data name="CombinedBtnText" xml:space="preserve">
<data name="Compound" xml:space="preserve">
<value>Verbund</value>
</data>
<data name="Combined_meters" xml:space="preserve">
<data name="Compound_meters" xml:space="preserve">
<value>Verbund Wasserzähler</value>
</data>
<data name="Detection_completed" xml:space="preserve">
@ -1281,4 +1278,67 @@
<data name="stable" xml:space="preserve">
<value>stabil</value>
</data>
<data name="Heat_meter" xml:space="preserve">
<value>Wärmezähler</value>
</data>
<data name="Heat_meter_sensors" xml:space="preserve">
<value>Wärmezählersensoren</value>
</data>
<data name="T_cold" xml:space="preserve">
<value>T kalt</value>
</data>
<data name="T_inlet" xml:space="preserve">
<value>T einlass</value>
</data>
<data name="T_outlet" xml:space="preserve">
<value>T auslauf</value>
</data>
<data name="T_warm" xml:space="preserve">
<value>T warm</value>
</data>
<data name="Created_by" xml:space="preserve">
<value>Errstellt von</value>
</data>
<data name="Data_entry" xml:space="preserve">
<value>Zählernummereingabe</value>
</data>
<data name="General" xml:space="preserve">
<value>Allgemein</value>
</data>
<data name="History_of_changes" xml:space="preserve">
<value>Änderungen</value>
</data>
<data name="Last_changed_by" xml:space="preserve">
<value>letzte Änderung von</value>
</data>
<data name="Meter_types_tested" xml:space="preserve">
<value>Wasserzellen</value>
</data>
<data name="Notes" xml:space="preserve">
<value>Bemerkung</value>
</data>
<data name="Printing" xml:space="preserve">
<value>Drucker</value>
</data>
<data name="Procedure_name" xml:space="preserve">
<value>Prüfungsname</value>
</data>
<data name="Process" xml:space="preserve">
<value>Prüfstrecke</value>
</data>
<data name="Protocol_title" xml:space="preserve">
<value>Protokoll</value>
</data>
<data name="Purge_Begin" xml:space="preserve">
<value>Befüllen</value>
</data>
<data name="Purge_End" xml:space="preserve">
<value>Entwässern</value>
</data>
<data name="Saving_results" xml:space="preserve">
<value>Speichern auf Festplatte</value>
</data>
<data name="Short_dercription" xml:space="preserve">
<value>Kurzbeschreibung</value>
</data>
</root>

View File

@ -225,10 +225,10 @@
<data name="Closing_valve_Pump_off" xml:space="preserve">
<value>Zamknięcie zaworu wejściowego, wyłączanie pompy</value>
</data>
<data name="Combined_meters" xml:space="preserve">
<data name="Compound_meters" xml:space="preserve">
<value>Wodomierze sprzężone</value>
</data>
<data name="CombinedBtnText" xml:space="preserve">
<data name="Compound" xml:space="preserve">
<value>Sprzężone</value>
</data>
<data name="Communication" xml:space="preserve">
@ -1050,4 +1050,10 @@
<data name="Water_Meter_nr" xml:space="preserve">
<value>Wodomierz {0}</value>
</data>
<data name="Heat_meter" xml:space="preserve">
<value>Licznik ciepła</value>
</data>
<data name="Heat_meter_sensors" xml:space="preserve">
<value>Ciepłomierza czujniki</value>
</data>
</root>

View File

@ -552,8 +552,8 @@
<data name="TargetQ" xml:space="preserve">
<value>Target Q [m3/h]</value>
</data>
<data name="Combined_meters" xml:space="preserve">
<value>Combined meters</value>
<data name="Compound_meters" xml:space="preserve">
<value>Compound meters</value>
</data>
<data name="DetectionThresholdPct" xml:space="preserve">
<value>Detection threshold [%]</value>
@ -883,8 +883,8 @@
<data name="Timeout" xml:space="preserve">
<value>Timeout</value>
</data>
<data name="CombinedBtnText" xml:space="preserve">
<value>Combined</value>
<data name="Compound" xml:space="preserve">
<value>Compound</value>
</data>
<data name="Device" xml:space="preserve">
<value>Device</value>
@ -1435,4 +1435,70 @@
<data name="stable" xml:space="preserve">
<value>stable</value>
</data>
<data name="Heat_meter" xml:space="preserve">
<value>Heat meter</value>
</data>
<data name="Heat_meter_sensors" xml:space="preserve">
<value>Heat meter sensors</value>
</data>
<data name="T_cold" xml:space="preserve">
<value>T cold</value>
</data>
<data name="T_inlet" xml:space="preserve">
<value>T inlet</value>
</data>
<data name="T_outlet" xml:space="preserve">
<value>T outlet</value>
</data>
<data name="T_warm" xml:space="preserve">
<value>T warm</value>
</data>
<data name="New_heat_meters_path_name" xml:space="preserve">
<value>PHeat</value>
</data>
<data name="Created_by" xml:space="preserve">
<value>Created by</value>
</data>
<data name="Data_entry" xml:space="preserve">
<value>Data entry</value>
</data>
<data name="General" xml:space="preserve">
<value>General</value>
</data>
<data name="History_of_changes" xml:space="preserve">
<value>History of changes</value>
</data>
<data name="Last_changed_by" xml:space="preserve">
<value>Last changed by</value>
</data>
<data name="Meter_types_tested" xml:space="preserve">
<value>Meter types tested</value>
</data>
<data name="Notes" xml:space="preserve">
<value>Notes</value>
</data>
<data name="Printing" xml:space="preserve">
<value>Printing</value>
</data>
<data name="Procedure_name" xml:space="preserve">
<value>Procedure name</value>
</data>
<data name="Process" xml:space="preserve">
<value>Process</value>
</data>
<data name="Protocol_title" xml:space="preserve">
<value>Protocol title</value>
</data>
<data name="Purge_Begin" xml:space="preserve">
<value>Purge - Begin</value>
</data>
<data name="Purge_End" xml:space="preserve">
<value>Purge - End</value>
</data>
<data name="Saving_results" xml:space="preserve">
<value>Saving results</value>
</data>
<data name="Short_description" xml:space="preserve">
<value>Short description</value>
</data>
</root>

View File

@ -189,10 +189,10 @@
<data name="cold" xml:space="preserve">
<value>rece</value>
</data>
<data name="Combined_meters" xml:space="preserve">
<data name="Compound_meters" xml:space="preserve">
<value>Contor combinat</value>
</data>
<data name="CombinedBtnText" xml:space="preserve">
<data name="Compound" xml:space="preserve">
<value>Combinat</value>
</data>
<data name="Communication" xml:space="preserve">

View File

@ -123,6 +123,12 @@
<data name="CancelBtnText" xml:space="preserve">
<value>Zrušiť</value>
</data>
<data name="Compound" xml:space="preserve">
<value>Združený</value>
</data>
<data name="Compound_meters" xml:space="preserve">
<value>Združené vodomery</value>
</data>
<data name="Language" xml:space="preserve">
<value>Jazyk</value>
</data>

View File

@ -249,10 +249,10 @@
<data name="cold" xml:space="preserve">
<value>冷</value>
</data>
<data name="Combined_meters" xml:space="preserve">
<data name="Compound_meters" xml:space="preserve">
<value>组合水表</value>
</data>
<data name="CombinedBtnText" xml:space="preserve">
<data name="Compound" xml:space="preserve">
<value>组合的</value>
</data>
<data name="Communication" xml:space="preserve">
@ -1170,4 +1170,49 @@
<data name="Water_Meter_nr" xml:space="preserve">
<value>水表 {0}</value>
</data>
<data name="Created_by" xml:space="preserve">
<value>创建者</value>
</data>
<data name="Data_entry" xml:space="preserve">
<value>输入数据</value>
</data>
<data name="General" xml:space="preserve">
<value>总体情况</value>
</data>
<data name="History_of_changes" xml:space="preserve">
<value>变更历史记录</value>
</data>
<data name="Lats_changed_by" xml:space="preserve">
<value>最后修改者</value>
</data>
<data name="Meter_types_tested" xml:space="preserve">
<value>测试仪表型号</value>
</data>
<data name="Notes" xml:space="preserve">
<value>记录</value>
</data>
<data name="Printing" xml:space="preserve">
<value>打印结果</value>
</data>
<data name="Procedure_name" xml:space="preserve">
<value>程序名</value>
</data>
<data name="Process" xml:space="preserve">
<value>进程</value>
</data>
<data name="Protocol_title" xml:space="preserve">
<value>方案标题</value>
</data>
<data name="Purge_Begin" xml:space="preserve">
<value>清除 - 开始</value>
</data>
<data name="Purge_End" xml:space="preserve">
<value>清除 - 结束</value>
</data>
<data name="Saving_results" xml:space="preserve">
<value>写入结果</value>
</data>
<data name="Short_description" xml:space="preserve">
<value>简短描述</value>
</data>
</root>

View File

@ -203,7 +203,7 @@ namespace TBF.Screens
void UpdateVisibility(MetersKind metersKind)
{
bool visible = (metersKind == MetersKind.Single);
bool visible = (metersKind == MetersKind.Single || metersKind == MetersKind.HeatMeter);
for (int i = 2 * Config.Data.CompoundWMsCount; i < textBoxesCount; i++)
{
@ -249,7 +249,7 @@ namespace TBF.Screens
scaleCmpntLabel.Text = "---";
if (currentMetersKind == MetersKind.Single)
if (currentMetersKind == MetersKind.Single || currentMetersKind == MetersKind.HeatMeter)
{
watermeterPictureBox1.Visible = true;
watermeterPictureBox2.Visible = true;
@ -332,7 +332,7 @@ namespace TBF.Screens
error1Label.Text = "---";
passed1Label.Text = "---";
if (currentMetersKind == MetersKind.Single)
if (currentMetersKind == MetersKind.Single || currentMetersKind == MetersKind.HeatMeter)
{
for (int i = 0; i < textBoxesCount; i++)
{
@ -450,7 +450,7 @@ namespace TBF.Screens
double refError = TBF.BenchControl.Formulas.ErrorFromVolumes(refVolume, volumeCtv);
refErrorLabel.Text = refError.ToString("F3");
if (currentMetersKind == MetersKind.Single)
if (currentMetersKind == MetersKind.Single || currentMetersKind == MetersKind.HeatMeter)
{
for (int i = 0; i < Math.Min(textBoxesCount, ProcessData.RegisterReaders.Length); i++)
{

View File

@ -341,6 +341,7 @@
<Compile Include="BenchControl\GenericDevices\IModbus.cs" />
<Compile Include="BenchControl\GenericDevices\IBenchInfo.cs" />
<Compile Include="BenchControl\GenericDevices\ISimultTestMethod.cs" />
<Compile Include="BenchControl\HeatMetersPath.cs" />
<Compile Include="BenchControl\Keithley\RS232\Factory.cs" />
<Compile Include="BenchControl\Keithley\RS232\Multimeter.cs" />
<Compile Include="BenchControl\Keithley\RS232\MultimeterCfg.cs" />
@ -1415,6 +1416,9 @@
<Compile Include="UiControls\PathsFeedingCtrl.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="UiControls\PathsHeatMetersCtrl.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="UiControls\PathsMetersCtrl.cs">
<SubType>Component</SubType>
</Compile>
@ -1773,12 +1777,6 @@
<EmbeddedResource Include="PrintOrderDocument.resx">
<DependentUpon>PrintOrderDocument.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="ProcedureDlg.cs.resx">
<DependentUpon>ProcedureDlg.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="ProcedureDlg.zh-CN.resx">
<DependentUpon>ProcedureDlg.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Resources\Strings.cs.resx">
<Generator>ResXFileCodeGenerator</Generator>
<SubType>Designer</SubType>
@ -1865,9 +1863,6 @@
<SubType>Designer</SubType>
<DependentUpon>PreferencesDlg.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="ProcedureDlg.de.resx">
<DependentUpon>ProcedureDlg.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="ProcedureDlg.resx">
<DependentUpon>ProcedureDlg.cs</DependentUpon>
</EmbeddedResource>

View File

@ -0,0 +1,177 @@
///
/// Copyright (c) 2016 Sensus Metering Systems
///
using System.Windows.Forms;
using log4net;
using TBF.Resources;
namespace TBF.UiControls
{
public class PathsHeatMetersCtrl : BaseWithListViewEx<Config.Entities.HeatMetersPath>, ITabWithListViewEx
{
static readonly ILog log = LogManager.GetLogger(typeof(PathsHeatMetersCtrl));
/// <summary>
/// Fixed ListViewEx columns
/// </summary>
enum Column
{
Name,
Twarm,
Tcold,
FixedColumnsCount,
}
readonly int fixedColumnsCount = (int)Column.FixedColumnsCount;
PathsDlg parent;
Control parentControl;
Control[] editors;
public PathsHeatMetersCtrl()
: base()
{
}
public void Initialize(PathsDlg parent, Control parentControl)
{
this.parent = parent;
this.parentControl = parentControl;
#if HEAT_METERS_SUPPORT
/// Load the paths
MyItems = parent.Session
.CreateQuery("FROM HeatMetersPath ORDER BY ItemNr")
.List<Config.Entities.HeatMetersPath>();
SubItemClicked += new SubItemEventHandler(listViewEx_SubItemClicked);
SubItemEndEditing += new SubItemEndEditingEventHandler(listViewEx_SubItemEndEditing);
/// ListViewEx columns
TBF.LocalSettings ls = Program.LocalSettings;
Columns.Add(Strings.Name, (ls.HeatMetersColumnCount > (int)Column.Name) ? ls.HeatMetersColumnWidths[(int)Column.Name] : 60 * parent.Dpi / PathsDlg.Dpi100pct);
Columns.Add(Strings.T_warm, (ls.HeatMetersColumnCount > (int)Column.Twarm) ? ls.HeatMetersColumnWidths[(int)Column.Twarm] : 50 * parent.Dpi / PathsDlg.Dpi100pct);
Columns.Add(Strings.T_cold, (ls.HeatMetersColumnCount > (int)Column.Tcold) ? ls.HeatMetersColumnWidths[(int)Column.Tcold] : 50 * parent.Dpi / PathsDlg.Dpi100pct);
/// Temperatures, pressures
ComboBox tWarmCBox = new ComboBox();
ComboBox tColdCBox = new ComboBox();
foreach (var cmpnt in parent.TbfComponents)
{
if (cmpnt is BenchControl.GenericDevices.ITempMeter)
{
tWarmCBox.Items.Add(cmpnt.Cfg.Name);
tColdCBox.Items.Add(cmpnt.Cfg.Name);
}
}
editors = new Control[fixedColumnsCount];
///
editors[(int)Column.Name] = new TextBox(); /// Name
editors[(int)Column.Twarm] = tWarmCBox;
editors[(int)Column.Tcold] = tColdCBox;
///
for (int i = 0; i < editors.Length; i++)
{
editors[i].Visible = false;
parent.Controls.Add(editors[i]);
}
base.RedrawAll();
#endif
}
void listViewEx_SubItemClicked(object sender, SubItemEventArgs e)
{
if (!Unlocked || e.SubItem >= editors.Length) return;
if ((e.Item.Tag is Config.Entities.IHasItemNr) &&
((e.Item.Tag as Config.Entities.IHasItemNr).ItemNr < FixedRowsCount) &&
(e.SubItem < fixedColumnsCount))
{
return;
}
StartEditing(editors[e.SubItem], e.Item, e.SubItem);
}
void listViewEx_SubItemEndEditing(object sender, SubItemEndEditingEventArgs e)
{
}
public override void DrawOne(object myItem)
{
Config.Entities.HeatMetersPath entity = (Config.Entities.HeatMetersPath)myItem;
BenchControl.HeatMetersPath path = new BenchControl.HeatMetersPath(entity, parent.TbfComponents);
ListViewItem lvi = new ListViewItem(entity.Name);
lvi.SubItems.Add(path.TempWarm != null ? path.TempWarm.Cfg.Name : "---");
lvi.SubItems.Add(path.TempCold != null ? path.TempCold.Cfg.Name : "---");
lvi.Tag = entity;
Items.Add(lvi);
}
public override void UpdateOne(ListViewItem lvi, object myItem)
{
Config.Entities.HeatMetersPath entity = (Config.Entities.HeatMetersPath)myItem;
entity.Name = lvi.Text;
entity.TempWarm = lvi.SubItems[(int)Column.Twarm].Text;
entity.TempCold = lvi.SubItems[(int)Column.Tcold].Text;
}
/// <summary>
/// Update the entities and save them to the database
/// </summary>
public new void OkBtnClicked()
{
base.OkBtnClicked();
#if HEAT_METERS_SUPPORT
/// Update the database
foreach (var entity in ToBeRemovedItems)
{
Config.FluentCommon.DeleteFromDb(parent.Session, entity);
}
foreach (var entity in MyItems)
{
Config.FluentCommon.SaveToDb(parent.Session, entity);
}
/// Update the column widths
Program.LocalSettings.HeatMetersColumnWidths = new int[Columns.Count];
for (int i = 0; i < Columns.Count; i++)
{
Program.LocalSettings.HeatMetersColumnWidths[i] = Columns[i].Width;
}
Program.LocalSettings.Save();
#endif
}
public void AddOne()
{
/// Find an unused test name
string newName;
for (int nameId = 1; true; nameId++)
{
newName = Strings.New_heat_meters_path_name + nameId.ToString();
bool notUsed = true;
foreach (var t in MyItems) if (t.Name.Equals(newName)) notUsed = false;
if (notUsed) break;
}
Config.Entities.HeatMetersPath entity = new Config.Entities.HeatMetersPath(newName, MyItems.Count);
base.AddOne(entity);
}
public new void RemoveSelected()
{
bool lastOneRemoved = base.RemoveSelected();
if (lastOneRemoved && parent != null)
{
parent.UpdateButtonStates(SharedButtons.SelectedItemPos.None);
}
}
}
}