MettlerToledo.Standard.BalanceDev/Old/NewDev clean-up, units (oz), 1st after draining, etc.

This commit is contained in:
Milan Hanajik 2021-02-15 11:02:28 +01:00
parent a33e4de467
commit fea9b01922
8 changed files with 211 additions and 149 deletions

View File

@ -1,5 +1,5 @@
///
/// Copyright (c) 2016-2020 Sensus Slovensko a.s.
/// Copyright (c) 2016-2021 Sensus Slovensko a.s.
///
using System;
using System.Reflection;
@ -34,6 +34,7 @@ namespace Config
[Description("cf/s")] cfs, /// 1 cubic foot per second = 101.9406477312 m3/h
[Description("g")] g, /// 0.001 kg
[Description("oz")] oz, /// 0.0283495231 kg
[Description("lb")] lb, /// 0.45359237 kg
[Description("kg")] kg, /// * 1 kilogram
[Description("t")] t, /// 1000 kg
@ -276,6 +277,7 @@ namespace Config
return Quantity.Flow;
case Unit.g:
case Unit.oz:
case Unit.lb:
case Unit.kg:
case Unit.t:
@ -391,6 +393,7 @@ namespace Config
/// Mass: internal representation in kg
case Unit.g: return 1000 * v; /// 1 g = 0.001 kg
case Unit.oz: return 35.273962 * v; /// 1 oz = 0.0283495231 kg
case Unit.lb: return 2.2046226 * v; /// 1 lb = 0.45359237 kg
case Unit.t: return 0.001 * v; /// 1 t = 1000 kg
@ -468,6 +471,7 @@ namespace Config
/// Mass: internal representation in kg
case Unit.g: return 0.001 * v; /// 1 g = 0.001 kg
case Unit.oz: return 0.0283495231 * v; /// 1 oz = 0.0283495231 kg
case Unit.lb: return 0.45359237 * v; /// 1 lb = 0.45359237 kg
case Unit.t: return 1000 * v; /// 1 t = 1000 kg

View File

@ -1,5 +1,5 @@
///
/// Copyright (c) 2013-2020 Sensus Slovensko a.s.
/// Copyright (c) 2013-2021 Sensus Slovensko a.s.
///
using System;
using System.IO;
@ -11,6 +11,14 @@ using TBF.BenchControl.Generic;
namespace TBF.BenchControl.MettlerToledo.Standard
{
public enum ActionA1D
{
Zero,
Tara,
None,
Count
}
public class BalanceCfg : ComponentCfgBase, GenericDevices.IScaleCfg, GenericDevices.ITankDrainingCfg, IDrawingItemWithMeasuredVal
{
public static XmlSerializer Serializer = XmlSerializer.FromTypes(new[] { typeof(BalanceCfg) })[0];
@ -28,12 +36,13 @@ namespace TBF.BenchControl.MettlerToledo.Standard
public StopBits StopBits;
public Handshake Handshake;
public float Capacity { get; set; } /// Max. water mass in 'kg' or volume in 'l'
public float Empty { get; set; } /// Mass threshold for 'Tank is empty' in 'kg' (or volume in 'l')
public float EmptyUp { get; set; } /// Mass threshold for 'Tank is empty' in 'kg' (or volume in 'l') when the drain valve is not open
public float Capacity { get; set; } /// Max. water mass in 'kg' or volume in 'l'
public float Empty { get; set; } /// Mass threshold for 'Tank is empty' in 'kg' (or volume in 'l')
public float EmptyUp { get; set; } /// Mass threshold for 'Tank is empty' in 'kg' (or volume in 'l') when the drain valve is not open
public string Evaporation { get; set; }
public string DrainValve { get; set; }
public int DrainTimeSec { get; set; }
public string Evaporation { get; set; }
public ActionA1D ActionAfter1stDraining { get; set; }
/// Buoyancy related serialized parameters displayed in Metrology tab page
public float BuoyancyTemp { get; set; }

View File

@ -66,13 +66,15 @@ namespace TBF.BenchControl.MettlerToledo.Standard
this.unitsLabel = new System.Windows.Forms.Label();
this.formatTextBox = new System.Windows.Forms.TextBox();
this.formatLabel = new System.Windows.Forms.Label();
this.afterFirstDrainingComboBox = new System.Windows.Forms.ComboBox();
this.afterFirstDrainingLabel = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// handshakeComboBox
//
this.handshakeComboBox.Enabled = false;
this.handshakeComboBox.FormattingEnabled = true;
this.handshakeComboBox.Location = new System.Drawing.Point(236, 252);
this.handshakeComboBox.Location = new System.Drawing.Point(236, 254);
this.handshakeComboBox.Name = "handshakeComboBox";
this.handshakeComboBox.Size = new System.Drawing.Size(43, 21);
this.handshakeComboBox.TabIndex = 31;
@ -81,7 +83,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
//
this.stopBitsComboBox.Enabled = false;
this.stopBitsComboBox.FormattingEnabled = true;
this.stopBitsComboBox.Location = new System.Drawing.Point(236, 229);
this.stopBitsComboBox.Location = new System.Drawing.Point(236, 231);
this.stopBitsComboBox.Name = "stopBitsComboBox";
this.stopBitsComboBox.Size = new System.Drawing.Size(43, 21);
this.stopBitsComboBox.TabIndex = 29;
@ -90,7 +92,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
//
this.parityComboBox.Enabled = false;
this.parityComboBox.FormattingEnabled = true;
this.parityComboBox.Location = new System.Drawing.Point(100, 252);
this.parityComboBox.Location = new System.Drawing.Point(100, 254);
this.parityComboBox.Name = "parityComboBox";
this.parityComboBox.Size = new System.Drawing.Size(43, 21);
this.parityComboBox.TabIndex = 25;
@ -124,7 +126,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
// handshakeLabel
//
this.handshakeLabel.AutoSize = true;
this.handshakeLabel.Location = new System.Drawing.Point(162, 255);
this.handshakeLabel.Location = new System.Drawing.Point(162, 257);
this.handshakeLabel.Name = "handshakeLabel";
this.handshakeLabel.Size = new System.Drawing.Size(62, 13);
this.handshakeLabel.TabIndex = 30;
@ -133,7 +135,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
// stopBitsLabel
//
this.stopBitsLabel.AutoSize = true;
this.stopBitsLabel.Location = new System.Drawing.Point(162, 232);
this.stopBitsLabel.Location = new System.Drawing.Point(162, 234);
this.stopBitsLabel.Name = "stopBitsLabel";
this.stopBitsLabel.Size = new System.Drawing.Size(49, 13);
this.stopBitsLabel.TabIndex = 28;
@ -142,7 +144,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
// dataBitsTextBox
//
this.dataBitsTextBox.Enabled = false;
this.dataBitsTextBox.Location = new System.Drawing.Point(236, 206);
this.dataBitsTextBox.Location = new System.Drawing.Point(236, 208);
this.dataBitsTextBox.Name = "dataBitsTextBox";
this.dataBitsTextBox.Size = new System.Drawing.Size(43, 20);
this.dataBitsTextBox.TabIndex = 27;
@ -150,7 +152,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
// dataBitsLabel
//
this.dataBitsLabel.AutoSize = true;
this.dataBitsLabel.Location = new System.Drawing.Point(162, 209);
this.dataBitsLabel.Location = new System.Drawing.Point(162, 211);
this.dataBitsLabel.Name = "dataBitsLabel";
this.dataBitsLabel.Size = new System.Drawing.Size(50, 13);
this.dataBitsLabel.TabIndex = 26;
@ -159,7 +161,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
// partityLabel
//
this.partityLabel.AutoSize = true;
this.partityLabel.Location = new System.Drawing.Point(26, 255);
this.partityLabel.Location = new System.Drawing.Point(26, 257);
this.partityLabel.Name = "partityLabel";
this.partityLabel.Size = new System.Drawing.Size(33, 13);
this.partityLabel.TabIndex = 24;
@ -168,7 +170,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
// baudRateTextBox
//
this.baudRateTextBox.Enabled = false;
this.baudRateTextBox.Location = new System.Drawing.Point(100, 229);
this.baudRateTextBox.Location = new System.Drawing.Point(100, 231);
this.baudRateTextBox.Name = "baudRateTextBox";
this.baudRateTextBox.Size = new System.Drawing.Size(43, 20);
this.baudRateTextBox.TabIndex = 23;
@ -176,7 +178,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
// baudRateLabel
//
this.baudRateLabel.AutoSize = true;
this.baudRateLabel.Location = new System.Drawing.Point(26, 232);
this.baudRateLabel.Location = new System.Drawing.Point(26, 234);
this.baudRateLabel.Name = "baudRateLabel";
this.baudRateLabel.Size = new System.Drawing.Size(53, 13);
this.baudRateLabel.TabIndex = 22;
@ -185,7 +187,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
// comPortNrTextBox
//
this.comPortNrTextBox.Enabled = false;
this.comPortNrTextBox.Location = new System.Drawing.Point(100, 206);
this.comPortNrTextBox.Location = new System.Drawing.Point(100, 208);
this.comPortNrTextBox.Name = "comPortNrTextBox";
this.comPortNrTextBox.Size = new System.Drawing.Size(43, 20);
this.comPortNrTextBox.TabIndex = 21;
@ -193,7 +195,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(26, 209);
this.label1.Location = new System.Drawing.Point(26, 211);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(67, 13);
this.label1.TabIndex = 20;
@ -202,7 +204,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
// capacityLabel
//
this.capacityLabel.AutoSize = true;
this.capacityLabel.Location = new System.Drawing.Point(26, 76);
this.capacityLabel.Location = new System.Drawing.Point(26, 63);
this.capacityLabel.Name = "capacityLabel";
this.capacityLabel.Size = new System.Drawing.Size(75, 13);
this.capacityLabel.TabIndex = 5;
@ -211,7 +213,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
// capacityTextBox
//
this.capacityTextBox.Enabled = false;
this.capacityTextBox.Location = new System.Drawing.Point(137, 73);
this.capacityTextBox.Location = new System.Drawing.Point(137, 60);
this.capacityTextBox.Name = "capacityTextBox";
this.capacityTextBox.Size = new System.Drawing.Size(43, 20);
this.capacityTextBox.TabIndex = 6;
@ -219,7 +221,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(186, 76);
this.label2.Location = new System.Drawing.Point(186, 63);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(19, 13);
this.label2.TabIndex = 7;
@ -228,7 +230,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(186, 99);
this.label3.Location = new System.Drawing.Point(186, 86);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(19, 13);
this.label3.TabIndex = 10;
@ -237,7 +239,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
// emptyTextBox
//
this.emptyTextBox.Enabled = false;
this.emptyTextBox.Location = new System.Drawing.Point(137, 96);
this.emptyTextBox.Location = new System.Drawing.Point(137, 83);
this.emptyTextBox.Name = "emptyTextBox";
this.emptyTextBox.Size = new System.Drawing.Size(43, 20);
this.emptyTextBox.TabIndex = 9;
@ -245,7 +247,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
// emptyLabel
//
this.emptyLabel.AutoSize = true;
this.emptyLabel.Location = new System.Drawing.Point(26, 99);
this.emptyLabel.Location = new System.Drawing.Point(26, 86);
this.emptyLabel.Name = "emptyLabel";
this.emptyLabel.Size = new System.Drawing.Size(109, 13);
this.emptyLabel.TabIndex = 8;
@ -254,7 +256,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(186, 170);
this.label4.Location = new System.Drawing.Point(186, 157);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(24, 13);
this.label4.TabIndex = 19;
@ -263,7 +265,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
// drainTimeTextBox
//
this.drainTimeTextBox.Enabled = false;
this.drainTimeTextBox.Location = new System.Drawing.Point(137, 167);
this.drainTimeTextBox.Location = new System.Drawing.Point(137, 154);
this.drainTimeTextBox.Name = "drainTimeTextBox";
this.drainTimeTextBox.Size = new System.Drawing.Size(43, 20);
this.drainTimeTextBox.TabIndex = 18;
@ -271,7 +273,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(26, 170);
this.label5.Location = new System.Drawing.Point(26, 157);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(54, 13);
this.label5.TabIndex = 17;
@ -281,7 +283,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
//
this.drainValveComboBox.Enabled = false;
this.drainValveComboBox.FormattingEnabled = true;
this.drainValveComboBox.Location = new System.Drawing.Point(137, 143);
this.drainValveComboBox.Location = new System.Drawing.Point(137, 130);
this.drainValveComboBox.Name = "drainValveComboBox";
this.drainValveComboBox.Size = new System.Drawing.Size(143, 21);
this.drainValveComboBox.TabIndex = 16;
@ -289,7 +291,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
// drainingValveLabel
//
this.drainingValveLabel.AutoSize = true;
this.drainingValveLabel.Location = new System.Drawing.Point(26, 146);
this.drainingValveLabel.Location = new System.Drawing.Point(26, 133);
this.drainingValveLabel.Name = "drainingValveLabel";
this.drainingValveLabel.Size = new System.Drawing.Size(61, 13);
this.drainingValveLabel.TabIndex = 15;
@ -298,7 +300,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(285, 99);
this.label6.Location = new System.Drawing.Point(285, 86);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(19, 13);
this.label6.TabIndex = 12;
@ -307,7 +309,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
// emptyUpTextBox
//
this.emptyUpTextBox.Enabled = false;
this.emptyUpTextBox.Location = new System.Drawing.Point(236, 96);
this.emptyUpTextBox.Location = new System.Drawing.Point(236, 83);
this.emptyUpTextBox.Name = "emptyUpTextBox";
this.emptyUpTextBox.Size = new System.Drawing.Size(43, 20);
this.emptyUpTextBox.TabIndex = 11;
@ -315,7 +317,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
// label7
//
this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(225, 81);
this.label7.Location = new System.Drawing.Point(225, 68);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(83, 13);
this.label7.TabIndex = 30;
@ -325,7 +327,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
//
this.evaporationComboBox.Enabled = false;
this.evaporationComboBox.FormattingEnabled = true;
this.evaporationComboBox.Location = new System.Drawing.Point(137, 119);
this.evaporationComboBox.Location = new System.Drawing.Point(137, 106);
this.evaporationComboBox.Name = "evaporationComboBox";
this.evaporationComboBox.Size = new System.Drawing.Size(143, 21);
this.evaporationComboBox.TabIndex = 14;
@ -333,7 +335,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
// evaporationLabel
//
this.evaporationLabel.AutoSize = true;
this.evaporationLabel.Location = new System.Drawing.Point(26, 122);
this.evaporationLabel.Location = new System.Drawing.Point(26, 109);
this.evaporationLabel.Name = "evaporationLabel";
this.evaporationLabel.Size = new System.Drawing.Size(64, 13);
this.evaporationLabel.TabIndex = 13;
@ -374,10 +376,30 @@ namespace TBF.BenchControl.MettlerToledo.Standard
this.formatLabel.TabIndex = 32;
this.formatLabel.Text = "Output format";
//
// afterFirstDrainingComboBox
//
this.afterFirstDrainingComboBox.Enabled = false;
this.afterFirstDrainingComboBox.FormattingEnabled = true;
this.afterFirstDrainingComboBox.Location = new System.Drawing.Point(137, 177);
this.afterFirstDrainingComboBox.Name = "afterFirstDrainingComboBox";
this.afterFirstDrainingComboBox.Size = new System.Drawing.Size(143, 21);
this.afterFirstDrainingComboBox.TabIndex = 37;
//
// afterFirstDrainingLabel
//
this.afterFirstDrainingLabel.AutoSize = true;
this.afterFirstDrainingLabel.Location = new System.Drawing.Point(26, 180);
this.afterFirstDrainingLabel.Name = "afterFirstDrainingLabel";
this.afterFirstDrainingLabel.Size = new System.Drawing.Size(86, 13);
this.afterFirstDrainingLabel.TabIndex = 36;
this.afterFirstDrainingLabel.Text = "After 1st draining";
//
// BalanceCfgCtrl
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.afterFirstDrainingComboBox);
this.Controls.Add(this.afterFirstDrainingLabel);
this.Controls.Add(this.unitsComboBox);
this.Controls.Add(this.unitsLabel);
this.Controls.Add(this.formatTextBox);
@ -458,5 +480,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
private System.Windows.Forms.Label unitsLabel;
private System.Windows.Forms.TextBox formatTextBox;
private System.Windows.Forms.Label formatLabel;
private System.Windows.Forms.ComboBox afterFirstDrainingComboBox;
private System.Windows.Forms.Label afterFirstDrainingLabel;
}
}

View File

@ -1,5 +1,5 @@
///
/// Copyright (c) 2013-2019 Sensus Slovensko a.s.
/// Copyright (c) 2013-2021 Sensus Slovensko a.s.
///
using System;
using System.Windows.Forms;
@ -80,6 +80,11 @@ namespace TBF.BenchControl.MettlerToledo.Standard
{
InitializeComponent();
for (ActionA1D a = 0; a < ActionA1D.Count; a++)
{
afterFirstDrainingComboBox.Items.Add(a.ToString());
}
parityComboBox.Items.Add(Parity.None.ToString());
parityComboBox.Items.Add(Parity.Even.ToString());
parityComboBox.Items.Add(Parity.Odd.ToString());
@ -143,6 +148,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
evaporationComboBox.Text = string.IsNullOrEmpty(config.Evaporation) ? "---" : config.Evaporation;
drainValveComboBox.Text = string.IsNullOrEmpty(config.DrainValve) ? "---" : config.DrainValve;
drainTimeTextBox.Text = config.DrainTimeSec.ToString();
afterFirstDrainingComboBox.Text = config.ActionAfter1stDraining.ToString();
comPortNrTextBox.Text = config.ComPortNr.ToString();
baudRateTextBox.Text = config.BaudRate.ToString();
@ -165,6 +171,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
evaporationComboBox.Enabled = true;
drainValveComboBox.Enabled = true;
drainTimeTextBox.Enabled = true;
afterFirstDrainingComboBox.Enabled = true;
comPortNrTextBox.Enabled = true;
baudRateTextBox.Enabled = true;
@ -228,6 +235,11 @@ namespace TBF.BenchControl.MettlerToledo.Standard
flags |= CfgUpdateFlags.Error;
message += Environment.NewLine + "'Tank drain time' should be between 1 and 999 sec";
}
if (!afterFirstDrainingComboBox.Items.Contains(afterFirstDrainingComboBox.Text))
{
flags |= CfgUpdateFlags.Error;
message += Environment.NewLine + "Invalid 'Avter 1st draining'";
}
if (!unitsComboBox.Items.Contains(unitsComboBox.Text))
{
flags |= CfgUpdateFlags.Error;
@ -250,6 +262,14 @@ namespace TBF.BenchControl.MettlerToledo.Standard
config.Evaporation = evaporationComboBox.Text.Equals("---") ? string.Empty : evaporationComboBox.Text;
config.DrainTimeSec = int.Parse(drainTimeTextBox.Text);
config.DrainValve = drainValveComboBox.Text.Equals("---") ? string.Empty : drainValveComboBox.Text;
for (ActionA1D a = 0; a < ActionA1D.Count; a++)
{
if (afterFirstDrainingComboBox.Text == a.ToString())
{
config.ActionAfter1stDraining = a;
break;
}
}
config.ComPortNr = int.Parse(comPortNrTextBox.Text);
config.BaudRate = int.Parse(baudRateTextBox.Text);

View File

@ -1,5 +1,5 @@
///
/// Copyright (c) 2013-2018 Sensus Slovensko a.s.
/// Copyright (c) 2013-2021 Sensus Slovensko a.s.
///
using System;
using System.Collections.Generic;
@ -265,21 +265,11 @@ namespace TBF.BenchControl.MettlerToledo.Standard
serialPort.Write("SI\r\n");
}
/// <summary>Units for SetUnits() argument</summary>
public enum Units
{
g,
kg,
t,
lb,
oz
}
/// <summary>
/// Get the serial number
/// </summary>
/// <remarks>After a successful SetUnits(kg) mass is still sent in g. MH 15.10.2013</remarks>
public void SendSetUnitsCmd(Units unit)
public void SendSetUnitsCmd(Config.Unit unit)
{
if (balanceCfg.DebugLevel == DebugMode.Simulate) return;
@ -293,27 +283,28 @@ namespace TBF.BenchControl.MettlerToledo.Standard
stringBuilder.Clear();
switch (unit)
{
case Units.g:
case Config.Unit.g:
log.InfoFormat("{0} - SetUnits({1}) - \"U g\\r\\n\"", Name, unit);
serialPort.Write("U g\r\n");
break;
case Units.kg:
log.InfoFormat("{0} - SetUnits({1}) - \"U kg\\r\\n\"", Name, unit);
serialPort.Write("U kg\r\n");
break;
case Units.t:
case Config.Unit.t:
log.InfoFormat("{0} - SetUnits({1}) - \"U t\\r\\n\"", Name, unit);
serialPort.Write("U t\r\n");
break;
case Units.lb:
case Config.Unit.lb:
log.InfoFormat("{0} - SetUnits({1}) - \"U lb\\r\\n\"", Name, unit);
serialPort.Write("U lb\r\n");
break;
case Units.oz:
case Config.Unit.oz:
log.InfoFormat("{0} - SetUnits({1}) - \"U oz\\r\\n\"", Name, unit);
serialPort.Write("U oz\r\n");
break;
}
case Config.Unit.kg:
default:
log.InfoFormat("{0} - SetUnits({1}) - \"U kg\\r\\n\"", Name, unit);
serialPort.Write("U kg\r\n");
break;
}
}
/// <summary>
@ -376,9 +367,9 @@ namespace TBF.BenchControl.MettlerToledo.Standard
received = tmp;
}
string[] fields = received.Split(new char[] { ' ' });
string[] field = received.Split(new char[] { ' ' });
if (fields.Length == 1 && fields[0].Equals("ZA")) /// Zero when stable
if (field.Length == 1 && field[0] == "ZA") /// Zero when stable
{
mass = 0;
Masses[balanceNr] = mass;
@ -386,16 +377,16 @@ namespace TBF.BenchControl.MettlerToledo.Standard
log.InfoFormat("{0} - Balance response = \"{1}<cr><lf>\"", Name, received);
return;
}
else if (fields.Length < 2)
else if (field.Length < 2)
{
msrmntState = MsrmntState.Failed;
log.WarnFormat("{0} - Balance response = \"{1}<cr><lf>\", Unexpected error !!!", Name, received);
return;
}
if (fields[0].Equals("Z")) /// Zero when stable
if (field[0] == "Z") /// Zero when stable
{
if (fields.Length == 2 && fields[1].Equals("A"))
if (field.Length == 2 && field[1] == "A")
{
mass = 0;
Masses[balanceNr] = mass;
@ -409,33 +400,31 @@ namespace TBF.BenchControl.MettlerToledo.Standard
log.WarnFormat("{0} - Balance response = \"{1}<cr><lf>\", error !!!", Name, received);
}
}
else if (fields[0].Equals("S")) /// Stable mass: field[1] = <mass> field[2] = "kg"
else if (field[0] == "S") /// Stable mass: field[1] = <mass> field[2] = "kg"
{
if (fields.Length == 3 &&
double.TryParse(fields[1],
if (field.Length == 3 &&
double.TryParse(field[1],
NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign,
CultureInfo.InvariantCulture,
out mass))
{
if (fields[2].Equals("g")) mass /= 1000.0f;
if (fields[2].Equals("t")) mass *= 1000.0f;
mass = Config.Units.ConvertFrom(ParseUnit(field[2]), mass);
Masses[balanceNr] = mass;
msrmntState = MsrmntState.Valid;
log.InfoFormat("{0} - Balance response = \"{1}<cr><lf>\", Mass = {2}", Name, received, mass);
}
else if (fields.Length == 4 && (fields[1].Equals("S") || fields[1].Equals("D")) &&
double.TryParse(fields[2],
else if (field.Length == 4 && (field[1] == "S" || field[1] == "D") &&
double.TryParse(field[2],
NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign,
CultureInfo.InvariantCulture,
out mass))
{
if (fields[3].Equals("g")) mass /= 1000.0f;
if (fields[3].Equals("t")) mass *= 1000.0f;
mass = Config.Units.ConvertFrom(ParseUnit(field[3]), mass);
Masses[balanceNr] = mass;
msrmntState = MsrmntState.Valid;
log.InfoFormat("{0} - Balance response = \"{1}<cr><lf>\", Mass = {2}", Name, received, mass);
}
else if (fields.Length == 2 && fields[1].Equals("-"))
else if (field.Length == 2 && field[1] == "-")
{
mass = 0;
Masses[balanceNr] = mass;
@ -446,25 +435,24 @@ namespace TBF.BenchControl.MettlerToledo.Standard
{
msrmntState = MsrmntState.Failed;
log.WarnFormat("{0} Balance response = \"{1}<cr><lf>\", Overload or and unexpected error !!!", Name, received);
bool b = double.TryParse(fields[1], NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out mass);
bool b = double.TryParse(field[1], NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out mass);
}
}
else if (fields[0].Equals("SD")) /// Dynamic mass: field[1] = <mass> field[2] = "kg"
else if (field[0] == "SD") /// Dynamic mass: field[1] = <mass> field[2] = "kg"
{
if (fields.Length >= 3 &&
double.TryParse(fields[1],
if (field.Length >= 3 &&
double.TryParse(field[1],
NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign,
CultureInfo.InvariantCulture,
out mass))
{
if (fields[2].Equals("g")) mass /= 1000.0f;
if (fields[2].Equals("t")) mass *= 1000.0f;
mass = Config.Units.ConvertFrom(ParseUnit(field[2]), mass);
Masses[balanceNr] = mass;
msrmntState = MsrmntState.Valid;
log.InfoFormat("{0} - Balance response = \"{1}<cr><lf>\", Mass = {2}", Name, received, mass);
}
else if (fields.Length == 2 && fields[1].Equals("-"))
else if (field.Length == 2 && field[1] == "-")
{
mass = 0;
Masses[balanceNr] = mass;
@ -475,21 +463,20 @@ namespace TBF.BenchControl.MettlerToledo.Standard
{
msrmntState = MsrmntState.Failed;
log.WarnFormat("{0} - Balance response = \"{1}<cr><lf>\", Overload or and unexpected error !!!", Name, received);
bool b = double.TryParse(fields[1], NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out mass);
bool b = double.TryParse(field[1], NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out mass);
}
}
else if (fields[0].Equals("TB")) /// Taring
else if (field[0] == "TB") /// Taring
{
if (fields.Length >= 3 &&
double.TryParse(fields[1],
if (field.Length >= 3 &&
double.TryParse(field[1],
NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign,
CultureInfo.InvariantCulture,
out mass))
{
if (fields[2].Equals("g")) mass /= 1000.0f;
if (fields[2].Equals("t")) mass *= 1000.0f;
msrmntState = MsrmntState.Valid;
mass = Config.Units.ConvertFrom(ParseUnit(field[2]), mass);
msrmntState = MsrmntState.Valid;
log.InfoFormat("{0} - Balance response = \"{1}<cr><lf>\", Tara = {2}", Name, received, mass);
}
else
@ -498,16 +485,15 @@ namespace TBF.BenchControl.MettlerToledo.Standard
log.WarnFormat("{0} - Balance response = \"{1}<cr><lf>\", Overload or and unexpected error !!!", Name, received);
}
}
else if (fields[0].Equals("T")) /// Taring
else if (field[0] == "T") /// Taring
{
if (fields.Length >= 4 && fields[1].Equals("S") &&
double.TryParse(fields[2],
if (field.Length >= 4 && field[1] == "S" &&
double.TryParse(field[2],
NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign,
CultureInfo.InvariantCulture,
out mass))
{
if (fields[3].Equals("g")) mass /= 1000.0f;
if (fields[3].Equals("t")) mass *= 1000.0f;
mass = Config.Units.ConvertFrom(ParseUnit(field[3]), mass);
msrmntState = MsrmntState.Valid;
log.InfoFormat("{0} - Balance response = \"{1}<cr><lf>\", Tara = {2}", Name, received, mass);
}
@ -554,7 +540,16 @@ namespace TBF.BenchControl.MettlerToledo.Standard
/// <returns>ZeroOp reference</returns>
public IOperation ZeroOp()
{
return new ZeroOp(this);
switch (balanceCfg.ActionAfter1stDraining)
{
case ActionA1D.Zero:
return new ZeroOp(this);
case ActionA1D.Tara:
DoubleBox dummy = new DoubleBox();
return new TaringOp(this, ref dummy);
default:
return null;
}
}
/// <summary>
@ -599,5 +594,20 @@ namespace TBF.BenchControl.MettlerToledo.Standard
{
return null;
}
/// <summary>
/// Parse a string representing mass units.
/// Defaults to 'kg'in case unitStr not recognized.
/// </summary>
/// <param name="unitStr">String: "kg", "g", "t", "lb" or "oz" expected</param>
/// <returns></returns>
protected Config.Unit ParseUnit(string unitStr)
{
if (unitStr == "g") return Config.Unit.g;
if (unitStr == "t") return Config.Unit.t;
if (unitStr == "lb") return Config.Unit.lb;
if (unitStr == "oz") return Config.Unit.oz;
return Config.Unit.kg;
}
}
}

View File

@ -1,5 +1,5 @@
///
/// Copyright (c) 2013-2020 Sensus Slovensko a.s.
/// Copyright (c) 2013-2021 Sensus Slovensko a.s.
///
using System;
using System.Globalization;
@ -110,8 +110,8 @@ namespace TBF.BenchControl.MettlerToledo.Standard
received = tmp;
}
string[] fields = received.Substring(0, received.Length - 2).Split(new char[] { ' ' });
if (fields.Length < 2)
string[] field = received.Substring(0, received.Length - 2).Split(new char[] { ' ' });
if (field.Length < 2)
{
msrmntState = MsrmntState.Failed;
log.WarnFormat("{0} - Balance response = {1}, Unexpected error !!!", Name,
@ -119,11 +119,11 @@ namespace TBF.BenchControl.MettlerToledo.Standard
return;
}
if (fields[0].Equals("I4")) /// Serial number
if (field[0] == "I4" || field[0] == "IA") /// Serial number
{
if (fields.Length == 3 && fields[1].Equals("A") && fields[2].Length >= 3)
if (field.Length == 3 && field[1] == "A" && field[2].Length >= 3)
{
serialNumber = fields[2].Substring(1, fields[2].Length - 2);
serialNumber = field[2].Substring(1, field[2].Length - 2);
msrmntState = MsrmntState.Valid;
log.WarnFormat("{0} - Balance response = {1}, s/n = {2}", Name,
received.Replace("\r", "<cr>").Replace("\n", "<lf>"), serialNumber);
@ -135,9 +135,9 @@ namespace TBF.BenchControl.MettlerToledo.Standard
received.Replace("\r", "<cr>").Replace("\n", "<lf>"));
}
}
else if (fields[0].Equals("Z")) /// Zero when stable
else if (field[0] == "Z") /// Zero when stable
{
if (fields.Length == 2 && fields[1].Equals("A"))
if (field.Length == 2 && field[1] == "A")
{
mass = 0;
Masses[balanceNr] = mass;
@ -152,20 +152,19 @@ namespace TBF.BenchControl.MettlerToledo.Standard
received.Replace("\r", "<cr>").Replace("\n", "<lf>"));
}
}
else if (fields[0].Equals("S")) /// Stable (field[1] == "S") or dynamic (field[1] == "D") mass measurement
else if (field[0] == "S") /// Stable (field[1] == "S") or dynamic (field[1] == "D") mass measurement
{
if (fields.Length == 4 && (fields[1].Equals("S") || fields[1].Equals("D")) &&
double.TryParse(fields[2], NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign | NumberStyles.AllowLeadingWhite,
if (field.Length == 4 && (field[1] == "S" || field[1] == "D") &&
double.TryParse(field[2], NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign | NumberStyles.AllowLeadingWhite,
CultureInfo.InvariantCulture, out mass))
{
if (fields[3].Equals("g")) mass /= 1000.0f;
if (fields[3].Equals("t")) mass *= 1000.0f;
mass = Config.Units.ConvertFrom(ParseUnit(field[3]), mass);
Masses[balanceNr] = mass;
msrmntState = MsrmntState.Valid;
log.InfoFormat("{0} - Balance response = {1}, Mass = {2}", Name,
received.Replace("\r", "<cr>").Replace("\n", "<lf>"), mass);
}
else if (fields.Length == 2 && fields[1].Equals("-"))
else if (field.Length == 2 && field[1] == "-")
{
//mass = 0;
//Masses[balanceNr] = mass;
@ -173,7 +172,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
log.InfoFormat("{0} - Balance response = {1}, Mass = {2}", Name,
received.Replace("\r", "<cr>").Replace("\n", "<lf>"), mass);
}
else if (fields.Length == 2 && fields[1].Equals("+"))
else if (field.Length == 2 && field[1] == "+")
{
//mass = Capacity;
//Masses[balanceNr] = mass;
@ -181,7 +180,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
log.InfoFormat("{0} - Balance response = {1}, Overload", Name,
received.Replace("\r", "<cr>").Replace("\n", "<lf>"));
}
else if (fields.Length >= 2 && fields[1].Equals("I"))
else if (field.Length >= 2 && field[1] == "I")
{
//mass = balanceCfg.Capacity;
//Masses[balanceNr] = mass;
@ -196,19 +195,18 @@ namespace TBF.BenchControl.MettlerToledo.Standard
received.Replace("\r", "<cr>").Replace("\n", "<lf>"));
}
}
else if (fields[0].Equals("T")) /// Taring
else if (field[0] == "T") /// Taring
{
if (fields.Length == 4 && fields[1].Equals("S") &&
double.TryParse(fields[2], NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign | NumberStyles.AllowLeadingWhite,
if (field.Length == 4 && field[1] == "S" &&
double.TryParse(field[2], NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign | NumberStyles.AllowLeadingWhite,
CultureInfo.InvariantCulture, out mass))
{
if (fields[3].Equals("g")) mass /= 1000.0f;
if (fields[3].Equals("t")) mass *= 1000.0f;
mass = Config.Units.ConvertFrom(ParseUnit(field[3]), mass);
msrmntState = MsrmntState.Valid;
log.WarnFormat("{0} - Balance response = {1}, Mass = {2}", Name,
received.Replace("\r", "<cr>").Replace("\n", "<lf>"), mass);
}
else if (fields.Length >= 2 && fields[1].Equals("I"))
else if (field.Length >= 2 && field[1] == "I")
{
mass = mass = balanceCfg.Capacity;
msrmntState = MsrmntState.Overload;
@ -222,9 +220,9 @@ namespace TBF.BenchControl.MettlerToledo.Standard
received.Replace("\r", "<cr>").Replace("\n", "<lf>"));
}
}
else if (fields[0].Equals("U"))
else if (field[0] == "U")
{
if (fields.Length == 2 && fields[1].Equals("A"))
if (field.Length == 2 && field[1] == "A")
{
msrmntState = MsrmntState.Valid;
log.InfoFormat("{0} - Balance response = \"{1}\"", Name,
@ -237,9 +235,9 @@ namespace TBF.BenchControl.MettlerToledo.Standard
received.Replace("\r", "<cr>").Replace("\n", "<lf>"));
}
}
else if (fields[0].Equals("SI")) /// "SI I<cr><lf>" received in case of overload -> empty the tank
else if (field[0] == "SI") /// "SI I<cr><lf>" received in case of overload -> empty the tank
{
if (fields.Length >= 2 && fields[1].Equals("I"))
if (field.Length >= 2 && field[1] == "I")
{
mass = balanceCfg.Capacity;
Masses[balanceNr] = mass;
@ -268,7 +266,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
/// </summary>
/// <param name="units"></param>
/// <returns>SetUnitsOp instance reference casted to IOperaton</returns>
public IOperation SetUnitsOp(Units units)
public IOperation SetUnitsOp(Config.Unit units)
{
return new SetUnitsOp(this, units);
}

View File

@ -1,5 +1,5 @@
///
/// Copyright (c) 2016-2020 Sensus Slovensko a.s.
/// Copyright (c) 2016-2021 Sensus Slovensko a.s.
///
using System;
using System.Collections.Generic;
@ -92,17 +92,17 @@ namespace TBF.BenchControl.MettlerToledo.Standard
received = tmp;
}
string[] fields = received.Substring(0, received.Length - 2).Split(new char[] { ' ' });
if (fields.Length < 2)
string[] field = received.Substring(0, received.Length - 2).Split(new char[] { ' ' });
if (field.Length < 2)
{
msrmntState = MsrmntState.Failed;
log.WarnFormat("{0} - Balance response = {1}, Unexpected error !!!", Name,
received.Replace("\r", "<cr>").Replace("\n", "<lf>"));
return;
}
else if (fields[0].Equals("Z")) /// Zero when stable
else if (field[0] == "Z") /// Zero when stable
{
if (fields.Length == 2 && fields[1].Equals("A"))
if (field.Length == 2 && field[1] == "A")
{
mass = 0;
Masses[balanceNr] = mass;
@ -117,31 +117,29 @@ namespace TBF.BenchControl.MettlerToledo.Standard
received.Replace("\r", "<cr>").Replace("\n", "<lf>"));
}
}
else if (fields[0].Equals("S")) /// Stable (field[1] == "S") or dynamic (field[1] == "D") mass measurement
else if (field[0] == "S") /// Stable (field[1] == "S") or dynamic (field[1] == "D") mass measurement
{
if (fields.Length == 4 && fields[1].Equals("S") &&
double.TryParse(fields[2], NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign | NumberStyles.AllowLeadingWhite,
if (field.Length == 4 && field[1] == "S" &&
double.TryParse(field[2], NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign | NumberStyles.AllowLeadingWhite,
CultureInfo.InvariantCulture, out mass))
{
if (fields[3].Equals("g")) mass /= 1000.0f;
if (fields[3].Equals("t")) mass *= 1000.0f;
mass = Config.Units.ConvertFrom(ParseUnit(field[3]), mass);
Masses[balanceNr] = mass;
msrmntState = MsrmntState.Valid;
log.InfoFormat("{0} - Balance response = {1}, Mass = {2}", Name,
received.Replace("\r", "<cr>").Replace("\n", "<lf>"), mass);
}
else if (fields.Length == 4 && fields[1].Equals("D") &&
double.TryParse(fields[2], NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign | NumberStyles.AllowLeadingWhite,
else if (field.Length == 4 && field[1] == "D" &&
double.TryParse(field[2], NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign | NumberStyles.AllowLeadingWhite,
CultureInfo.InvariantCulture, out mass))
{
if (fields[3].Equals("g")) mass /= 1000.0f;
if (fields[3].Equals("t")) mass *= 1000.0f;
mass = Config.Units.ConvertFrom(ParseUnit(field[3]), mass);
Masses[balanceNr] = mass;
msrmntState = MsrmntState.Valid;
log.InfoFormat("{0} - Balance response = {1}, Mass = {2}", Name,
received.Replace("\r", "<cr>").Replace("\n", "<lf>"), mass);
}
else if (fields.Length == 2 && fields[1].Equals("-"))
else if (field.Length == 2 && field[1] == "-")
{
mass = 0;
Masses[balanceNr] = mass;
@ -149,7 +147,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
log.InfoFormat("{0} - Balance response = {1}, Mass = {2}", Name,
received.Replace("\r", "<cr>").Replace("\n", "<lf>"), mass);
}
else if (fields.Length == 2 && fields[1].Equals("+"))
else if (field.Length == 2 && field[1] == "+")
{
mass = Capacity;
Masses[balanceNr] = mass;
@ -157,7 +155,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
log.InfoFormat("{0} - Balance response = {1}, Overload", Name,
received.Replace("\r", "<cr>").Replace("\n", "<lf>"));
}
else if (fields.Length >= 2 && fields[1].Equals("I"))
else if (field.Length >= 2 && field[1] == "I")
{
mass = balanceCfg.Capacity;
Masses[balanceNr] = mass;
@ -172,19 +170,18 @@ namespace TBF.BenchControl.MettlerToledo.Standard
received.Replace("\r", "<cr>").Replace("\n", "<lf>"));
}
}
else if (fields[0].Equals("T")) /// Taring
else if (field[0] == "T") /// Taring
{
if (fields.Length == 4 && fields[1].Equals("S") &&
double.TryParse(fields[2], NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign | NumberStyles.AllowLeadingWhite,
if (field.Length == 4 && field[1] == "S" &&
double.TryParse(field[2], NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign | NumberStyles.AllowLeadingWhite,
CultureInfo.InvariantCulture, out mass))
{
if (fields[3].Equals("g")) mass /= 1000.0f;
if (fields[3].Equals("t")) mass *= 1000.0f;
mass = Config.Units.ConvertFrom(ParseUnit(field[3]), mass);
msrmntState = MsrmntState.Valid;
log.InfoFormat("{0} - Balance response = {1}, Mass = {2}", Name,
received.Replace("\r", "<cr>").Replace("\n", "<lf>"), mass);
}
else if (fields.Length >= 2 && fields[1].Equals("I"))
else if (field.Length >= 2 && field[1] == "I")
{
mass = mass = balanceCfg.Capacity;
msrmntState = MsrmntState.Overload;
@ -198,9 +195,9 @@ namespace TBF.BenchControl.MettlerToledo.Standard
received.Replace("\r", "<cr>").Replace("\n", "<lf>"));
}
}
else if (fields[0].Equals("U"))
else if (field[0] == "U")
{
if (fields.Length == 2 && fields[1].Equals("A"))
if (field.Length == 2 && field[1] == "A")
{
msrmntState = MsrmntState.Valid;
log.InfoFormat("{0} - Balance response = \"{1}\"", Name,
@ -213,9 +210,9 @@ namespace TBF.BenchControl.MettlerToledo.Standard
received.Replace("\r", "<cr>").Replace("\n", "<lf>"));
}
}
else if (fields[0].Equals("SI")) /// "SI I<cr><lf>" received in case of overload -> empty the tank
else if (field[0] == "SI") /// "SI I<cr><lf>" received in case of overload -> empty the tank
{
if (fields.Length >= 2 && fields[1].Equals("I"))
if (field.Length >= 2 && field[1] == "I")
{
mass = balanceCfg.Capacity;
Masses[balanceNr] = mass;
@ -234,7 +231,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
/// </summary>
/// <param name="units"></param>
/// <returns>SetUnitsOp instance reference casted to IOperaton</returns>
public IOperation SetUnitsOp(Units units)
public IOperation SetUnitsOp(Config.Unit units)
{
return new SetUnitsOp(this, units);
}

View File

@ -1,5 +1,5 @@
///
/// Copyright (c) 2013-2020 Sensus Slovensko a.s.
/// Copyright (c) 2013-2021 Sensus Slovensko a.s.
///
using System;
using System.Collections.Generic;
@ -16,7 +16,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
/// Set by the constructor
BalanceDev scale;
BalanceDev.Units units;
Config.Unit units;
bool activityStarted;
/// <summary>
@ -24,7 +24,7 @@ namespace TBF.BenchControl.MettlerToledo.Standard
/// </summary>
/// <param name="scale">Balance device instance</param>
/// <param name="result">Reference to the serialNumber</param>
public SetUnitsOp(BalanceDev scale, BalanceDev.Units units)
public SetUnitsOp(BalanceDev scale, Config.Unit units)
{
if (scale == null) throw new ArgumentNullException("balanceDev");
this.scale = scale;