fix precision correct factor (Mexico), added diff, correction in percentage in Result Configuration
This commit is contained in:
parent
d3c8813012
commit
88b8bc5534
@ -63,6 +63,19 @@ namespace Results.Entities
|
|||||||
#if IPERL
|
#if IPERL
|
||||||
public virtual double OrigCalibFactor { get; set; } /// Original iPerl calibration factor used during the test
|
public virtual double OrigCalibFactor { get; set; } /// Original iPerl calibration factor used during the test
|
||||||
public virtual double CalibFactor { get; set; } /// iPerl calibration factor used during the test
|
public virtual double CalibFactor { get; set; } /// iPerl calibration factor used during the test
|
||||||
|
public virtual double CalibFactorNominal { get; set; } /// Raw calibration factor representing 100 % for this test result
|
||||||
|
public virtual double CalibFactorPercentage
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
double nominalCalibFactor = CalibFactorNominal > 0.0 ? CalibFactorNominal : 4096.0;
|
||||||
|
return CalibFactor * 100.0 / nominalCalibFactor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public virtual double CalibFactorCorrectionPercentage
|
||||||
|
{
|
||||||
|
get { return CalibFactorPercentage - 100.0; }
|
||||||
|
}
|
||||||
public virtual double OrigCalibFactorLNA{ get; set; } /// Original iPerl LNA calibration factor used during the test
|
public virtual double OrigCalibFactorLNA{ get; set; } /// Original iPerl LNA calibration factor used during the test
|
||||||
public virtual double CalibFactorLNA { get; set; } /// iPerl LNA calibration factor used during the test
|
public virtual double CalibFactorLNA { get; set; } /// iPerl LNA calibration factor used during the test
|
||||||
public virtual double Q2ErrWOCorrection { get; set; }
|
public virtual double Q2ErrWOCorrection { get; set; }
|
||||||
@ -519,6 +532,7 @@ namespace Results.Entities
|
|||||||
#if IPERL
|
#if IPERL
|
||||||
OrigCalibFactor = src.OrigCalibFactor;
|
OrigCalibFactor = src.OrigCalibFactor;
|
||||||
CalibFactor = src.CalibFactor;
|
CalibFactor = src.CalibFactor;
|
||||||
|
CalibFactorNominal = src.CalibFactorNominal;
|
||||||
OrigCalibFactorLNA = src.OrigCalibFactorLNA;
|
OrigCalibFactorLNA = src.OrigCalibFactorLNA;
|
||||||
CalibFactorLNA = src.CalibFactorLNA;
|
CalibFactorLNA = src.CalibFactorLNA;
|
||||||
Q2ErrWOCorrection = src.Q2ErrWOCorrection;
|
Q2ErrWOCorrection = src.Q2ErrWOCorrection;
|
||||||
|
|||||||
@ -43,6 +43,42 @@ namespace Results.Entities.helpers
|
|||||||
EnsureColumnMySql(conn, "TestRslt", "ConductMax", "FLOAT NOT NULL DEFAULT 0");
|
EnsureColumnMySql(conn, "TestRslt", "ConductMax", "FLOAT NOT NULL DEFAULT 0");
|
||||||
|
|
||||||
EnsureColumnMySql(conn, "MeterTestRslt", "FlipMode", "INT NULL");
|
EnsureColumnMySql(conn, "MeterTestRslt", "FlipMode", "INT NULL");
|
||||||
|
EnsureColumnMySql(conn, "WaterMeter", "CalibFactorNominal", "DOUBLE NOT NULL DEFAULT 4096");
|
||||||
|
// Nepouzitelne pre teraz - nechavam kod pre buducnost
|
||||||
|
//EnsureColumnMySql(conn, "MeterTestRslt", "CalibFactor", "FLOAT NOT NULL DEFAULT 0");
|
||||||
|
//EnsureColumnTypeMySql(conn, "MeterTestRslt", "CalibFactor", "float", "FLOAT NOT NULL DEFAULT 0");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void EnsureColumnTypeMySql(
|
||||||
|
MySqlConnection conn,
|
||||||
|
string tableName,
|
||||||
|
string columnName,
|
||||||
|
string expectedDataType,
|
||||||
|
string columnDefinition)
|
||||||
|
{
|
||||||
|
using (var cmd = conn.CreateCommand())
|
||||||
|
{
|
||||||
|
cmd.CommandText = @"
|
||||||
|
SELECT DATA_TYPE
|
||||||
|
FROM INFORMATION_SCHEMA.COLUMNS
|
||||||
|
WHERE TABLE_SCHEMA = DATABASE()
|
||||||
|
AND TABLE_NAME = @tableName
|
||||||
|
AND COLUMN_NAME = @columnName";
|
||||||
|
|
||||||
|
cmd.Parameters.AddWithValue("@tableName", tableName);
|
||||||
|
cmd.Parameters.AddWithValue("@columnName", columnName);
|
||||||
|
|
||||||
|
string currentDataType = cmd.ExecuteScalar() as string;
|
||||||
|
if (string.Equals(currentDataType, expectedDataType, StringComparison.OrdinalIgnoreCase))
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
using (var alter = conn.CreateCommand())
|
||||||
|
{
|
||||||
|
alter.CommandText = "ALTER TABLE `" + tableName + "` MODIFY COLUMN `" +
|
||||||
|
columnName + "` " + columnDefinition;
|
||||||
|
alter.ExecuteNonQuery();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -107,6 +143,7 @@ namespace Results.Entities.helpers
|
|||||||
// EnsureColumnSQLite(conn, "MeterTestRslt", "Q3Channel", "INTEGER NOT NULL DEFAULT 0");
|
// EnsureColumnSQLite(conn, "MeterTestRslt", "Q3Channel", "INTEGER NOT NULL DEFAULT 0");
|
||||||
|
|
||||||
EnsureColumnSQLite(conn, "MeterTestRslt", "FlipMode", "INTEGER NULL");
|
EnsureColumnSQLite(conn, "MeterTestRslt", "FlipMode", "INTEGER NULL");
|
||||||
|
EnsureColumnSQLite(conn, "WaterMeter", "CalibFactorNominal", "REAL NOT NULL DEFAULT 4096");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -362,6 +362,8 @@ namespace Results
|
|||||||
Pulses_per_unit, /// 306
|
Pulses_per_unit, /// 306
|
||||||
|
|
||||||
FlipMode, /// 307 iPerl mode used for this meter test result
|
FlipMode, /// 307 iPerl mode used for this meter test result
|
||||||
|
CalibFactorPercentage, /// 308 iPerl calibration factor represented as a percentage
|
||||||
|
CalibFactorCorrectionPercentage,/// 309 iPerl calibration correction represented as a percentage
|
||||||
Count,
|
Count,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -32,6 +32,7 @@ namespace Results.Mappings
|
|||||||
#if IPERL
|
#if IPERL
|
||||||
Map(x => x.OrigCalibFactor);
|
Map(x => x.OrigCalibFactor);
|
||||||
Map(x => x.CalibFactor);
|
Map(x => x.CalibFactor);
|
||||||
|
Map(x => x.CalibFactorNominal);
|
||||||
Map(x => x.OrigCalibFactorLNA);
|
Map(x => x.OrigCalibFactorLNA);
|
||||||
Map(x => x.CalibFactorLNA);
|
Map(x => x.CalibFactorLNA);
|
||||||
Map(x => x.Q2ErrWOCorrection);
|
Map(x => x.Q2ErrWOCorrection);
|
||||||
|
|||||||
@ -457,6 +457,8 @@ namespace Results
|
|||||||
#if IPERL
|
#if IPERL
|
||||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.OrigCalibFactor, "iPerl OrigCalibFactor", Quantity.Number, ItemCategory.MeterResult, (w,t,u,f,p) => FormatDbl(u, f, p, "V3", w.OrigCalibFactor)));
|
AllItems.Add(new WMeterRsltItemSpec(ItemID.OrigCalibFactor, "iPerl OrigCalibFactor", Quantity.Number, ItemCategory.MeterResult, (w,t,u,f,p) => FormatDbl(u, f, p, "V3", w.OrigCalibFactor)));
|
||||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.CalibFactor, "iPerl CalibFactor", Quantity.Number, ItemCategory.MeterResult, (w,t,u,f,p) => FormatDbl(u, f, p, "V3", w.CalibFactor)));
|
AllItems.Add(new WMeterRsltItemSpec(ItemID.CalibFactor, "iPerl CalibFactor", Quantity.Number, ItemCategory.MeterResult, (w,t,u,f,p) => FormatDbl(u, f, p, "V3", w.CalibFactor)));
|
||||||
|
AllItems.Add(new WMeterRsltItemSpec(ItemID.CalibFactorPercentage, "iPerl CalibFactor (%)", Quantity.Number, ItemCategory.MeterResult, (w,t,u,f,p) => FormatDbl(u, f, p, "F4", w.CalibFactorPercentage)));
|
||||||
|
AllItems.Add(new WMeterRsltItemSpec(ItemID.CalibFactorCorrectionPercentage, "iPerl Calibration correction (%)", Quantity.Number, ItemCategory.MeterResult, (w,t,u,f,p) => FormatDbl(u, f, p, "F4", w.CalibFactorCorrectionPercentage)));
|
||||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.OrigCalibFactorLNA,"iPerl OrigCalibFactorLNA",Quantity.Number, ItemCategory.MeterResult, (w,t,u,f,p) => FormatDbl(u, f, p, "V3", w.OrigCalibFactorLNA)));
|
AllItems.Add(new WMeterRsltItemSpec(ItemID.OrigCalibFactorLNA,"iPerl OrigCalibFactorLNA",Quantity.Number, ItemCategory.MeterResult, (w,t,u,f,p) => FormatDbl(u, f, p, "V3", w.OrigCalibFactorLNA)));
|
||||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.CalibFactorLNA, "iPerl CalibFactorLNA", Quantity.Number, ItemCategory.MeterResult, (w,t,u,f,p) => FormatDbl(u, f, p, "V3", w.CalibFactorLNA)));
|
AllItems.Add(new WMeterRsltItemSpec(ItemID.CalibFactorLNA, "iPerl CalibFactorLNA", Quantity.Number, ItemCategory.MeterResult, (w,t,u,f,p) => FormatDbl(u, f, p, "V3", w.CalibFactorLNA)));
|
||||||
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q2ErrWOCorrection, "iPerl Q2ErrWOCorrection", Quantity.Error, ItemCategory.MeterResult, (w,t,u,f,p) => FormatDbl(u, f, p, "V3", w.Q2ErrWOCorrection)));
|
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q2ErrWOCorrection, "iPerl Q2ErrWOCorrection", Quantity.Error, ItemCategory.MeterResult, (w,t,u,f,p) => FormatDbl(u, f, p, "V3", w.Q2ErrWOCorrection)));
|
||||||
|
|||||||
@ -1770,4 +1770,10 @@
|
|||||||
<data name="Loading" xml:space="preserve"><value>Načítání</value></data>
|
<data name="Loading" xml:space="preserve"><value>Načítání</value></data>
|
||||||
<data name="Simulated" xml:space="preserve"><value>Simulace</value></data>
|
<data name="Simulated" xml:space="preserve"><value>Simulace</value></data>
|
||||||
<data name="Not_loaded" xml:space="preserve"><value>Nenačteno</value></data>
|
<data name="Not_loaded" xml:space="preserve"><value>Nenačteno</value></data>
|
||||||
|
<data name="IperlCalibFactorNominal" xml:space="preserve">
|
||||||
|
<value>Výchozí kalibrační faktor:</value>
|
||||||
|
</data>
|
||||||
|
<data name="IperlCalibFactorNominalTooltip" xml:space="preserve">
|
||||||
|
<value>Nominální surový kalibrační faktor odpovídající 100 %. Tato hodnota se používá pro výpočet položky „iPerl CalibFactor (%)“ v konfiguraci výsledků.</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@ -2232,4 +2232,10 @@
|
|||||||
<data name="Loading" xml:space="preserve"><value>Laden</value></data>
|
<data name="Loading" xml:space="preserve"><value>Laden</value></data>
|
||||||
<data name="Simulated" xml:space="preserve"><value>Simuliert</value></data>
|
<data name="Simulated" xml:space="preserve"><value>Simuliert</value></data>
|
||||||
<data name="Not_loaded" xml:space="preserve"><value>Nicht geladen</value></data>
|
<data name="Not_loaded" xml:space="preserve"><value>Nicht geladen</value></data>
|
||||||
|
<data name="IperlCalibFactorNominal" xml:space="preserve">
|
||||||
|
<value>Standard-Kalibrierfaktor:</value>
|
||||||
|
</data>
|
||||||
|
<data name="IperlCalibFactorNominalTooltip" xml:space="preserve">
|
||||||
|
<value>Roher Kalibrierfaktor, der 100 % entspricht. Dieser Wert wird zur Berechnung von „iPerl CalibFactor (%)“ in der Ergebnis-Konfiguration verwendet.</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@ -141,4 +141,10 @@
|
|||||||
<data name="Loading" xml:space="preserve"><value>Cargando</value></data>
|
<data name="Loading" xml:space="preserve"><value>Cargando</value></data>
|
||||||
<data name="Simulated" xml:space="preserve"><value>Simulado</value></data>
|
<data name="Simulated" xml:space="preserve"><value>Simulado</value></data>
|
||||||
<data name="Not_loaded" xml:space="preserve"><value>No cargado</value></data>
|
<data name="Not_loaded" xml:space="preserve"><value>No cargado</value></data>
|
||||||
|
<data name="IperlCalibFactorNominal" xml:space="preserve">
|
||||||
|
<value>Factor de calibración predeterminado:</value>
|
||||||
|
</data>
|
||||||
|
<data name="IperlCalibFactorNominalTooltip" xml:space="preserve">
|
||||||
|
<value>Factor de calibración bruto que representa el 100 %. Este valor se utiliza para calcular «iPerl CalibFactor (%)» en la configuración de resultados.</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@ -2031,4 +2031,10 @@
|
|||||||
<data name="Loading" xml:space="preserve"><value>Chargement</value></data>
|
<data name="Loading" xml:space="preserve"><value>Chargement</value></data>
|
||||||
<data name="Simulated" xml:space="preserve"><value>Simulé</value></data>
|
<data name="Simulated" xml:space="preserve"><value>Simulé</value></data>
|
||||||
<data name="Not_loaded" xml:space="preserve"><value>Non chargé</value></data>
|
<data name="Not_loaded" xml:space="preserve"><value>Non chargé</value></data>
|
||||||
|
<data name="IperlCalibFactorNominal" xml:space="preserve">
|
||||||
|
<value>Facteur d’étalonnage par défaut :</value>
|
||||||
|
</data>
|
||||||
|
<data name="IperlCalibFactorNominalTooltip" xml:space="preserve">
|
||||||
|
<value>Facteur d’étalonnage brut représentant 100 %. Cette valeur est utilisée pour calculer « iPerl CalibFactor (%) » dans la configuration des résultats.</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@ -1803,4 +1803,10 @@
|
|||||||
<data name="Loading" xml:space="preserve"><value>Caricamento</value></data>
|
<data name="Loading" xml:space="preserve"><value>Caricamento</value></data>
|
||||||
<data name="Simulated" xml:space="preserve"><value>Simulato</value></data>
|
<data name="Simulated" xml:space="preserve"><value>Simulato</value></data>
|
||||||
<data name="Not_loaded" xml:space="preserve"><value>Non caricato</value></data>
|
<data name="Not_loaded" xml:space="preserve"><value>Non caricato</value></data>
|
||||||
|
<data name="IperlCalibFactorNominal" xml:space="preserve">
|
||||||
|
<value>Fattore di calibrazione predefinito:</value>
|
||||||
|
</data>
|
||||||
|
<data name="IperlCalibFactorNominalTooltip" xml:space="preserve">
|
||||||
|
<value>Fattore di calibrazione grezzo corrispondente al 100 %. Questo valore viene usato per calcolare «iPerl CalibFactor (%)» nella configurazione dei risultati.</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@ -1707,4 +1707,10 @@
|
|||||||
<data name="Loading" xml:space="preserve"><value>Ładowanie</value></data>
|
<data name="Loading" xml:space="preserve"><value>Ładowanie</value></data>
|
||||||
<data name="Simulated" xml:space="preserve"><value>Symulacja</value></data>
|
<data name="Simulated" xml:space="preserve"><value>Symulacja</value></data>
|
||||||
<data name="Not_loaded" xml:space="preserve"><value>Nie wczytano</value></data>
|
<data name="Not_loaded" xml:space="preserve"><value>Nie wczytano</value></data>
|
||||||
|
<data name="IperlCalibFactorNominal" xml:space="preserve">
|
||||||
|
<value>Domyślny współczynnik kalibracji:</value>
|
||||||
|
</data>
|
||||||
|
<data name="IperlCalibFactorNominalTooltip" xml:space="preserve">
|
||||||
|
<value>Surowy współczynnik kalibracji odpowiadający 100 %. Ta wartość służy do obliczania „iPerl CalibFactor (%)” w konfiguracji wyników.</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@ -2503,4 +2503,10 @@
|
|||||||
<data name="Not_loaded" xml:space="preserve">
|
<data name="Not_loaded" xml:space="preserve">
|
||||||
<value>Not loaded</value>
|
<value>Not loaded</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="IperlCalibFactorNominal" xml:space="preserve">
|
||||||
|
<value>Default calibration factor:</value>
|
||||||
|
</data>
|
||||||
|
<data name="IperlCalibFactorNominalTooltip" xml:space="preserve">
|
||||||
|
<value>Raw calibration factor representing 100 %. This value is used to calculate 'iPerl CalibFactor (%)' in the results configuration.</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@ -855,4 +855,10 @@
|
|||||||
<data name="Loading" xml:space="preserve"><value>Se încarcă</value></data>
|
<data name="Loading" xml:space="preserve"><value>Se încarcă</value></data>
|
||||||
<data name="Simulated" xml:space="preserve"><value>Simulat</value></data>
|
<data name="Simulated" xml:space="preserve"><value>Simulat</value></data>
|
||||||
<data name="Not_loaded" xml:space="preserve"><value>Neîncărcat</value></data>
|
<data name="Not_loaded" xml:space="preserve"><value>Neîncărcat</value></data>
|
||||||
|
<data name="IperlCalibFactorNominal" xml:space="preserve">
|
||||||
|
<value>Factor de calibrare implicit:</value>
|
||||||
|
</data>
|
||||||
|
<data name="IperlCalibFactorNominalTooltip" xml:space="preserve">
|
||||||
|
<value>Factorul brut de calibrare care reprezintă 100 %. Această valoare este utilizată pentru calculul „iPerl CalibFactor (%)” în configurarea rezultatelor.</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@ -1620,4 +1620,10 @@
|
|||||||
<data name="Loading" xml:space="preserve"><value>Загрузка</value></data>
|
<data name="Loading" xml:space="preserve"><value>Загрузка</value></data>
|
||||||
<data name="Simulated" xml:space="preserve"><value>Симуляция</value></data>
|
<data name="Simulated" xml:space="preserve"><value>Симуляция</value></data>
|
||||||
<data name="Not_loaded" xml:space="preserve"><value>Не загружено</value></data>
|
<data name="Not_loaded" xml:space="preserve"><value>Не загружено</value></data>
|
||||||
|
<data name="IperlCalibFactorNominal" xml:space="preserve">
|
||||||
|
<value>Номинальный коэффициент калибровки:</value>
|
||||||
|
</data>
|
||||||
|
<data name="IperlCalibFactorNominalTooltip" xml:space="preserve">
|
||||||
|
<value>Необработанный коэффициент калибровки, соответствующий 100 %. Это значение используется для вычисления «iPerl CalibFactor (%)» в конфигурации результатов.</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@ -268,4 +268,10 @@
|
|||||||
<data name="Loading" xml:space="preserve"><value>Načítavanie</value></data>
|
<data name="Loading" xml:space="preserve"><value>Načítavanie</value></data>
|
||||||
<data name="Simulated" xml:space="preserve"><value>Simulácia</value></data>
|
<data name="Simulated" xml:space="preserve"><value>Simulácia</value></data>
|
||||||
<data name="Not_loaded" xml:space="preserve"><value>Nenačítané</value></data>
|
<data name="Not_loaded" xml:space="preserve"><value>Nenačítané</value></data>
|
||||||
|
<data name="IperlCalibFactorNominal" xml:space="preserve">
|
||||||
|
<value>Predvolený kalibračný faktor:</value>
|
||||||
|
</data>
|
||||||
|
<data name="IperlCalibFactorNominalTooltip" xml:space="preserve">
|
||||||
|
<value>Nominálny surový kalibračný faktor zodpovedajúci 100 %. Táto hodnota sa používa na výpočet položky „iPerl CalibFactor (%)“ v konfigurácii výsledkov.</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@ -1209,4 +1209,10 @@
|
|||||||
<data name="Loading" xml:space="preserve"><value>正在加载</value></data>
|
<data name="Loading" xml:space="preserve"><value>正在加载</value></data>
|
||||||
<data name="Simulated" xml:space="preserve"><value>模拟</value></data>
|
<data name="Simulated" xml:space="preserve"><value>模拟</value></data>
|
||||||
<data name="Not_loaded" xml:space="preserve"><value>未加载</value></data>
|
<data name="Not_loaded" xml:space="preserve"><value>未加载</value></data>
|
||||||
|
<data name="IperlCalibFactorNominal" xml:space="preserve">
|
||||||
|
<value>默认校准系数:</value>
|
||||||
|
</data>
|
||||||
|
<data name="IperlCalibFactorNominalTooltip" xml:space="preserve">
|
||||||
|
<value>表示 100% 的原始校准系数。该值用于在结果配置中计算“iPerl CalibFactor (%)”。</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@ -1179,6 +1179,7 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollection
|
|||||||
}
|
}
|
||||||
#if IPERL
|
#if IPERL
|
||||||
meterRslt.WaterMeter.CalibFactor = iPerl.CalibFactor;
|
meterRslt.WaterMeter.CalibFactor = iPerl.CalibFactor;
|
||||||
|
meterRslt.WaterMeter.CalibFactorNominal = iPerl.CalibFactorNominal;
|
||||||
meterRslt.FlipMode = iPerl.ConfigStruct != null && iPerl.ConfigStruct.FlipMode.HasValue
|
meterRslt.FlipMode = iPerl.ConfigStruct != null && iPerl.ConfigStruct.FlipMode.HasValue
|
||||||
? (int?)iPerl.ConfigStruct.FlipMode.Value
|
? (int?)iPerl.ConfigStruct.FlipMode.Value
|
||||||
: null;
|
: null;
|
||||||
|
|||||||
@ -48,6 +48,8 @@ namespace TBF.Rig.TestMethods.iPerlCommunication.iPerlHead
|
|||||||
public const int EndOptoDataCount = OptoDataBufferSize - StartOptoDataCount;
|
public const int EndOptoDataCount = OptoDataBufferSize - StartOptoDataCount;
|
||||||
public const int StartEndFilterSamplesCount2 = 1; //20 /// StartEndFilterSamplesCount = 2 * StartEndFilterSamplesCount2 + 1
|
public const int StartEndFilterSamplesCount2 = 1; //20 /// StartEndFilterSamplesCount = 2 * StartEndFilterSamplesCount2 + 1
|
||||||
public const int FeatureVectorSize = 9;
|
public const int FeatureVectorSize = 9;
|
||||||
|
/// <summary>Default raw ViewCalibration value which represents 100 % according to the iPerl ASIC protocol.</summary>
|
||||||
|
public const double DefaultCalibFactorNominal = 4096.0;
|
||||||
|
|
||||||
private const int StartSampleDelaySec = 5;
|
private const int StartSampleDelaySec = 5;
|
||||||
private const int EndSampleDelayCount = 2;
|
private const int EndSampleDelayCount = 2;
|
||||||
@ -94,6 +96,15 @@ namespace TBF.Rig.TestMethods.iPerlCommunication.iPerlHead
|
|||||||
public string QuantityUnits { get; set; }
|
public string QuantityUnits { get; set; }
|
||||||
|
|
||||||
public double CalibTarget { get { return iperlHeadCfg.ProcParams.CalibTarget; } }
|
public double CalibTarget { get { return iperlHeadCfg.ProcParams.CalibTarget; } }
|
||||||
|
public double CalibFactorNominal
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return iperlHeadCfg != null && iperlHeadCfg.CalibFactorNominal > 0.0
|
||||||
|
? iperlHeadCfg.CalibFactorNominal
|
||||||
|
: DefaultCalibFactorNominal;
|
||||||
|
}
|
||||||
|
}
|
||||||
public ushort FactorLimitLo { get { return (ushort)iperlHeadCfg.ProcParams.FactorLimitLo; } }
|
public ushort FactorLimitLo { get { return (ushort)iperlHeadCfg.ProcParams.FactorLimitLo; } }
|
||||||
public ushort FactorLimitHi { get { return (ushort)iperlHeadCfg.ProcParams.FactorLimitHi; } }
|
public ushort FactorLimitHi { get { return (ushort)iperlHeadCfg.ProcParams.FactorLimitHi; } }
|
||||||
public Counting InitFlowDir { get { return (iperlHeadCfg != null && iperlHeadCfg.ProcParams != null) ? iperlHeadCfg.ProcParams.Counting : Counting.Arbitrary; } }
|
public Counting InitFlowDir { get { return (iperlHeadCfg != null && iperlHeadCfg.ProcParams != null) ? iperlHeadCfg.ProcParams.Counting : Counting.Arbitrary; } }
|
||||||
@ -157,6 +168,27 @@ namespace TBF.Rig.TestMethods.iPerlCommunication.iPerlHead
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>Converts the raw two-byte ViewCalibration factor to its percentage representation.</summary>
|
||||||
|
public static double CalculateCalibFactorPercentage(ushort rawCalibFactor)
|
||||||
|
{
|
||||||
|
return CalculateCalibFactorPercentage(rawCalibFactor, DefaultCalibFactorNominal);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static double CalculateCalibFactorPercentage(ushort rawCalibFactor, double nominalCalibFactor)
|
||||||
|
{
|
||||||
|
return nominalCalibFactor > 0.0 ? rawCalibFactor * 100.0 / nominalCalibFactor : 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double CalibFactorPercentage
|
||||||
|
{
|
||||||
|
get { return CalculateCalibFactorPercentage(CalibFactor, CalibFactorNominal); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public double CalibFactorCorrectionPercentage
|
||||||
|
{
|
||||||
|
get { return CalibFactorPercentage - 100.0; }
|
||||||
|
}
|
||||||
|
|
||||||
public ushort OrigCalibFactorLNA;
|
public ushort OrigCalibFactorLNA;
|
||||||
public ushort CalibFactorLNA { get { return (CalibrationStructV4 != null) ? CalibrationStructV4.CalibrationLNA : (ushort)0; } }
|
public ushort CalibFactorLNA { get { return (CalibrationStructV4 != null) ? CalibrationStructV4.CalibrationLNA : (ushort)0; } }
|
||||||
|
|
||||||
|
|||||||
@ -27,6 +27,7 @@ namespace TBF.Rig.TestMethods.iPerlCommunication.iPerlHead
|
|||||||
public int MuxBoardNr; /// 0 = use RfidComPort(Nr), otherwise mux. board nr. 1 .. 4
|
public int MuxBoardNr; /// 0 = use RfidComPort(Nr), otherwise mux. board nr. 1 .. 4
|
||||||
public int Group; /// Number written to QuidoRS to connct the watermeter to RfidComPort, 1 .. 10
|
public int Group; /// Number written to QuidoRS to connct the watermeter to RfidComPort, 1 .. 10
|
||||||
public CommunicationInterface CommunicationInterface; /// Communication Interface: RFID or NFC
|
public CommunicationInterface CommunicationInterface; /// Communication Interface: RFID or NFC
|
||||||
|
public double CalibFactorNominal; /// Raw calibration factor representing 100 % in the results calculation
|
||||||
|
|
||||||
/// <summary> Procedure parameters </summary>
|
/// <summary> Procedure parameters </summary>
|
||||||
[XmlIgnore]
|
[XmlIgnore]
|
||||||
@ -49,6 +50,7 @@ namespace TBF.Rig.TestMethods.iPerlCommunication.iPerlHead
|
|||||||
ProcParams = CreateProcParamsProvider() as ProcParams;
|
ProcParams = CreateProcParamsProvider() as ProcParams;
|
||||||
CommunicationInterface = CommunicationInterface.RFID;
|
CommunicationInterface = CommunicationInterface.RFID;
|
||||||
HeadCommunicationComPortNr = 0;
|
HeadCommunicationComPortNr = 0;
|
||||||
|
CalibFactorNominal = IperlHead.DefaultCalibFactorNominal;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IperlHeadCfg(IComponentFactory factory)
|
public IperlHeadCfg(IComponentFactory factory)
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
/// Copyright (c) 2015-2017 Sensus Metering Systems
|
/// Copyright (c) 2015-2017 Sensus Metering Systems
|
||||||
///
|
///
|
||||||
using System;
|
using System;
|
||||||
|
using System.Globalization;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using Common;
|
using Common;
|
||||||
@ -33,6 +34,10 @@ namespace TBF.Rig.TestMethods.iPerlCommunication.iPerlHead
|
|||||||
private void WaterMeterCfgCtrl_Load(object sender, EventArgs e)
|
private void WaterMeterCfgCtrl_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
nameLabel.Text = Strings.Name;
|
nameLabel.Text = Strings.Name;
|
||||||
|
calibFactorNominalLabel.Text = GetLocalizedString("IperlCalibFactorNominal", "Default calibration factor:");
|
||||||
|
string calibFactorNominalTooltip = GetLocalizedString("IperlCalibFactorNominalTooltip", "Raw calibration factor representing 100 %. This value is used to calculate 'iPerl CalibFactor (%)' in the results configuration.");
|
||||||
|
calibFactorNominalToolTip.SetToolTip(calibFactorNominalLabel, calibFactorNominalTooltip);
|
||||||
|
calibFactorNominalToolTip.SetToolTip(calibFactorNominalTextBox, calibFactorNominalTooltip);
|
||||||
classNameLabel.Text = config.Factory.ClassName;
|
classNameLabel.Text = config.Factory.ClassName;
|
||||||
Redraw();
|
Redraw();
|
||||||
}
|
}
|
||||||
@ -55,6 +60,10 @@ namespace TBF.Rig.TestMethods.iPerlCommunication.iPerlHead
|
|||||||
muxBoardNrTextBox.Text = config.MuxBoardNr.ToString();
|
muxBoardNrTextBox.Text = config.MuxBoardNr.ToString();
|
||||||
groupTextBox.Text = config.Group.ToString();
|
groupTextBox.Text = config.Group.ToString();
|
||||||
comboBoxCommunicationInterface.SelectedItem = config.CommunicationInterface.ToString();
|
comboBoxCommunicationInterface.SelectedItem = config.CommunicationInterface.ToString();
|
||||||
|
double nominalCalibFactor = config.CalibFactorNominal > 0.0
|
||||||
|
? config.CalibFactorNominal
|
||||||
|
: IperlHead.DefaultCalibFactorNominal;
|
||||||
|
calibFactorNominalTextBox.Text = nominalCalibFactor.ToString(CultureInfo.CurrentCulture);
|
||||||
tabPage2.Controls.Add(new IperlHeadTestCtrl(config));
|
tabPage2.Controls.Add(new IperlHeadTestCtrl(config));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -71,6 +80,7 @@ namespace TBF.Rig.TestMethods.iPerlCommunication.iPerlHead
|
|||||||
muxBoardNrTextBox.Enabled = true;
|
muxBoardNrTextBox.Enabled = true;
|
||||||
groupTextBox.Enabled = true;
|
groupTextBox.Enabled = true;
|
||||||
comboBoxCommunicationInterface.Enabled = true;
|
comboBoxCommunicationInterface.Enabled = true;
|
||||||
|
calibFactorNominalTextBox.Enabled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CfgUpdateFlags VerifyCfg(ref string message)
|
public CfgUpdateFlags VerifyCfg(ref string message)
|
||||||
@ -127,6 +137,13 @@ namespace TBF.Rig.TestMethods.iPerlCommunication.iPerlHead
|
|||||||
message += Environment.NewLine + string.Format(Strings.Invalid_0, groupLabel.Text);
|
message += Environment.NewLine + string.Format(Strings.Invalid_0, groupLabel.Text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
double nominalCalibFactor;
|
||||||
|
if (!TryParseDouble(calibFactorNominalTextBox.Text, out nominalCalibFactor) || nominalCalibFactor <= 0.0)
|
||||||
|
{
|
||||||
|
flags |= CfgUpdateFlags.Error;
|
||||||
|
message += Environment.NewLine + string.Format(Strings.Invalid_0, calibFactorNominalLabel.Text);
|
||||||
|
}
|
||||||
|
|
||||||
return flags;
|
return flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -155,8 +172,22 @@ namespace TBF.Rig.TestMethods.iPerlCommunication.iPerlHead
|
|||||||
config.Group = int.Parse(groupTextBox.Text);
|
config.Group = int.Parse(groupTextBox.Text);
|
||||||
config.CommunicationInterface = (CommunicationInterface)comboBoxCommunicationInterface.SelectedIndex;
|
config.CommunicationInterface = (CommunicationInterface)comboBoxCommunicationInterface.SelectedIndex;
|
||||||
config.HeadCommunicationComPortNr = int.Parse(headPortNrTextBox.Text);
|
config.HeadCommunicationComPortNr = int.Parse(headPortNrTextBox.Text);
|
||||||
|
double nominalCalibFactor;
|
||||||
|
if (TryParseDouble(calibFactorNominalTextBox.Text, out nominalCalibFactor))
|
||||||
|
config.CalibFactorNominal = nominalCalibFactor;
|
||||||
|
|
||||||
return flags;
|
return flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static bool TryParseDouble(string value, out double result)
|
||||||
|
{
|
||||||
|
return double.TryParse(value, NumberStyles.Float, CultureInfo.CurrentCulture, out result) ||
|
||||||
|
double.TryParse(value, NumberStyles.Float, CultureInfo.InvariantCulture, out result);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string GetLocalizedString(string resourceName, string fallback)
|
||||||
|
{
|
||||||
|
return Strings.ResourceManager.GetString(resourceName, Strings.Culture) ?? fallback;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -31,6 +31,7 @@ namespace TBF.Rig.TestMethods.iPerlCommunication.iPerlHead
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
|
this.components = new System.ComponentModel.Container();
|
||||||
this.tabControl1 = new System.Windows.Forms.TabControl();
|
this.tabControl1 = new System.Windows.Forms.TabControl();
|
||||||
this.tabPage1 = new System.Windows.Forms.TabPage();
|
this.tabPage1 = new System.Windows.Forms.TabPage();
|
||||||
this.label4 = new System.Windows.Forms.Label();
|
this.label4 = new System.Windows.Forms.Label();
|
||||||
@ -60,6 +61,9 @@ namespace TBF.Rig.TestMethods.iPerlCommunication.iPerlHead
|
|||||||
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
||||||
this.label2 = new System.Windows.Forms.Label();
|
this.label2 = new System.Windows.Forms.Label();
|
||||||
this.headPortNrTextBox = new System.Windows.Forms.TextBox();
|
this.headPortNrTextBox = new System.Windows.Forms.TextBox();
|
||||||
|
this.calibFactorNominalLabel = new System.Windows.Forms.Label();
|
||||||
|
this.calibFactorNominalTextBox = new System.Windows.Forms.TextBox();
|
||||||
|
this.calibFactorNominalToolTip = new System.Windows.Forms.ToolTip(this.components);
|
||||||
this.tabControl1.SuspendLayout();
|
this.tabControl1.SuspendLayout();
|
||||||
this.tabPage1.SuspendLayout();
|
this.tabPage1.SuspendLayout();
|
||||||
this.groupBox1.SuspendLayout();
|
this.groupBox1.SuspendLayout();
|
||||||
@ -80,6 +84,8 @@ namespace TBF.Rig.TestMethods.iPerlCommunication.iPerlHead
|
|||||||
// tabPage1
|
// tabPage1
|
||||||
//
|
//
|
||||||
this.tabPage1.Controls.Add(this.groupBox2);
|
this.tabPage1.Controls.Add(this.groupBox2);
|
||||||
|
this.tabPage1.Controls.Add(this.calibFactorNominalTextBox);
|
||||||
|
this.tabPage1.Controls.Add(this.calibFactorNominalLabel);
|
||||||
this.tabPage1.Controls.Add(this.label4);
|
this.tabPage1.Controls.Add(this.label4);
|
||||||
this.tabPage1.Controls.Add(this.label3);
|
this.tabPage1.Controls.Add(this.label3);
|
||||||
this.tabPage1.Controls.Add(this.groupBox1);
|
this.tabPage1.Controls.Add(this.groupBox1);
|
||||||
@ -364,6 +370,23 @@ namespace TBF.Rig.TestMethods.iPerlCommunication.iPerlHead
|
|||||||
this.groupBox2.TabIndex = 26;
|
this.groupBox2.TabIndex = 26;
|
||||||
this.groupBox2.TabStop = false;
|
this.groupBox2.TabStop = false;
|
||||||
this.groupBox2.Text = "Head Communication";
|
this.groupBox2.Text = "Head Communication";
|
||||||
|
//
|
||||||
|
// calibFactorNominalLabel
|
||||||
|
//
|
||||||
|
this.calibFactorNominalLabel.AutoSize = true;
|
||||||
|
this.calibFactorNominalLabel.Location = new System.Drawing.Point(290, 76);
|
||||||
|
this.calibFactorNominalLabel.Name = "calibFactorNominalLabel";
|
||||||
|
this.calibFactorNominalLabel.Size = new System.Drawing.Size(142, 16);
|
||||||
|
this.calibFactorNominalLabel.TabIndex = 27;
|
||||||
|
this.calibFactorNominalLabel.Text = "Default calibration factor:";
|
||||||
|
//
|
||||||
|
// calibFactorNominalTextBox
|
||||||
|
//
|
||||||
|
this.calibFactorNominalTextBox.Enabled = false;
|
||||||
|
this.calibFactorNominalTextBox.Location = new System.Drawing.Point(290, 96);
|
||||||
|
this.calibFactorNominalTextBox.Name = "calibFactorNominalTextBox";
|
||||||
|
this.calibFactorNominalTextBox.Size = new System.Drawing.Size(92, 22);
|
||||||
|
this.calibFactorNominalTextBox.TabIndex = 28;
|
||||||
//
|
//
|
||||||
// label2
|
// label2
|
||||||
//
|
//
|
||||||
@ -437,5 +460,8 @@ namespace TBF.Rig.TestMethods.iPerlCommunication.iPerlHead
|
|||||||
private System.Windows.Forms.GroupBox groupBox2;
|
private System.Windows.Forms.GroupBox groupBox2;
|
||||||
private System.Windows.Forms.TextBox headPortNrTextBox;
|
private System.Windows.Forms.TextBox headPortNrTextBox;
|
||||||
private System.Windows.Forms.Label label2;
|
private System.Windows.Forms.Label label2;
|
||||||
|
private System.Windows.Forms.Label calibFactorNominalLabel;
|
||||||
|
private System.Windows.Forms.TextBox calibFactorNominalTextBox;
|
||||||
|
private System.Windows.Forms.ToolTip calibFactorNominalToolTip;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,50 @@
|
|||||||
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
using Results.Entities;
|
||||||
|
using TBF.Rig.TestMethods.iPerlCommunication.iPerlHead;
|
||||||
|
|
||||||
|
namespace TBFTests.Rig.TestMethods.iPerlCommunication.iPerlHead
|
||||||
|
{
|
||||||
|
[TestClass]
|
||||||
|
public class IperlHeadCalibrationTest
|
||||||
|
{
|
||||||
|
[TestMethod]
|
||||||
|
public void CalculateCalibFactorPercentage_UsesProtocolNominalFactor()
|
||||||
|
{
|
||||||
|
Assert.AreEqual(100.0,
|
||||||
|
IperlHead.CalculateCalibFactorPercentage(4096), 0.000000001);
|
||||||
|
Assert.AreEqual(93.310546875,
|
||||||
|
IperlHead.CalculateCalibFactorPercentage(3822), 0.000000001);
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void CalculateCalibFactorPercentage_UsesConfiguredNominalFactor()
|
||||||
|
{
|
||||||
|
Assert.AreEqual(76.44,
|
||||||
|
IperlHead.CalculateCalibFactorPercentage(3822, 5000.0), 0.000000001);
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void WaterMeterCalibFactorPercentage_UsesSavedNominalFactor()
|
||||||
|
{
|
||||||
|
var waterMeter = new WaterMeter
|
||||||
|
{
|
||||||
|
CalibFactor = 3822,
|
||||||
|
CalibFactorNominal = 5000.0
|
||||||
|
};
|
||||||
|
|
||||||
|
Assert.AreEqual(76.44, waterMeter.CalibFactorPercentage, 0.000000001);
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void WaterMeterCalibFactorCorrectionPercentage_IsPercentageMinusOneHundred()
|
||||||
|
{
|
||||||
|
var waterMeter = new WaterMeter
|
||||||
|
{
|
||||||
|
CalibFactor = 3822,
|
||||||
|
CalibFactorNominal = 4096.0
|
||||||
|
};
|
||||||
|
|
||||||
|
Assert.AreEqual(-6.689453125, waterMeter.CalibFactorCorrectionPercentage, 0.000000001);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -155,6 +155,7 @@
|
|||||||
<Compile Include="Rig\RegisterReaders\AllyReader\integration\AllyHardwareIntegrationTest.cs" />
|
<Compile Include="Rig\RegisterReaders\AllyReader\integration\AllyHardwareIntegrationTest.cs" />
|
||||||
<Compile Include="Rig\TestMethods\AllyCalibration\TestMethodConfigTest.cs" />
|
<Compile Include="Rig\TestMethods\AllyCalibration\TestMethodConfigTest.cs" />
|
||||||
<Compile Include="Rig\TestMethods\iPerlCommunication\common\OptoTelegramRawTest.cs" />
|
<Compile Include="Rig\TestMethods\iPerlCommunication\common\OptoTelegramRawTest.cs" />
|
||||||
|
<Compile Include="Rig\TestMethods\iPerlCommunication\iPerlHead\IperlHeadCalibrationTest.cs" />
|
||||||
<Compile Include="Rig\TestMethods\iPerlCommunication\communication\FakeSerialDriver.cs" />
|
<Compile Include="Rig\TestMethods\iPerlCommunication\communication\FakeSerialDriver.cs" />
|
||||||
<Compile Include="Rig\TestMethods\iPerlCommunication\communication\IperlResponseFactory.cs" />
|
<Compile Include="Rig\TestMethods\iPerlCommunication\communication\IperlResponseFactory.cs" />
|
||||||
<Compile Include="Rig\TestMethods\iPerlCommunication\communication\RadioServiceTest.cs" />
|
<Compile Include="Rig\TestMethods\iPerlCommunication\communication\RadioServiceTest.cs" />
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user