662 lines
24 KiB
C#
662 lines
24 KiB
C#
///
|
|
/// Copyright (c) 2021 Sensus Slovensko a.s.
|
|
///
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Xml.Serialization;
|
|
using Common;
|
|
using Config.Entities;
|
|
using SchematicDrawing;
|
|
using TBF.Rig.Generic;
|
|
using TBF.Resources;
|
|
using TBF.Tools;
|
|
|
|
namespace TBF.Rig.Uni.FlowMeter
|
|
{
|
|
public class FlowMeterCfg : ComponentCfgBase, GenericDevices.ICalibRangesCfg, IChildComponentCfg, IParamsProvider,
|
|
IDrawingItemWithMeasuredVal
|
|
{
|
|
public static XmlSerializer Serializer = XmlSerializer.FromTypes(new[] { typeof(FlowMeterCfg) })[0];
|
|
public override XmlSerializer GetSerializer() { return Serializer; }
|
|
|
|
public IComponentCfgCtrl GetControl(IList<Config.Entities.Component> cmpntEntities)
|
|
{
|
|
var parents = cmpntEntities.Where(x => x.ClassName == "ControlBoard.Uni");
|
|
return new Configs.ParamsProvider.ComponentCfgCtrl(this, parents);
|
|
}
|
|
|
|
///
|
|
/// Serialized parameters
|
|
///
|
|
public int Idx1; /// 0 /// 1..7, (DEWA300 : I1+I2=48, I1+I3=80, I2_I3=96, I1+I2+I3=112)
|
|
public double NominalFlow; /// 1 /// Nominal flow in m3/h at nominal output frequency (typ. 2000 Hz)
|
|
public double NominalFreq; /// 2 /// Nominal frequency in Hz (typ. 2000 Hz)
|
|
public string MsrdFormat { get; set; } /// 3
|
|
public Unit MsrdUnit { get; set; } /// 4
|
|
public Unit TempUnit; /// 5
|
|
public Unit PressureUnit; /// 6
|
|
|
|
public bool Range1Enabled; /// 7
|
|
public double Temp1Lo; /// 8
|
|
public double Temp1Hi; /// 9
|
|
public double Press1Lo; /// 10
|
|
public double Press1Hi; /// 11
|
|
|
|
public bool Range2Enabled; /// 12
|
|
public double Temp2Lo; /// 13
|
|
public double Temp2Hi; /// 14
|
|
public double Press2Lo; /// 15
|
|
public double Press2Hi; /// 16
|
|
|
|
public bool Range3Enabled; /// 17
|
|
public double Temp3Lo; /// 18
|
|
public double Temp3Hi; /// 19
|
|
public double Press3Lo; /// 20
|
|
public double Press3Hi; /// 21
|
|
|
|
public bool Range4Enabled; /// 22
|
|
public double Temp4Lo; /// 23
|
|
public double Temp4Hi; /// 24
|
|
public double Press4Lo; /// 25
|
|
public double Press4Hi; /// 26
|
|
|
|
public bool Range5Enabled; /// 27
|
|
public double Temp5Lo; /// 28
|
|
public double Temp5Hi; /// 29
|
|
public double Press5Lo; /// 30
|
|
public double Press5Hi; /// 31
|
|
|
|
/// Calibration info serialized parameters displayed in Metrology tab page
|
|
public string CalibCertificateNr;
|
|
public string CalibCertificate1;
|
|
public string CalibCertificate2;
|
|
public string CalibCertificate3;
|
|
public string CalibCertificate4;
|
|
public string CalibCertificate5;
|
|
public string CertPath;
|
|
public string CertPath1;
|
|
public string CertPath2;
|
|
public string CertPath3;
|
|
public string CertPath4;
|
|
public string CertPath5;
|
|
public DateTime CalibDate;
|
|
public DateTime CalibDate1;
|
|
public DateTime CalibDate2;
|
|
public DateTime CalibDate3;
|
|
public DateTime CalibDate4;
|
|
public DateTime CalibDate5;
|
|
public DateTime CalibValidDate;
|
|
public DateTime CalibValidDate1;
|
|
public DateTime CalibValidDate2;
|
|
public DateTime CalibValidDate3;
|
|
public DateTime CalibValidDate4;
|
|
public DateTime CalibValidDate5;
|
|
|
|
/// Schematic drawing info
|
|
public Shape Shape { get; set; }
|
|
public int X { get; set; }
|
|
public int Y { get; set; }
|
|
public Sz Sz { get; set; }
|
|
public Orient Orient { get; set; }
|
|
public bool Flip { get; set; }
|
|
public int LblX { get; set; }
|
|
public int LblY { get; set; }
|
|
public Orient LblOrient { get; set; }
|
|
public int MsrdX { get; set; }
|
|
public int MsrdY { get; set; }
|
|
public Orient MsrdOrient { get; set; }
|
|
|
|
[XmlIgnore]
|
|
public IList<GNode> GNodes { get; set; }
|
|
[XmlIgnore]
|
|
public double MsrdValLimLo { get { return msrdValLimLo; } set { msrdValLimLo = value; } } /// in [m3/h]
|
|
[XmlIgnore]
|
|
public double MsrdValLimHi { get { return msrdValLimHi; } set { msrdValLimHi = value; } } /// in [m3/h]
|
|
|
|
double msrdValLimLo = 0; /// in [m3/h]
|
|
double msrdValLimHi; /// in [m3/h]
|
|
|
|
[XmlIgnore]
|
|
public bool IsOffline { get; set; }
|
|
|
|
|
|
public bool RangeEnabled(int rangeIx1)
|
|
{
|
|
switch (rangeIx1)
|
|
{
|
|
default:
|
|
case 0: return !(Range1Enabled || Range2Enabled || Range3Enabled || Range4Enabled || Range5Enabled);
|
|
case 1: return Range1Enabled;
|
|
case 2: return Range2Enabled;
|
|
case 3: return Range3Enabled;
|
|
case 4: return Range4Enabled;
|
|
case 5: return Range5Enabled;
|
|
}
|
|
}
|
|
|
|
public double GetTempLo(int rangeIx1)
|
|
{
|
|
switch (rangeIx1)
|
|
{
|
|
default:
|
|
case 0: return 5.0; /// °C
|
|
case 1: return Temp1Lo;
|
|
case 2: return Temp2Lo;
|
|
case 3: return Temp3Lo;
|
|
case 4: return Temp4Lo;
|
|
case 5: return Temp5Lo;
|
|
}
|
|
}
|
|
|
|
public double GetTempHi(int rangeIx1)
|
|
{
|
|
switch (rangeIx1)
|
|
{
|
|
default:
|
|
case 0: return 95.0; /// °C
|
|
case 1: return Temp1Hi;
|
|
case 2: return Temp2Hi;
|
|
case 3: return Temp3Hi;
|
|
case 4: return Temp4Hi;
|
|
case 5: return Temp5Hi;
|
|
}
|
|
}
|
|
|
|
public double GetPressLo(int rangeIx1)
|
|
{
|
|
switch (rangeIx1)
|
|
{
|
|
default:
|
|
case 0: return 0; /// bar
|
|
case 1: return Press1Lo;
|
|
case 2: return Press2Lo;
|
|
case 3: return Press3Lo;
|
|
case 4: return Press4Lo;
|
|
case 5: return Press5Lo;
|
|
}
|
|
}
|
|
|
|
public double GetPressHi(int rangeIx1)
|
|
{
|
|
switch (rangeIx1)
|
|
{
|
|
default:
|
|
case 0: return 16.0; /// bar
|
|
case 1: return Press1Hi;
|
|
case 2: return Press2Hi;
|
|
case 3: return Press3Hi;
|
|
case 4: return Press4Hi;
|
|
case 5: return Press5Hi;
|
|
}
|
|
}
|
|
|
|
public string GetCalibCertificate(int rangeIx1)
|
|
{
|
|
switch (rangeIx1)
|
|
{
|
|
default:
|
|
case 0: return CalibCertificateNr;
|
|
case 1: return CalibCertificate1;
|
|
case 2: return CalibCertificate2;
|
|
case 3: return CalibCertificate3;
|
|
case 4: return CalibCertificate4;
|
|
case 5: return CalibCertificate5;
|
|
}
|
|
}
|
|
|
|
public void SetCalibCertificate(int rangeIx1, string certificate)
|
|
{
|
|
switch (rangeIx1)
|
|
{
|
|
default:
|
|
case 0: CalibCertificateNr = certificate; return;
|
|
case 1: CalibCertificate1 = certificate; return;
|
|
case 2: CalibCertificate2 = certificate; return;
|
|
case 3: CalibCertificate3 = certificate; return;
|
|
case 4: CalibCertificate4 = certificate; return;
|
|
case 5: CalibCertificate5 = certificate; return;
|
|
}
|
|
}
|
|
|
|
public string GetCertPath(int rangeIx1)
|
|
{
|
|
switch (rangeIx1)
|
|
{
|
|
default:
|
|
case 0: return CertPath;
|
|
case 1: return CertPath1;
|
|
case 2: return CertPath2;
|
|
case 3: return CertPath3;
|
|
case 4: return CertPath4;
|
|
case 5: return CertPath5;
|
|
}
|
|
}
|
|
|
|
public void SetCertPath(int rangeIx1, string certificate)
|
|
{
|
|
switch (rangeIx1)
|
|
{
|
|
default:
|
|
case 0: CertPath = certificate; return;
|
|
case 1: CertPath1 = certificate; return;
|
|
case 2: CertPath2 = certificate; return;
|
|
case 3: CertPath3 = certificate; return;
|
|
case 4: CertPath4 = certificate; return;
|
|
case 5: CertPath5 = certificate; return;
|
|
}
|
|
}
|
|
|
|
public DateTime GetCalibDate(int rangeIx1)
|
|
{
|
|
switch (rangeIx1)
|
|
{
|
|
default:
|
|
case 0: return CalibDate;
|
|
case 1: return CalibDate1;
|
|
case 2: return CalibDate2;
|
|
case 3: return CalibDate3;
|
|
case 4: return CalibDate4;
|
|
case 5: return CalibDate5;
|
|
}
|
|
}
|
|
|
|
public void SetCalibDate(int rangeIx1, DateTime calibDate)
|
|
{
|
|
switch (rangeIx1)
|
|
{
|
|
default:
|
|
case 0: CalibDate = calibDate; return;
|
|
case 1: CalibDate1 = calibDate; return;
|
|
case 2: CalibDate2 = calibDate; return;
|
|
case 3: CalibDate3 = calibDate; return;
|
|
case 4: CalibDate4 = calibDate; return;
|
|
case 5: CalibDate5 = calibDate; return;
|
|
}
|
|
}
|
|
|
|
public DateTime GetCalibValidDate(int rangeIx1)
|
|
{
|
|
switch (rangeIx1)
|
|
{
|
|
default:
|
|
case 0: return CalibValidDate;
|
|
case 1: return CalibValidDate1;
|
|
case 2: return CalibValidDate2;
|
|
case 3: return CalibValidDate3;
|
|
case 4: return CalibValidDate4;
|
|
case 5: return CalibValidDate5;
|
|
}
|
|
}
|
|
|
|
public void SetCalibValidDate(int rangeIx1, DateTime calibValidDate)
|
|
{
|
|
switch (rangeIx1)
|
|
{
|
|
default:
|
|
case 0: CalibValidDate = calibValidDate; return;
|
|
case 1: CalibValidDate1 = calibValidDate; return;
|
|
case 2: CalibValidDate2 = calibValidDate; return;
|
|
case 3: CalibValidDate3 = calibValidDate; return;
|
|
case 4: CalibValidDate4 = calibValidDate; return;
|
|
case 5: CalibValidDate5 = calibValidDate; return;
|
|
}
|
|
}
|
|
|
|
|
|
/// Private parameterless constructor invoked by all other (public) constructors
|
|
FlowMeterCfg()
|
|
{
|
|
GNodes = new List<GNode>();
|
|
}
|
|
|
|
public FlowMeterCfg(IComponentFactory factory, string name)
|
|
: this()
|
|
{
|
|
Shape = Shape.FlowM;
|
|
Sz = Sz.M;
|
|
|
|
Factory = factory;
|
|
Name = name;
|
|
ParentName = "UniCB";
|
|
InitializeAll();
|
|
}
|
|
|
|
public string ComponentName { get { return Name; } }
|
|
|
|
public void InitializeAll()
|
|
{
|
|
Idx1 = 1;
|
|
NominalFlow = 1;
|
|
NominalFreq = 2000;
|
|
|
|
MsrdFormat = "{0:F3} m3/h";
|
|
MsrdUnit = Unit.m3ph;
|
|
MsrdValLimLo = 0;
|
|
MsrdValLimHi = NominalFlow;
|
|
TempUnit = Unit.C;
|
|
PressureUnit = Unit.bar;
|
|
|
|
Range1Enabled = false;
|
|
Temp1Lo = 15;
|
|
Temp1Hi = 25;
|
|
Press1Lo = 0;
|
|
Press1Hi = 16;
|
|
Range2Enabled = false;
|
|
Temp2Lo = 15;
|
|
Temp2Hi = 25;
|
|
Press2Lo = 0;
|
|
Press2Hi = 16;
|
|
Range3Enabled = false;
|
|
Temp3Lo = 15;
|
|
Temp3Hi = 25;
|
|
Press3Lo = 0;
|
|
Press3Hi = 16;
|
|
Range4Enabled = false;
|
|
Temp4Lo = 15;
|
|
Temp4Hi = 25;
|
|
Press4Lo = 0;
|
|
Press4Hi = 16;
|
|
Range5Enabled = false;
|
|
Temp5Lo = 15;
|
|
Temp5Hi = 25;
|
|
Press5Lo = 0;
|
|
Press5Hi = 16;
|
|
|
|
LblX = 38;
|
|
MsrdX = 38;
|
|
MsrdY = 22;
|
|
}
|
|
|
|
string[] paramNames = new string[]
|
|
{
|
|
"Identification number (1 .. 7)", /// 0
|
|
"Nominal flow [m3/h]", /// 1
|
|
"Nominal frequency [Hz]", /// 2
|
|
|
|
"Display format", /// 3
|
|
"Unit of flow on a display", /// 4
|
|
"Unit of temperature", /// 5
|
|
"Unit of pressure", /// 6
|
|
|
|
"Range 1 enabled", /// 7
|
|
"Range 1 : Temperature Lo", /// 8
|
|
"Range 1 : Temperature Hi", /// 9
|
|
"Range 1 : Pressure Lo", /// 10
|
|
"Range 1 : Pressure Hi", /// 11
|
|
|
|
"Range 2 enabled", /// 12
|
|
"Range 2 : Temperature Lo",
|
|
"Range 2 : Temperature Hi",
|
|
"Range 2 : Pressure Lo",
|
|
"Range 2 : Pressure Hi",
|
|
|
|
"Range 3 enabled",
|
|
"Range 3 : Temperature Lo",
|
|
"Range 3 : Temperature Hi",
|
|
"Range 3 : Pressure Lo",
|
|
"Range 3 : Pressure Hi",
|
|
|
|
"Range 4 enabled",
|
|
"Range 4 : Temperature Lo",
|
|
"Range 4 : Temperature Hi",
|
|
"Range 4 : Pressure Lo",
|
|
"Range 4 : Pressure Hi",
|
|
|
|
"Range 5 enabled",
|
|
"Range 5 : Temperature Lo",
|
|
"Range 5 : Temperature Hi",
|
|
"Range 5 : Pressure Lo",
|
|
"Range 5 : Pressure Hi",
|
|
};
|
|
public string ParamName(int i) { return paramNames[i]; }
|
|
public int ParamsCount() { return paramNames.Length; }
|
|
|
|
public ICollection<string> ParamValues(int i)
|
|
{
|
|
switch (i)
|
|
{
|
|
case 0:
|
|
return new string[] { "1", "2", "3", "4", "5", "6", "7" };
|
|
case 4:
|
|
return new string[] { "m3/h", "l/h", "gal/m" };
|
|
case 5:
|
|
return new string[] { "°C", "°F", "K" };
|
|
case 6:
|
|
return new string[] { "Pa", "hPa", "mbar", "kPa", "inHg", "psi", "bar", "MPa" };
|
|
case 7:
|
|
case 12:
|
|
case 17:
|
|
case 22:
|
|
case 27:
|
|
return new string[] { Strings.yes, Strings.no };
|
|
default:
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public string ToString(int i)
|
|
{
|
|
switch (i)
|
|
{
|
|
case 0: return Idx1.ToString();
|
|
case 1: return NominalFlow.ToString();
|
|
case 2: return NominalFreq.ToString();
|
|
case 3: return MsrdFormat;
|
|
case 4: return MsrdUnit.ToDescription();
|
|
case 5: return TempUnit.ToDescription();
|
|
case 6: return PressureUnit.ToDescription();
|
|
|
|
case 7: return Range1Enabled ? Strings.yes : Strings.no;
|
|
case 8: return Temp1Lo.ToString();
|
|
case 9: return Temp1Hi.ToString();
|
|
case 10: return Press1Lo.ToString();
|
|
case 11: return Press1Hi.ToString();
|
|
|
|
case 12: return Range2Enabled ? Strings.yes : Strings.no;
|
|
case 13: return Temp2Lo.ToString();
|
|
case 14: return Temp2Hi.ToString();
|
|
case 15: return Press2Lo.ToString();
|
|
case 16: return Press2Hi.ToString();
|
|
|
|
case 17: return Range3Enabled ? Strings.yes : Strings.no;
|
|
case 18: return Temp3Lo.ToString();
|
|
case 19: return Temp3Hi.ToString();
|
|
case 20: return Press3Lo.ToString();
|
|
case 21: return Press3Hi.ToString();
|
|
|
|
case 22: return Range4Enabled ? Strings.yes : Strings.no;
|
|
case 23: return Temp4Lo.ToString();
|
|
case 24: return Temp4Hi.ToString();
|
|
case 25: return Press4Lo.ToString();
|
|
case 26: return Press4Hi.ToString();
|
|
|
|
case 27: return Range5Enabled ? Strings.yes : Strings.no;
|
|
case 28: return Temp5Lo.ToString();
|
|
case 29: return Temp5Hi.ToString();
|
|
case 30: return Press5Lo.ToString();
|
|
case 31: return Press5Hi.ToString();
|
|
|
|
default:
|
|
return string.Format("{0}({1}) {2}[{3},{4}] Idx1={5}, NominalFlow={6}",
|
|
Name, (string.IsNullOrEmpty(ParentName) ? "-" : ParentName),
|
|
Shape, X, Y, Idx1, NominalFlow);
|
|
}
|
|
}
|
|
|
|
public CfgUpdateFlags UpdateParam(int i, string str)
|
|
{
|
|
switch (i)
|
|
{
|
|
case 0: Idx1 = int.Parse(str); return CfgUpdateFlags.RestartRqrd;
|
|
case 1: NominalFlow = TBF.Utils.ParseUDouble(str); return CfgUpdateFlags.RestartRqrd;
|
|
case 2: NominalFreq = TBF.Utils.ParseUDouble(str); return CfgUpdateFlags.RestartRqrd;
|
|
case 3: MsrdFormat = str; return CfgUpdateFlags.RestartRqrd;
|
|
//case 4: MsrdUnit = (str == "l/h") ? Unit.lph : Unit.m3ph; return CfgUpdateFlags.RestartRqrd;
|
|
case 4: MsrdUnit = ParseFlowUnit(str); return CfgUpdateFlags.RestartRqrd;
|
|
case 5: TempUnit.ToDescription(); return CfgUpdateFlags.RestartRqrd;
|
|
case 6: PressureUnit.ToDescription(); return CfgUpdateFlags.RestartRqrd;
|
|
|
|
case 7: Range1Enabled = (str == Strings.yes); return CfgUpdateFlags.RestartRqrd;
|
|
case 8: Temp1Lo = TBF.Utils.ParseSDouble(str); return CfgUpdateFlags.RestartRqrd;
|
|
case 9: Temp1Hi = TBF.Utils.ParseSDouble(str); return CfgUpdateFlags.RestartRqrd;
|
|
case 10: Press1Lo = TBF.Utils.ParseUDouble(str); return CfgUpdateFlags.RestartRqrd;
|
|
case 11: Press1Hi = TBF.Utils.ParseUDouble(str); return CfgUpdateFlags.RestartRqrd;
|
|
|
|
case 12: Range2Enabled = (str == Strings.yes); return CfgUpdateFlags.RestartRqrd;
|
|
case 13: Temp2Lo = TBF.Utils.ParseSDouble(str); return CfgUpdateFlags.RestartRqrd;
|
|
case 14: Temp2Hi = TBF.Utils.ParseSDouble(str); return CfgUpdateFlags.RestartRqrd;
|
|
case 15: Press2Lo = TBF.Utils.ParseUDouble(str); return CfgUpdateFlags.RestartRqrd;
|
|
case 16: Press2Hi = TBF.Utils.ParseUDouble(str); return CfgUpdateFlags.RestartRqrd;
|
|
|
|
case 17: Range3Enabled = (str == Strings.yes); return CfgUpdateFlags.RestartRqrd;
|
|
case 18: Temp3Lo = TBF.Utils.ParseSDouble(str); return CfgUpdateFlags.RestartRqrd;
|
|
case 19: Temp3Hi = TBF.Utils.ParseSDouble(str); return CfgUpdateFlags.RestartRqrd;
|
|
case 20: Press3Lo = TBF.Utils.ParseUDouble(str); return CfgUpdateFlags.RestartRqrd;
|
|
case 21: Press3Hi = TBF.Utils.ParseUDouble(str); return CfgUpdateFlags.RestartRqrd;
|
|
|
|
case 22: Range4Enabled = (str == Strings.yes); return CfgUpdateFlags.RestartRqrd;
|
|
case 23: Temp4Lo = TBF.Utils.ParseSDouble(str); return CfgUpdateFlags.RestartRqrd;
|
|
case 24: Temp4Hi = TBF.Utils.ParseSDouble(str); return CfgUpdateFlags.RestartRqrd;
|
|
case 25: Press4Lo = TBF.Utils.ParseUDouble(str); return CfgUpdateFlags.RestartRqrd;
|
|
case 26: Press4Hi = TBF.Utils.ParseUDouble(str); return CfgUpdateFlags.RestartRqrd;
|
|
|
|
case 27: Range5Enabled = (str == Strings.yes); return CfgUpdateFlags.RestartRqrd;
|
|
case 28: Temp5Lo = TBF.Utils.ParseSDouble(str); return CfgUpdateFlags.RestartRqrd;
|
|
case 29: Temp5Hi = TBF.Utils.ParseSDouble(str); return CfgUpdateFlags.RestartRqrd;
|
|
case 30: Press5Lo = TBF.Utils.ParseUDouble(str); return CfgUpdateFlags.RestartRqrd;
|
|
case 31: Press5Hi = TBF.Utils.ParseUDouble(str); return CfgUpdateFlags.RestartRqrd;
|
|
|
|
default: return CfgUpdateFlags.None;
|
|
}
|
|
}
|
|
|
|
public bool ValidateParam(int i, string str, out string message)
|
|
{
|
|
message = string.Empty;
|
|
int idummy;
|
|
double dummy;
|
|
|
|
switch (i)
|
|
{
|
|
case 0:
|
|
if (int.TryParse(str, out idummy) && idummy >= 1 && idummy <= 7) return true;
|
|
break;
|
|
case 1:
|
|
case 2:
|
|
case 10:
|
|
case 11:
|
|
case 15:
|
|
case 16:
|
|
case 20:
|
|
case 21:
|
|
case 25:
|
|
case 26:
|
|
case 30:
|
|
case 31:
|
|
if (TBF.Utils.TryParseUDouble(str, out dummy)) return true;
|
|
break;
|
|
case 8:
|
|
case 9:
|
|
case 13:
|
|
case 14:
|
|
case 18:
|
|
case 19:
|
|
case 23:
|
|
case 24:
|
|
case 28:
|
|
case 29:
|
|
if (TBF.Utils.TryParseSDouble(str, out dummy)) return true;
|
|
break;
|
|
case 3:
|
|
return true;
|
|
case 4:
|
|
case 5:
|
|
case 6:
|
|
case 7:
|
|
case 12:
|
|
case 17:
|
|
case 22:
|
|
case 27:
|
|
if (ParamValues(i).Contains(str)) return true;
|
|
break;
|
|
default:
|
|
message = "Invalid index";
|
|
return false;
|
|
}
|
|
|
|
message = ParamName(i) + " is invalid";
|
|
return false;
|
|
}
|
|
|
|
void CopyContentTo(FlowMeterCfg prms)
|
|
{
|
|
prms.ParentName = ParentName;
|
|
|
|
prms.Idx1 = Idx1;
|
|
prms.NominalFlow = NominalFlow;
|
|
prms.NominalFreq = NominalFreq;
|
|
prms.MsrdFormat = MsrdFormat;
|
|
prms.MsrdUnit = MsrdUnit;
|
|
prms.TempUnit = TempUnit;
|
|
prms.PressureUnit = PressureUnit;
|
|
|
|
prms.Range1Enabled = Range1Enabled;
|
|
prms.Temp1Lo = Temp1Lo;
|
|
prms.Temp1Hi = Temp1Hi;
|
|
prms.Press1Lo = Press1Lo;
|
|
prms.Press1Hi = Press1Hi;
|
|
|
|
prms.Range2Enabled = Range2Enabled;
|
|
prms.Temp2Lo = Temp2Lo;
|
|
prms.Temp2Hi = Temp2Hi;
|
|
prms.Press2Lo = Press2Lo;
|
|
prms.Press2Hi = Press2Hi;
|
|
|
|
prms.Range3Enabled = Range3Enabled;
|
|
prms.Temp3Lo = Temp3Lo;
|
|
prms.Temp3Hi = Temp3Hi;
|
|
prms.Press3Lo = Press3Lo;
|
|
prms.Press3Hi = Press3Hi;
|
|
|
|
prms.Range4Enabled = Range4Enabled;
|
|
prms.Temp4Lo = Temp4Lo;
|
|
prms.Temp4Hi = Temp4Hi;
|
|
prms.Press4Lo = Press4Lo;
|
|
prms.Press4Hi = Press4Hi;
|
|
|
|
prms.Range5Enabled = Range5Enabled;
|
|
prms.Temp5Lo = Temp5Lo;
|
|
prms.Temp5Hi = Temp5Hi;
|
|
prms.Press5Lo = Press5Lo;
|
|
prms.Press5Hi = Press5Hi;
|
|
}
|
|
|
|
public IParamsProvider Clone()
|
|
{
|
|
FlowMeterCfg pars = new FlowMeterCfg();
|
|
CopyContentTo(pars);
|
|
return pars;
|
|
}
|
|
|
|
public bool UpdateEmbeddedDbEntity()
|
|
{
|
|
return true; /// =OK, do nothing
|
|
}
|
|
public static Unit ParseFlowUnit(string str)
|
|
{
|
|
//Check if the string is a valid unit description
|
|
Unit fromDescription = Units.FromDescription(str);
|
|
if (fromDescription != Unit.None) return fromDescription;
|
|
//check if the string is a valid unit name
|
|
switch (str)
|
|
{
|
|
case "l/h": return Unit.lph;
|
|
case "gal/m": return Unit.USgalpm;
|
|
case "m3/h":
|
|
default: return Unit.m3ph;
|
|
}
|
|
}
|
|
}
|
|
}
|