From 78bc9e264b1cec15389d4b68bf646026f690f953 Mon Sep 17 00:00:00 2001 From: Michal Buzik Date: Wed, 26 Mar 2025 10:30:39 +0100 Subject: [PATCH] Add uncertainty field to measurement corrections Introduce a new "uncertainty" field to measurement correction entities and integrate it across various UI tabs and database structures. This includes adding uncertainty input fields, handling editing and display logic, updating configurations, and adjusting mappings. Additionally, add a ReadMe file with instructions for the database update. --- Common/IMeasurementCorrection.cs | 1 + Config/Entities/MeasurementCorrection.cs | 3 ++- Config/Mappings/MeasurementCorrectionMap.cs | 1 + GemCard/GemCard.csproj | 1 + TBF.sln.DotSettings.user | 5 ++++ TBF/ReadMe.md | 12 +++++++++ TBF/TBF.csproj | 1 + .../MetrologyDlgAdjustableScaleTab.cs | 26 +++++++++++++++++++ .../Metrology/MetrologyDlgDiverterTab.cs | 17 +++++++++++- .../Metrology/MetrologyDlgEvaporationTab.cs | 14 ++++++++++ .../Metrology/MetrologyDlgFlowMeterTab.cs | 25 ++++++++++++++++++ .../Metrology/MetrologyDlgLevelMeterTab.cs | 10 +++++++ .../Metrology/MetrologyDlgPressMeterTab.cs | 26 +++++++++++++++++++ .../Bench/Metrology/MetrologyDlgScaleTab.cs | 24 +++++++++++++++++ .../Metrology/MetrologyDlgTempMeterTab.cs | 25 +++++++++++++++++- 15 files changed, 188 insertions(+), 3 deletions(-) create mode 100644 TBF/ReadMe.md diff --git a/Common/IMeasurementCorrection.cs b/Common/IMeasurementCorrection.cs index 14d22e492..a03be9b73 100644 --- a/Common/IMeasurementCorrection.cs +++ b/Common/IMeasurementCorrection.cs @@ -7,5 +7,6 @@ namespace Common int RangeIx { get; set; } double Measurement { get; set; } double Correction { get; set; } + double Uncertainty { get; set; } } } diff --git a/Config/Entities/MeasurementCorrection.cs b/Config/Entities/MeasurementCorrection.cs index 8ff1abc62..f1aa3fe78 100644 --- a/Config/Entities/MeasurementCorrection.cs +++ b/Config/Entities/MeasurementCorrection.cs @@ -12,6 +12,7 @@ namespace Config.Entities public virtual int RangeIx { get; set; } /// 0..5 public virtual double Measurement { get; set; } public virtual double Correction { get; set; } + public virtual double Uncertainty { get; set; } public MeasurementCorrection() { @@ -84,7 +85,7 @@ namespace Config.Entities public override string ToString() { - return string.Format("{0} {1} ({2})", Measurement, Correction, RangeIx); + return string.Format("{0} {1} ({2}) {3}", Measurement, Correction, RangeIx, Uncertainty); } } } diff --git a/Config/Mappings/MeasurementCorrectionMap.cs b/Config/Mappings/MeasurementCorrectionMap.cs index 20df1ac2a..fed3b2c55 100644 --- a/Config/Mappings/MeasurementCorrectionMap.cs +++ b/Config/Mappings/MeasurementCorrectionMap.cs @@ -14,6 +14,7 @@ namespace Config.Mappings Map(x => x.RangeIx); Map(x => x.Measurement); Map(x => x.Correction); + Map(x => x.Uncertainty); } } } diff --git a/GemCard/GemCard.csproj b/GemCard/GemCard.csproj index e3993d092..ea7072015 100644 --- a/GemCard/GemCard.csproj +++ b/GemCard/GemCard.csproj @@ -45,6 +45,7 @@ false true + 4 bin\Debug\ diff --git a/TBF.sln.DotSettings.user b/TBF.sln.DotSettings.user index 651fe81c0..07f6d3e36 100644 --- a/TBF.sln.DotSettings.user +++ b/TBF.sln.DotSettings.user @@ -1,4 +1,9 @@  + <AssemblyExplorer> + <Assembly Path="C:\Users\micha\git\tbf\packages\FluentNHibernate.2.0.3.0\lib\net40\FluentNHibernate.dll" /> +</AssemblyExplorer> + C:\Program Files\JetBrains\JetBrains Rider 2024.1.6\tools\MSBuild\Current\Bin\amd64\MSBuild.exe + 1114112 True 77EB589F-C670-4489-AAD6-2A3C02061FD1 77EB589F-C670-4489-AAD6-2A3C02061FD1 diff --git a/TBF/ReadMe.md b/TBF/ReadMe.md new file mode 100644 index 000000000..68b4bdd02 --- /dev/null +++ b/TBF/ReadMe.md @@ -0,0 +1,12 @@ +# Information about new inserted functionality + + +## Version + +Document start on version `3.9.2144.1` + +### v3.9.2144 Uncertainty +#### Database update +``` +alter table measurementcorrection add Uncertainty float null; +``` \ No newline at end of file diff --git a/TBF/TBF.csproj b/TBF/TBF.csproj index 42eb13944..79f4de5c2 100644 --- a/TBF/TBF.csproj +++ b/TBF/TBF.csproj @@ -3586,6 +3586,7 @@ + diff --git a/TBF/UI/Bench/Metrology/MetrologyDlgAdjustableScaleTab.cs b/TBF/UI/Bench/Metrology/MetrologyDlgAdjustableScaleTab.cs index 94456777d..d1bf4e241 100644 --- a/TBF/UI/Bench/Metrology/MetrologyDlgAdjustableScaleTab.cs +++ b/TBF/UI/Bench/Metrology/MetrologyDlgAdjustableScaleTab.cs @@ -52,6 +52,7 @@ namespace TBF.UI.Bench.Metrology Control measurementTextBox; Control correctionTextBox; Control errorTextBox; + Control uncertaintyTextBox; Unit currentUnit; @@ -81,6 +82,7 @@ namespace TBF.UI.Bench.Metrology this.Controls.Add(measurementTextBox = new TextBox()); this.Controls.Add(correctionTextBox = new TextBox()); this.Controls.Add(errorTextBox = new TextBox()); + this.Controls.Add(uncertaintyTextBox = new TextBox()); currentUnit = TBF.Rig.Sequences.ProcessData.ElectricUnit; unitComboBox.Text = currentUnit.ToDescription(); @@ -99,6 +101,7 @@ namespace TBF.UI.Bench.Metrology lv.Columns.Add(new ColumnHeader() { Text = string.Format("{0} [{1}]", Strings.Current, unit.ToDescription()), Width = 100 }); lv.Columns.Add(new ColumnHeader() { Text = string.Format("{0} [{1}]", Strings.Correction, unit.ToDescription()), Width = 100 }); lv.Columns.Add(new ColumnHeader() { Text = string.Format("{0} [%]", Strings.Error), Width = 100 }); + lv.Columns.Add(new ColumnHeader() { Text = string.Format("{0} [%]", Strings.Uncertainty), Width = 100 }); measuredLabel.Text = string.Format("{0} [{1}]:", Strings.Measured, unit.ToDescription()); correctedLabel.Text = string.Format("{0} [{1}]:", Strings.Corrected, unit.ToDescription()); @@ -132,6 +135,7 @@ namespace TBF.UI.Bench.Metrology : Units.ConvertTo(currentUnit, trueValue) - Units.ConvertTo(currentUnit, corr.Measurement); lvi.SubItems.Add(Common.Utils.ToNiceString(difference, SignifDigits)); + //error if (corr.Measurement == 0) { lvi.SubItems.Add(Strings.NaN); @@ -141,6 +145,10 @@ namespace TBF.UI.Bench.Metrology double error = Formulas.ErrorFromVolumes(corr.Measurement, trueValue); lvi.SubItems.Add(Common.Utils.ToNiceString(error, SignifDigits)); } + + //uncertainty + lvi.SubItems.Add(Common.Utils.ToNiceString(corr.Uncertainty, SignifDigits)); + listViewEx.Items.Add(lvi); } @@ -158,6 +166,10 @@ namespace TBF.UI.Bench.Metrology else if (unlocked && e.SubItem == 3) { listViewEx.StartEditing(correctionTextBox, e.Item, e.SubItem); + } + else if (unlocked && e.SubItem == 4) + { + listViewEx.StartEditing(uncertaintyTextBox, e.Item, e.SubItem); } } @@ -181,6 +193,7 @@ namespace TBF.UI.Bench.Metrology double difference; /// Correction in selected unit double correction; /// Correction in default unit double error = 0; + double uncertainty = 0; if (subItem == 1 && Utils.TryParseEDouble(strValue, out oriMeasurement) && (measurement = Units.ConvertFrom(currentUnit, oriMeasurement)) >= 0) { @@ -248,6 +261,19 @@ namespace TBF.UI.Bench.Metrology return true; } + else if (subItem == 4 && ((strValue == Strings.NaN) || Utils.TryParseEDouble(strValue, out uncertainty))) + { + if (strValue == Strings.NaN) + { + } + else + { + (item.Tag as MeasurementCorrection).Uncertainty = uncertainty; + item.SubItems[4].Text = Common.Utils.ToNiceString(uncertainty, SignifDigits); + } + + return true; + } else { return false; diff --git a/TBF/UI/Bench/Metrology/MetrologyDlgDiverterTab.cs b/TBF/UI/Bench/Metrology/MetrologyDlgDiverterTab.cs index b47fbac57..703c8086c 100644 --- a/TBF/UI/Bench/Metrology/MetrologyDlgDiverterTab.cs +++ b/TBF/UI/Bench/Metrology/MetrologyDlgDiverterTab.cs @@ -48,6 +48,7 @@ namespace TBF.UI.Bench.Metrology bool unlocked; Control measurementTextBox; Control correctionTextBox; + Control uncertaintyTextBox; public MetrologyDlgDiverterTab() @@ -76,8 +77,10 @@ namespace TBF.UI.Bench.Metrology /// Panel2 measurementTextBox = new TextBox(); correctionTextBox = new TextBox(); + uncertaintyTextBox = new TextBox(); this.Controls.Add(measurementTextBox); this.Controls.Add(correctionTextBox); + this.Controls.Add(uncertaintyTextBox); listViewEx.SubItemClicked += new SubItemEventHandler(listViewEx_SubItemClicked); listViewEx.SubItemRightClicked += new SubItemEventHandler(listViewEx_SubItemRightClicked); @@ -86,6 +89,7 @@ namespace TBF.UI.Bench.Metrology listViewEx.Columns.Add(new ColumnHeader() { Text = Strings.Nr, Width = 60 }); listViewEx.Columns.Add(new ColumnHeader() { Text = string.Format("{0} [m3/h]", Strings.Flow), Width = 100 }); listViewEx.Columns.Add(new ColumnHeader() { Text = string.Format("{0} [ms]", Strings.Correction), Width = 100 }); + listViewEx.Columns.Add(new ColumnHeader() {Text = string.Format("{0} [%]", Strings.Uncertainty), Width = 100}); RefreshAll(); } @@ -119,6 +123,7 @@ namespace TBF.UI.Bench.Metrology ListViewItem lvi = new ListViewItem(nr.ToString()); lvi.SubItems.Add(corr.Measurement.ToString()); lvi.SubItems.Add((1000 * corr.Correction).ToString()); + lvi.SubItems.Add(corr.Uncertainty.ToString()); lvi.Tag = corr; listViewEx.Items.Add(lvi); } @@ -133,11 +138,15 @@ namespace TBF.UI.Bench.Metrology { listViewEx.StartEditing(correctionTextBox, e.Item, e.SubItem); } + else if (unlocked && e.SubItem == 3) + { + listViewEx.StartEditing(uncertaintyTextBox, e.Item, e.SubItem); + } } void listViewEx_SubItemRightClicked(object sender, SubItemEventArgs e) { - if (!unlocked || e.SubItem < 1 || e.SubItem > 2) return; + if (!unlocked || e.SubItem < 1 || e.SubItem > 3) return; if (DialogResult.Yes == MessageBox.Show(Strings.Do_you_want_to_copy_this_value_to_all_cells_below_this_cell, Strings.Confirmation, MessageBoxButtons.YesNo, MessageBoxIcon.Question)) @@ -189,6 +198,12 @@ namespace TBF.UI.Bench.Metrology (item.Tag as MeasurementCorrection).Correction = fvalue / 1000; return true; } + else if (subItem == 3 && Utils.TryParseEFloat(value, out fvalue)) + { + (item.Tag as MeasurementCorrection).Uncertainty = fvalue ; + return true; + } + else { return false; diff --git a/TBF/UI/Bench/Metrology/MetrologyDlgEvaporationTab.cs b/TBF/UI/Bench/Metrology/MetrologyDlgEvaporationTab.cs index 6270d9d3d..b953c1896 100644 --- a/TBF/UI/Bench/Metrology/MetrologyDlgEvaporationTab.cs +++ b/TBF/UI/Bench/Metrology/MetrologyDlgEvaporationTab.cs @@ -48,6 +48,7 @@ namespace TBF.UI.Bench.Metrology bool unlocked; Control measurementTextBox; Control correctionTextBox; + Control uncertaintyTextBox; public MetrologyDlgEvaporationTab() @@ -76,8 +77,10 @@ namespace TBF.UI.Bench.Metrology /// Panel2 measurementTextBox = new TextBox(); correctionTextBox = new TextBox(); + uncertaintyTextBox = new TextBox(); this.Controls.Add(measurementTextBox); this.Controls.Add(correctionTextBox); + this.Controls.Add(uncertaintyTextBox); listViewEx.SubItemClicked += new SubItemEventHandler(listViewEx_SubItemClicked); listViewEx.SubItemRightClicked += new SubItemEventHandler(listViewEx_SubItemRightClicked); @@ -86,6 +89,7 @@ namespace TBF.UI.Bench.Metrology listViewEx.Columns.Add(new ColumnHeader() { Text = Strings.Nr, Width = 60 }); listViewEx.Columns.Add(new ColumnHeader() { Text = string.Format("{0} [°C]", Strings.Temperature), Width = 100 }); listViewEx.Columns.Add(new ColumnHeader() { Text = string.Format("{0} [g/hour]", Strings.Evaporation), Width = 100 }); + listViewEx.Columns.Add(new ColumnHeader() { Text = string.Format("{0} [%]", Strings.Uncertainty), Width = 100 }); RefreshAll(); } @@ -116,6 +120,7 @@ namespace TBF.UI.Bench.Metrology ListViewItem lvi = new ListViewItem(nr.ToString()); lvi.SubItems.Add(corr.Measurement.ToString()); lvi.SubItems.Add((1000 * corr.Correction).ToString()); + lvi.SubItems.Add(corr.Uncertainty.ToString()); lvi.Tag = corr; listViewEx.Items.Add(lvi); } @@ -130,6 +135,10 @@ namespace TBF.UI.Bench.Metrology { listViewEx.StartEditing(correctionTextBox, e.Item, e.SubItem); } + else if (unlocked && e.SubItem == 3) + { + listViewEx.StartEditing(uncertaintyTextBox, e.Item, e.SubItem); + } } void listViewEx_SubItemRightClicked(object sender, SubItemEventArgs e) @@ -186,6 +195,11 @@ namespace TBF.UI.Bench.Metrology (item.Tag as MeasurementCorrection).Correction = fvalue / 1000; return true; } + else if (subItem == 3 && Utils.TryParseEFloat(value, out fvalue)) + { + (item.Tag as MeasurementCorrection).Uncertainty = fvalue; + return true; + } else { return false; diff --git a/TBF/UI/Bench/Metrology/MetrologyDlgFlowMeterTab.cs b/TBF/UI/Bench/Metrology/MetrologyDlgFlowMeterTab.cs index 278e12b74..dcf29c870 100644 --- a/TBF/UI/Bench/Metrology/MetrologyDlgFlowMeterTab.cs +++ b/TBF/UI/Bench/Metrology/MetrologyDlgFlowMeterTab.cs @@ -52,6 +52,7 @@ namespace TBF.UI.Bench.Metrology Control measurementTextBox; Control correctionTextBox; Control errorTextBox; + Control uncertaintyTextBox; readonly int rangeIx; /// 0 (no range) or 1..5 (range #) readonly bool isLastFlowMeterRange; /// true when this is the last range of this flow meter. /// This is to prevent double saving of the meter entity to a DB @@ -96,6 +97,7 @@ namespace TBF.UI.Bench.Metrology this.Controls.Add(measurementTextBox = new TextBox()); this.Controls.Add(correctionTextBox = new TextBox()); this.Controls.Add(errorTextBox = new TextBox()); + this.Controls.Add(uncertaintyTextBox = new TextBox()); currentUnit = TBF.Rig.Sequences.ProcessData.FlowUnit; unitComboBox.Text = currentUnit.ToDescription(); @@ -114,6 +116,7 @@ namespace TBF.UI.Bench.Metrology lv.Columns.Add(new ColumnHeader() { Text = string.Format("{0} [{1}]", Strings.Flow, unit.ToDescription()), Width = 120 }); lv.Columns.Add(new ColumnHeader() { Text = string.Format("{0} [{1}]", Strings.Correction, unit.ToDescription()), Width = 150 }); lv.Columns.Add(new ColumnHeader() { Text = string.Format("{0} [%]", Strings.Error), Width = 100 }); + lv.Columns.Add(new ColumnHeader() { Text = string.Format("{0} [%]", Strings.Uncertainty), Width = 100 }); measuredLabel.Text = string.Format("{0} [{1}]:", Strings.Measured, unit.ToDescription()); correctedLabel.Text = string.Format("{0} [{1}]:", Strings.Corrected, unit.ToDescription()); @@ -163,6 +166,8 @@ namespace TBF.UI.Bench.Metrology lvi.SubItems.Add(Common.Utils.ToNiceString(error, SignifDigits)); } + lvi.SubItems.Add(corr.Uncertainty.ToString()); + listViewEx.Items.Add(lvi); } @@ -179,6 +184,10 @@ namespace TBF.UI.Bench.Metrology else if (unlocked && e.SubItem == 3) { listViewEx.StartEditing(correctionTextBox, e.Item, e.SubItem); + } + else if (unlocked && e.SubItem == 4) + { + listViewEx.StartEditing(uncertaintyTextBox, e.Item, e.SubItem); } } @@ -202,6 +211,7 @@ namespace TBF.UI.Bench.Metrology double difference; /// Correction in selected unit double correction; /// Correction in default unit double error = 0; + double uncertainty; if (subItem == 1 && Utils.TryParseEDouble(strValue, out oriMeasurement) && (measurement = Units.ConvertFrom(currentUnit, oriMeasurement)) >= 0) { @@ -269,6 +279,21 @@ namespace TBF.UI.Bench.Metrology return true; } + if (subItem == 4 && Utils.TryParseEDouble(strValue, out uncertainty)) + { + (item.Tag as MeasurementCorrection).Uncertainty = uncertainty; + + if (uncertainty == 0.0f) + { + item.SubItems[3].Text = Strings.NaN; + } + else + { + item.SubItems[3].Text = Common.Utils.ToNiceString(uncertainty, SignifDigits); + } + + return true; + } else { return false; diff --git a/TBF/UI/Bench/Metrology/MetrologyDlgLevelMeterTab.cs b/TBF/UI/Bench/Metrology/MetrologyDlgLevelMeterTab.cs index 5255fe62c..a0abbe3c6 100644 --- a/TBF/UI/Bench/Metrology/MetrologyDlgLevelMeterTab.cs +++ b/TBF/UI/Bench/Metrology/MetrologyDlgLevelMeterTab.cs @@ -48,6 +48,7 @@ namespace TBF.UI.Bench.Metrology bool unlocked; Control measurementTextBox; Control correctionTextBox; + Control uncertaintyTextBox; public MetrologyDlgLevelMeterTab() @@ -76,8 +77,10 @@ namespace TBF.UI.Bench.Metrology /// Panel2 measurementTextBox = new TextBox(); correctionTextBox = new TextBox(); + uncertaintyTextBox = new TextBox(); this.Controls.Add(measurementTextBox); this.Controls.Add(correctionTextBox); + this.Controls.Add(uncertaintyTextBox); listViewEx.SubItemClicked += new SubItemEventHandler(listViewEx_SubItemClicked); listViewEx.SubItemRightClicked += new SubItemEventHandler(listViewEx_SubItemRightClicked); @@ -86,6 +89,7 @@ namespace TBF.UI.Bench.Metrology listViewEx.Columns.Add(new ColumnHeader() { Text = Strings.Nr, Width = 60 }); listViewEx.Columns.Add(new ColumnHeader() { Text = string.Format("{0} [mm]", Strings.Level), Width = 100 }); listViewEx.Columns.Add(new ColumnHeader() { Text = string.Format("{0} [mm]", Strings.Correction), Width = 100 }); + listViewEx.Columns.Add(new ColumnHeader() { Text = string.Format("{0} [%]", Strings.Uncertainty), Width = 100 }); RefreshAll(); } @@ -116,6 +120,7 @@ namespace TBF.UI.Bench.Metrology ListViewItem lvi = new ListViewItem(nr.ToString()); lvi.SubItems.Add(corr.Measurement.ToString()); lvi.SubItems.Add((corr.Correction).ToString()); + lvi.SubItems.Add((corr.Uncertainty).ToString()); lvi.Tag = corr; listViewEx.Items.Add(lvi); } @@ -186,6 +191,11 @@ namespace TBF.UI.Bench.Metrology (item.Tag as MeasurementCorrection).Correction = fvalue; return true; } + else if (subItem == 3 && Utils.TryParseEFloat(value, out fvalue)) + { + (item.Tag as MeasurementCorrection).Uncertainty = fvalue; + return true; + } else { return false; diff --git a/TBF/UI/Bench/Metrology/MetrologyDlgPressMeterTab.cs b/TBF/UI/Bench/Metrology/MetrologyDlgPressMeterTab.cs index b8cac9eb6..6d234bb45 100644 --- a/TBF/UI/Bench/Metrology/MetrologyDlgPressMeterTab.cs +++ b/TBF/UI/Bench/Metrology/MetrologyDlgPressMeterTab.cs @@ -52,6 +52,7 @@ namespace TBF.UI.Bench.Metrology Control measurementTextBox; Control correctionTextBox; Control errorTextBox; + Control uncertaintyTextBox; Unit currentUnit; @@ -81,6 +82,7 @@ namespace TBF.UI.Bench.Metrology this.Controls.Add(measurementTextBox = new TextBox()); this.Controls.Add(correctionTextBox = new TextBox()); this.Controls.Add(errorTextBox = new TextBox()); + this.Controls.Add(uncertaintyTextBox = new TextBox()); currentUnit = TBF.Rig.Sequences.ProcessData.PressUnit; unitComboBox.Text = currentUnit.ToDescription(); @@ -99,6 +101,7 @@ namespace TBF.UI.Bench.Metrology lv.Columns.Add(new ColumnHeader() { Text = string.Format("{0} [{1}]", Strings.Pressure, unit.ToDescription()), Width = 100 }); lv.Columns.Add(new ColumnHeader() { Text = string.Format("{0} [{1}]", Strings.Correction, unit.ToDescription()), Width = 100 }); lv.Columns.Add(new ColumnHeader() { Text = string.Format("{0} [%]", Strings.Error), Width = 100 }); + lv.Columns.Add(new ColumnHeader() { Text = string.Format("{0} [%]", Strings.Uncertainty), Width = 100 }); measuredLabel.Text = string.Format("{0} [{1}]:", Strings.Measured, unit.ToDescription()); correctedLabel.Text = string.Format("{0} [{1}]:", Strings.Corrected, unit.ToDescription()); @@ -132,6 +135,7 @@ namespace TBF.UI.Bench.Metrology : Units.ConvertTo(currentUnit, trueValue) - Units.ConvertTo(currentUnit, corr.Measurement); lvi.SubItems.Add(Common.Utils.ToNiceString(difference, SignifDigits)); + //error if (corr.Measurement == 0) { lvi.SubItems.Add(Strings.NaN); @@ -141,6 +145,10 @@ namespace TBF.UI.Bench.Metrology double error = Formulas.ErrorFromVolumes(corr.Measurement, trueValue); lvi.SubItems.Add(Common.Utils.ToNiceString(error, SignifDigits)); } + + //uncertainty + lvi.SubItems.Add(Common.Utils.ToNiceString(corr.Uncertainty, SignifDigits)); + listViewEx.Items.Add(lvi); } @@ -158,6 +166,10 @@ namespace TBF.UI.Bench.Metrology else if (unlocked && e.SubItem == 3) { listViewEx.StartEditing(correctionTextBox, e.Item, e.SubItem); + } + else if (unlocked && e.SubItem == 4) + { + listViewEx.StartEditing(uncertaintyTextBox, e.Item, e.SubItem); } } @@ -181,6 +193,7 @@ namespace TBF.UI.Bench.Metrology double difference; /// Correction in selected unit double correction; /// Correction in default unit double error = 0; + double uncertaitity; if (subItem == 1 && Utils.TryParseEDouble(strValue, out oriMeasurement) && (measurement = Units.ConvertFrom(currentUnit, oriMeasurement)) >= 0) { @@ -248,6 +261,19 @@ namespace TBF.UI.Bench.Metrology return true; } + else if (subItem == 4 && (Utils.TryParseEDouble(strValue, out uncertaitity))) + { + if (strValue == Strings.NaN) + { + } + else + { + (item.Tag as MeasurementCorrection).Uncertainty = uncertaitity; + item.SubItems[4].Text = Common.Utils.ToNiceString(uncertaitity, SignifDigits); + } + + return true; + } else { return false; diff --git a/TBF/UI/Bench/Metrology/MetrologyDlgScaleTab.cs b/TBF/UI/Bench/Metrology/MetrologyDlgScaleTab.cs index 933b25c08..c852985fa 100644 --- a/TBF/UI/Bench/Metrology/MetrologyDlgScaleTab.cs +++ b/TBF/UI/Bench/Metrology/MetrologyDlgScaleTab.cs @@ -53,6 +53,7 @@ namespace TBF.UI.Bench.Metrology Control measurementTextBox; Control correctionTextBox; Control errorTextBox; + Control uncertaintyTextBox; Unit currentUnit; @@ -82,6 +83,7 @@ namespace TBF.UI.Bench.Metrology this.Controls.Add(measurementTextBox = new TextBox()); this.Controls.Add(correctionTextBox = new TextBox()); this.Controls.Add(errorTextBox = new TextBox()); + this.Controls.Add(uncertaintyTextBox = new TextBox()); currentUnit = TBF.Rig.Sequences.ProcessData.MassUnit; unitComboBox.Text = currentUnit.ToDescription(); @@ -100,6 +102,7 @@ namespace TBF.UI.Bench.Metrology lv.Columns.Add(new ColumnHeader() { Text = string.Format("{0} [{1}]", Strings.Mass, unit.ToDescription()), Width = 120 }); lv.Columns.Add(new ColumnHeader() { Text = string.Format("{0} [{1}]", Strings.Correction, unit.ToDescription()), Width = 150 }); lv.Columns.Add(new ColumnHeader() { Text = string.Format("{0} [%]", Strings.Error), Width = 100 }); + lv.Columns.Add(new ColumnHeader() { Text = string.Format("{0} [%]", Strings.Uncertainty), Width = 100 }); measuredLabel.Text = string.Format("{0} [{1}]:", Strings.Measured, unit.ToDescription()); correctedLabel.Text = string.Format("{0} [{1}]:", Strings.Corrected, unit.ToDescription()); @@ -156,6 +159,8 @@ namespace TBF.UI.Bench.Metrology double error = Formulas.ErrorFromVolumes(corr.Measurement, trueValue); lvi.SubItems.Add(Common.Utils.ToNiceString(error, SignifDigits)); } + + lvi.SubItems.Add(corr.Uncertainty.ToString()); listViewEx.Items.Add(lvi); } @@ -173,6 +178,10 @@ namespace TBF.UI.Bench.Metrology else if (unlocked && e.SubItem == 3) { listViewEx.StartEditing(correctionTextBox, e.Item, e.SubItem); + } + else if (unlocked && e.SubItem == 4) + { + listViewEx.StartEditing(uncertaintyTextBox, e.Item, e.SubItem); } } @@ -196,6 +205,7 @@ namespace TBF.UI.Bench.Metrology double difference; /// Correction in selected unit double correction; /// Correction in default unit double error = 0; + double uncertainty; if (subItem == 1 && Utils.TryParseEDouble(strValue, out oriMeasurement) && (measurement = Units.ConvertFrom(currentUnit, oriMeasurement)) >= 0) { @@ -263,6 +273,20 @@ namespace TBF.UI.Bench.Metrology return true; } + else if (subItem == 4 && Utils.TryParseEDouble(strValue, out uncertainty)) + { + (item.Tag as MeasurementCorrection).Uncertainty = uncertainty; + + if (uncertainty != 0) + { + item.SubItems[3].Text = Common.Utils.ToNiceString(uncertainty, SignifDigits); + } + else + { + item.SubItems[3].Text = Strings.NaN; + } + return true; + } else { return false; diff --git a/TBF/UI/Bench/Metrology/MetrologyDlgTempMeterTab.cs b/TBF/UI/Bench/Metrology/MetrologyDlgTempMeterTab.cs index cc96470c8..fb57e84ab 100644 --- a/TBF/UI/Bench/Metrology/MetrologyDlgTempMeterTab.cs +++ b/TBF/UI/Bench/Metrology/MetrologyDlgTempMeterTab.cs @@ -52,7 +52,8 @@ namespace TBF.UI.Bench.Metrology Control measurementTextBox; Control correctionTextBox; Control errorTextBox; - + Control uncertaintyTextBox; + Unit currentUnit; public MetrologyDlgTempMeterTab() @@ -81,6 +82,7 @@ namespace TBF.UI.Bench.Metrology this.Controls.Add(measurementTextBox = new TextBox()); this.Controls.Add(correctionTextBox = new TextBox()); this.Controls.Add(errorTextBox = new TextBox()); + this.Controls.Add(uncertaintyTextBox = new TextBox()); currentUnit = TBF.Rig.Sequences.ProcessData.TempUnit; unitComboBox.Text = currentUnit.ToDescription(); @@ -99,6 +101,7 @@ namespace TBF.UI.Bench.Metrology lv.Columns.Add(new ColumnHeader() { Text = string.Format("{0} [{1}]", Strings.Temperature, unit.ToDescription()), Width = 120 }); lv.Columns.Add(new ColumnHeader() { Text = string.Format("{0} [{1}]", Strings.Correction, unit.ToDescription()), Width = 150 }); lv.Columns.Add(new ColumnHeader() { Text = string.Format("{0} [%]", Strings.Error), Width = 100 }); + lv.Columns.Add(new ColumnHeader() {Text = string.Format("{0} [%]", Strings.Uncertainty), Width = 100 }); measuredLabel.Text = string.Format("{0} [{1}]:", Strings.Measured, unit.ToDescription()); correctedLabel.Text = string.Format("{0} [{1}]:", Strings.Corrected, unit.ToDescription()); @@ -144,6 +147,7 @@ namespace TBF.UI.Bench.Metrology double error = Formulas.ErrorFromVolumes(corr.Measurement, trueValue); lvi.SubItems.Add(Common.Utils.ToNiceString(error, SignifDigits)); } + lvi.SubItems.Add(corr.Uncertainty.ToString()); listViewEx.Items.Add(lvi); } @@ -161,6 +165,10 @@ namespace TBF.UI.Bench.Metrology else if (unlocked && e.SubItem == 3) { listViewEx.StartEditing(correctionTextBox, e.Item, e.SubItem); + } + else if (unlocked && e.SubItem == 4) + { + listViewEx.StartEditing(uncertaintyTextBox, e.Item, e.SubItem); } } @@ -184,6 +192,7 @@ namespace TBF.UI.Bench.Metrology double difference; /// Correction in selected unit double correction; /// Correction in default unit double error = 0; + double uncertainty; if (subItem == 1 && Utils.TryParseEDouble(strValue, out oriMeasurement) && (measurement = Units.ConvertFrom(currentUnit, oriMeasurement)) >= 0) { @@ -251,6 +260,20 @@ namespace TBF.UI.Bench.Metrology return true; } + if (subItem == 4 && Utils.TryParseEDouble(strValue, out uncertainty)) + { + (item.Tag as MeasurementCorrection).Uncertainty = uncertainty; + + if (strValue == Strings.NaN) + { + } + else + { + item.SubItems[2].Text = Common.Utils.ToNiceString(uncertainty, SignifDigits); + } + + return true; + } else { return false;