(1) SUEZ cycle: InitOrReadQ2Correction, (Conditional)UpdateQ2Corrections, (2) Flow dir. detection fixed, (3) etc., ver. 2.18.1182

This commit is contained in:
Milan Hanajik 2019-03-28 09:33:17 +01:00
parent e356934ede
commit b235f9ae20
15 changed files with 752 additions and 487 deletions

View File

@ -141,12 +141,12 @@ namespace TBF.BenchControl.Output.FileWriters.IperlLogger
WriteLogsToDisk(logger, batch);
logger.Flush();
logger.Close();
log.WarnFormat("{0} : Batch {1} written OK", Name, batch.BatchNr);
log.WarnFormat("{0} : Batch #{1} written OK", Name, batch.BatchNr);
}
catch
catch (Exception exc)
{
anyError = true;
log.WarnFormat("{0} : Failed to write batch {1}", Name, batch.BatchNr);
log.WarnFormat("{0} : Failed to write batch #{1}: {2}", Name, batch.BatchNr, exc.Message);
}
}
@ -223,248 +223,242 @@ namespace TBF.BenchControl.Output.FileWriters.IperlLogger
}
try
{
logger.WriteLine("[Wasserzähler-Daten]");
logger.WriteLine(string.Format("PruefPunkte={0}", (maxPruefungsNr > 15) ? 20 : ((maxPruefungsNr > 10) ? 15 : ((maxPruefungsNr > 5) ? 10 : 5))));
logger.WriteLine(string.Format("Typ={0}", batch.ProcedureName)); /// iP 020 Q3_4 R160 A XXXX
logger.WriteLine(string.Format("MetroKlasse={0}", wmData.MetrologicalClass));
logger.WriteLine(string.Format("Zulassungszeichen={0}", wmData.ApprovalInfo));
logger.WriteLine(string.Format("Qn={0}", wmData.Q3_Qn.ToString("F1", Program.AltCulture)));
logger.WriteLine(string.Format("Impulsrate=1"));
logger.WriteLine(string.Format("WZid={0}", wmData.WMTypeId));
logger.WriteLine(string.Format("RevWzTyp={0}", wm0.WMTypeRevision));
logger.WriteLine(string.Format("RevPruefstandWzTyp=2"));
logger.WriteLine("[Wasserzähler-Daten]");
logger.WriteLine(string.Format("PruefPunkte={0}", (maxPruefungsNr > 15) ? 20 : ((maxPruefungsNr > 10) ? 15 : ((maxPruefungsNr > 5) ? 10 : 5))));
logger.WriteLine(string.Format("Typ={0}", batch.ProcedureName)); /// iP 020 Q3_4 R160 A XXXX
logger.WriteLine(string.Format("MetroKlasse={0}", wmData.MetrologicalClass));
logger.WriteLine(string.Format("Zulassungszeichen={0}", wmData.ApprovalInfo));
logger.WriteLine(string.Format("Qn={0}", wmData.Q3_Qn.ToString("F1", Program.AltCulture)));
logger.WriteLine(string.Format("Impulsrate=1"));
logger.WriteLine(string.Format("WZid={0}", wmData.WMTypeId));
logger.WriteLine(string.Format("RevWzTyp={0}", wm0.WMTypeRevision));
logger.WriteLine(string.Format("RevPruefstandWzTyp=2"));
for (int j = 0; j < testInfos.Length; j++)
for (int j = 0; j < testInfos.Length; j++)
{
if (testInfos[j].PruefungsNrLog != 0)
{
if (testInfos[j].PruefungsNrLog != 0)
{
string fId = testInfos[j].PruefungsNrLog.ToString("D2");
string qBz = testInfos[j].QBezeichnungLog;
Results.Entities.MeterTestRslt wm0r = wm0trs[j];
bool pb_100_110 = (testInfos[j].Range == Range.R100_110);
string fId = testInfos[j].PruefungsNrLog.ToString("D2");
string qBz = testInfos[j].QBezeichnungLog;
Results.Entities.MeterTestRslt wm0r = wm0trs[j];
bool pb_100_110 = (testInfos[j].Range == Range.R100_110);
if (wm0r != null)
if (wm0r != null)
{
/// An existing test
logger.WriteLine(string.Format("Durchfluss{0}={1}", fId, Units.ConvertTo(Unit.lph, (wm0r.Qfrom() + wm0r.Qto()) / 2).ToString("F1", Program.AltCulture)));
logger.WriteLine(string.Format("Prüfzeit{0}={1}", fId, wm0r.TargetTime().ToString("F0")));
logger.WriteLine(string.Format("Prüfbereich100_110{0}={1}", fId, (pb_100_110 ? 1 : 0)));
logger.WriteLine(string.Format("PrüfbereichMin{0}={1}", fId, (pb_100_110 ? 100 : 90)));
logger.WriteLine(string.Format("PrüfbereichMax{0}={1}", fId, (pb_100_110 ? 110 : 100)));
logger.WriteLine(string.Format("QBezeichnung{0}={1}", fId, qBz));
if (testInfos[j].PruefungsNrLog > 0)
{
/// An existing test
logger.WriteLine(string.Format("Durchfluss{0}={1}", fId, Units.ConvertTo(Unit.lph, (wm0r.Qfrom() + wm0r.Qto()) / 2).ToString("F1", Program.AltCulture)));
logger.WriteLine(string.Format("Prüfzeit{0}={1}", fId, wm0r.TargetTime().ToString("F0")));
logger.WriteLine(string.Format("Prüfbereich100_110{0}={1}", fId, (pb_100_110 ? 1 : 0)));
logger.WriteLine(string.Format("PrüfbereichMin{0}={1}", fId, (pb_100_110 ? 100 : 90)));
logger.WriteLine(string.Format("PrüfbereichMax{0}={1}", fId, (pb_100_110 ? 110 : 100)));
logger.WriteLine(string.Format("QBezeichnung{0}={1}", fId, qBz));
if (testInfos[j].PruefungsNrLog > 0)
{
/// Test is not an adjustment
logger.WriteLine(string.Format("PosFehlergrenze{0}={1}", fId, (wm0r.ErrLimHi() - wm0r.Uncertainty()).ToString("F1", Program.AltCulture)));
logger.WriteLine(string.Format("NegFehlergrenze{0}={1}", fId, (wm0r.ErrLimLo() + wm0r.Uncertainty()).ToString("F1", Program.AltCulture)));
logger.WriteLine(string.Format("PosFehlergrenzeWarm{0}=0,0", fId));
logger.WriteLine(string.Format("NegFehlergrenzeWarm{0}=0,0", fId));
}
}
else
{
logger.WriteLine(string.Format("Durchfluss{0}=0,0", fId));
logger.WriteLine(string.Format("Prüfzeit{0}=0", fId));
logger.WriteLine(string.Format("Prüfbereich100_110{0}=0", fId));
logger.WriteLine(string.Format("PrüfbereichMin{0}=0", fId));
logger.WriteLine(string.Format("PrüfbereichMax{0}=0", fId));
logger.WriteLine(string.Format("QBezeichnung{0}=", fId));
/// Test is not an adjustment
logger.WriteLine(string.Format("PosFehlergrenze{0}={1}", fId, (wm0r.ErrLimHi() - wm0r.Uncertainty()).ToString("F1", Program.AltCulture)));
logger.WriteLine(string.Format("NegFehlergrenze{0}={1}", fId, (wm0r.ErrLimLo() + wm0r.Uncertainty()).ToString("F1", Program.AltCulture)));
logger.WriteLine(string.Format("PosFehlergrenzeWarm{0}=0,0", fId));
logger.WriteLine(string.Format("NegFehlergrenzeWarm{0}=0,0", fId));
}
}
}
logger.WriteLine(string.Format("GetriebeImpulse=2,000")); /// 2,000
logger.WriteLine(string.Format("OptikAufsetzen=0")); /// 0
logger.WriteLine(string.Format("Warm_Kalt=0")); /// 0
logger.WriteLine(string.Format("Füllzeit=0")); /// 0
logger.WriteLine(string.Format("EvakVorneZeit=0")); /// 0
logger.WriteLine(string.Format("EvakHintenZeit={0}", 0)); /// 90
logger.WriteLine(string.Format("Spüllzeit={0}", 0)); /// 60
logger.WriteLine(string.Format("Spüldurchfluss={0}", 0)); /// 5000,0
logger.WriteLine(string.Format("Abpresszeit={0}", 0)); /// 60
logger.WriteLine(string.Format("Abpressdruck={0}", 0)); /// 0,0
logger.WriteLine(string.Format("Entwässerzeit={0}", 0)); /// 10
logger.WriteLine(string.Format("DinA4_Format={0}", 0)); /// 0
logger.WriteLine(string.Format("Netzwerk_Format={0}", 0)); /// 0
logger.WriteLine(string.Format("Zählernr_Format={0}", 0)); /// 1
logger.WriteLine(string.Format("WZ_Gruppe=24")); /// 24 - iPerl
logger.WriteLine(string.Format("MittelwertTiefe={0}", 0)); /// 1
logger.WriteLine(string.Format("EndKriterium={0}", 0)); /// 0
logger.WriteLine(string.Format("Justieren={0}", 1)); /// 1
logger.WriteLine(string.Format("Bemerkung=")); ///
logger.WriteLine(string.Format("Gesamtprüfzeit={0}", totalTestTime.ToString("F0")));
logger.WriteLine(string.Format("Gegenprüfung={0}", 0)); /// 0
logger.WriteLine(string.Format("Geändert_von={0}", 6)); /// 4459
logger.WriteLine(string.Format("Geändert_am={0:dd.MM.yyyy HH:mm:ss}", DateTime.Now)); /// 29.05.2015 13:46:17
for (int i = 0; i < batch.WaterMeters.Count; i++)
{
Results.Entities.WaterMeter wMtr = batch.WaterMeters[i];
if ((wMtr != null) && (wMtr.ErrorFlags & ((int)ErrorFlagMask.E25 | (int)ErrorFlagMask.E26 | (int)ErrorFlagMask.E27 | (int)ErrorFlagMask.E28)) == 0)
else
{
bool testRsltIsMissing = false;
Results.Entities.MeterTestRslt[] wmtrs = new Results.Entities.MeterTestRslt[testInfos.Length];
logger.WriteLine(string.Format("Durchfluss{0}=0,0", fId));
logger.WriteLine(string.Format("Prüfzeit{0}=0", fId));
logger.WriteLine(string.Format("Prüfbereich100_110{0}=0", fId));
logger.WriteLine(string.Format("PrüfbereichMin{0}=0", fId));
logger.WriteLine(string.Format("PrüfbereichMax{0}=0", fId));
logger.WriteLine(string.Format("QBezeichnung{0}=", fId));
}
}
}
logger.WriteLine(string.Format("GetriebeImpulse=2,000")); /// 2,000
logger.WriteLine(string.Format("OptikAufsetzen=0")); /// 0
logger.WriteLine(string.Format("Warm_Kalt=0")); /// 0
logger.WriteLine(string.Format("Füllzeit=0")); /// 0
logger.WriteLine(string.Format("EvakVorneZeit=0")); /// 0
logger.WriteLine(string.Format("EvakHintenZeit={0}", 0)); /// 90
logger.WriteLine(string.Format("Spüllzeit={0}", 0)); /// 60
logger.WriteLine(string.Format("Spüldurchfluss={0}", 0)); /// 5000,0
logger.WriteLine(string.Format("Abpresszeit={0}", 0)); /// 60
logger.WriteLine(string.Format("Abpressdruck={0}", 0)); /// 0,0
logger.WriteLine(string.Format("Entwässerzeit={0}", 0)); /// 10
logger.WriteLine(string.Format("DinA4_Format={0}", 0)); /// 0
logger.WriteLine(string.Format("Netzwerk_Format={0}", 0)); /// 0
logger.WriteLine(string.Format("Zählernr_Format={0}", 0)); /// 1
logger.WriteLine(string.Format("WZ_Gruppe=24")); /// 24 - iPerl
logger.WriteLine(string.Format("MittelwertTiefe={0}", 0)); /// 1
logger.WriteLine(string.Format("EndKriterium={0}", 0)); /// 0
logger.WriteLine(string.Format("Justieren={0}", 1)); /// 1
logger.WriteLine(string.Format("Bemerkung=")); ///
logger.WriteLine(string.Format("Gesamtprüfzeit={0}", totalTestTime.ToString("F0")));
logger.WriteLine(string.Format("Gegenprüfung={0}", 0)); /// 0
logger.WriteLine(string.Format("Geändert_von={0}", 6)); /// 4459
logger.WriteLine(string.Format("Geändert_am={0:dd.MM.yyyy HH:mm:ss}", DateTime.Now)); /// 29.05.2015 13:46:17
for (int i = 0; i < batch.WaterMeters.Count; i++)
{
Results.Entities.WaterMeter wMtr = batch.WaterMeters[i];
if ((wMtr == null) || (wMtr.ErrorFlags & ((int)ErrorFlagMask.E25 | (int)ErrorFlagMask.E26 | (int)ErrorFlagMask.E27 | (int)ErrorFlagMask.E28)) != 0)
{
logger.WriteLine();
logger.WriteLine(string.Format("[Zählerdaten_{0}]", wMtr.WMPosition));
logger.WriteLine("geprüft=0");
}
else
{
bool testRsltIsMissing = false;
Results.Entities.MeterTestRslt[] wmtrs = new Results.Entities.MeterTestRslt[testInfos.Length];
for (int j = 0; j < testInfos.Length; j++)
{
if (testInfos[j].PruefungsNrLog != 0)
{
wmtrs[j] = wMtr.GetMeterTestRslt(testInfos[j].TestName);
if (wmtrs[j] == null) testRsltIsMissing = true; /// Missing test result for one of specified tests
}
}
logger.WriteLine();
logger.WriteLine(string.Format("[Zählerdaten_{0}]", wMtr.WMPosition));
if (testRsltIsMissing)
{
logger.WriteLine("geprüft=0");
}
else
{
logger.WriteLine("geprüft=1");
logger.WriteLine(string.Format("Zählernummer="));
logger.WriteLine(string.Format("FertigsNr={0}", wMtr.SerialNr));
logger.WriteLine(string.Format("bestanden={0}", wMtr.Passed ? 1 : 0)); /// 1
logger.WriteLine(string.Format("Prüfflag={0}", wMtr.HydrPruefung)); /// 96
logger.WriteLine(string.Format("FestWertWZ=0")); /// 0
logger.WriteLine(string.Format("Dicht={0}", 1)); /// 1
logger.WriteLine(string.Format("PrüfIndex={0}", wMtr.Pruefindex)); /// 7301
logger.WriteLine(string.Format("GeprüftIndex=1")); /// 1
for (int j = 0; j < testInfos.Length; j++)
{
if (testInfos[j].PruefungsNrLog != 0)
{
wmtrs[j] = wMtr.GetMeterTestRslt(testInfos[j].TestName);
if (wmtrs[j] == null) testRsltIsMissing = true; /// Missing test result for one of specified tests
}
}
Results.Entities.MeterTestRslt mtr = wmtrs[j];
string flID = testInfos[j].PruefungsNrLog.ToString("D2");
logger.WriteLine();
logger.WriteLine(string.Format("[Zählerdaten_{0}]", wMtr.WMPosition));
if (testRsltIsMissing)
{
logger.WriteLine("geprüft=0");
}
else
{
logger.WriteLine("geprüft=1");
logger.WriteLine(string.Format("Zählernummer="));
logger.WriteLine(string.Format("FertigsNr={0}", wMtr.SerialNr));
logger.WriteLine(string.Format("bestanden={0}", wMtr.Passed ? 1 : 0)); /// 1
logger.WriteLine(string.Format("Prüfflag={0}", wMtr.HydrPruefung)); /// 96
logger.WriteLine(string.Format("FestWertWZ=0")); /// 0
logger.WriteLine(string.Format("Dicht={0}", 1)); /// 1
logger.WriteLine(string.Format("PrüfIndex={0}", wMtr.Pruefindex)); /// 7301
logger.WriteLine(string.Format("GeprüftIndex=1")); /// 1
for (int j = 0; j < testInfos.Length; j++)
{
if (testInfos[j].PruefungsNrLog != 0)
if (mtr != null)
{
Results.Entities.MeterTestRslt mtr = wmtrs[j];
string flID = testInfos[j].PruefungsNrLog.ToString("D2");
if (mtr != null)
{
logger.WriteLine(string.Format("Q{0}bestanden={1}", flID, 1));
logger.WriteLine(string.Format("Durchfluss{0}={1}", flID, Utils.DoubleToStr(Units.ConvertTo(Unit.lph, mtr.FlowVolume()), 5, true)));
logger.WriteLine(string.Format("Fehler{0}={1}", flID, mtr.Error.ToString(Program.AltCulture)));
logger.WriteLine(string.Format("ZeitImpulse{0}={1}", flID, mtr.TestTime.ToString(Program.AltCulture)));
logger.WriteLine(string.Format("Impulse{0}={1}", flID, 0));
logger.WriteLine(string.Format("Volumen{0}={1}", flID, mtr.VolumeMeter.ToString(Program.AltCulture)));
logger.WriteLine(string.Format("KorrFehler{0}={1}", flID, ((testInfos[j].TestName == "Q2") && mtr.WaterMeter.Q2CorrectionDone) ? mtr.WaterMeter.Q2ErrWOCorrection.ToString(Program.AltCulture)
: mtr.Error.ToString(Program.AltCulture)));
logger.WriteLine(string.Format("KorrDurchfluss{0}={1}", flID, 0));
logger.WriteLine(string.Format("Q{0}KorrBestanden={1}", flID, 0));
logger.WriteLine(string.Format("Anfangsstand{0}={1}", flID, 0)); /// TODO
logger.WriteLine(string.Format("Endstand{0}={1}", flID, 0)); /// TODO
logger.WriteLine(string.Format("QMittelwert{0}={1}", flID, Utils.DoubleToStr(Units.ConvertTo(Unit.lph, mtr.FlowVolume()), 5, true)));
logger.WriteLine(string.Format("QStandardAbweichung{0}={1}", flID, 0));
logger.WriteLine(string.Format("ImpedanzMittelwert{0}={1}", flID, "0,00000"));
logger.WriteLine(string.Format("AusfallGrund{0}={1}", flID, 0));
}
logger.WriteLine(string.Format("Q{0}bestanden={1}", flID, 1));
logger.WriteLine(string.Format("Durchfluss{0}={1}", flID, Utils.DoubleToStr(Units.ConvertTo(Unit.lph, mtr.FlowVolume()), 5, true)));
logger.WriteLine(string.Format("Fehler{0}={1}", flID, mtr.Error.ToString(Program.AltCulture)));
logger.WriteLine(string.Format("ZeitImpulse{0}={1}", flID, mtr.TestTime.ToString(Program.AltCulture)));
logger.WriteLine(string.Format("Impulse{0}={1}", flID, 0));
logger.WriteLine(string.Format("Volumen{0}={1}", flID, mtr.VolumeMeter.ToString(Program.AltCulture)));
logger.WriteLine(string.Format("KorrFehler{0}={1}", flID, ((testInfos[j].TestName == "Q2") && mtr.WaterMeter.Q2CorrectionDone) ? mtr.WaterMeter.Q2ErrWOCorrection.ToString(Program.AltCulture)
: mtr.Error.ToString(Program.AltCulture)));
logger.WriteLine(string.Format("KorrDurchfluss{0}={1}", flID, 0));
logger.WriteLine(string.Format("Q{0}KorrBestanden={1}", flID, 0));
logger.WriteLine(string.Format("Anfangsstand{0}={1}", flID, 0)); /// TODO
logger.WriteLine(string.Format("Endstand{0}={1}", flID, 0)); /// TODO
logger.WriteLine(string.Format("QMittelwert{0}={1}", flID, Utils.DoubleToStr(Units.ConvertTo(Unit.lph, mtr.FlowVolume()), 5, true)));
logger.WriteLine(string.Format("QStandardAbweichung{0}={1}", flID, 0));
logger.WriteLine(string.Format("ImpedanzMittelwert{0}={1}", flID, "0,00000"));
logger.WriteLine(string.Format("AusfallGrund{0}={1}", flID, 0));
}
}
logger.WriteLine(string.Format("AusfallGrundGesamt={0}", 0));
logger.WriteLine(string.Format("AuftragNum={0}", wMtr.PurchaseOrder));
logger.WriteLine(string.Format("MaterialNum={0}", 38140500));
logger.WriteLine(string.Format("Prefix={0}", "8SEN01"));
logger.WriteLine(string.Format("Suffix="));
logger.WriteLine(string.Format("Palette={0}", 0));
logger.WriteLine(string.Format("Umkarton={0}", 0));
logger.WriteLine(string.Format("ZNr_komplett="));
logger.WriteLine(string.Format("OptikBewertung=0,00000"));
logger.WriteLine(string.Format("IdProduziert={0}", 0));
logger.WriteLine(string.Format("Calibration_alt={0}", wMtr.OrigCalibFactor));
logger.WriteLine(string.Format("Calibration={0}", wMtr.CalibFactor));
logger.WriteLine(string.Format("Firmware={0}", wMtr.FWVersion)); /// 5.066
logger.WriteLine(string.Format("FlexFlowFehler={0}", 0)); /// 0
logger.WriteLine(string.Format("FlexFlowAuftrag={0}", 0)); /// 4248189
logger.WriteLine(string.Format("JustierWert=0,2")); /// 0,2
logger.WriteLine(string.Format("Corrected2Hz={0}", wMtr.Hz2CorrectionDone ? 1 : 0));
logger.WriteLine(string.Format("Q2Corrected={0}", wMtr.Q2CorrectionDone ? 1 : 0));
logger.WriteLine(string.Format("Q2CorrectionRight={0}", wMtr.Q2CorrLR));
logger.WriteLine(string.Format("Q2CorrectionLeft={0}", wMtr.Q2CorrRL));
logger.WriteLine(string.Format("Q2CorrectionFlowRight={0}", wMtr.Q2CorrFlowRight));
logger.WriteLine(string.Format("FlowDirectionRight={0}", wMtr.Q2CorrFlowRight));
logger.WriteLine(string.Format("Position={0}", wMtr.WMPosition));
}
}
}
logger.WriteLine();
logger.WriteLine("[Prüfdaten]");
///
logger.WriteLine(string.Format("Startzeit={0}", batch.StartTime.ToString("HH:mm:ss")));
logger.WriteLine(string.Format("Endezeit={0}", batch.EndTime.ToString("HH:mm:ss")));
logger.WriteLine(string.Format("Datum={0}", batch.StartTime.ToString("dd.MM.yyyy")));
logger.WriteLine(string.Format("GesamtDauer={0}", batch.EndTime.Subtract(batch.StartTime).TotalSeconds));
logger.WriteLine(string.Format("Dichtprüfung={0}", 0)); /// 1
foreach (var cti in testInfos)
{
if (cti.PruefungsNrLog != 0)
{
string pNrStr = cti.PruefungsNrLog.ToString("D2");
Results.Entities.TestRslt tr = wm0.GetTestRslt(cti.TestName);
if (tr != null)
{
logger.WriteLine(string.Format("Q{0}_geprüft=1", pNrStr));
WriteOneToDisk(logger, pNrStr, tr);
}
else
{
logger.WriteLine(string.Format("Q{0}_geprüft=0", pNrStr));
}
}
logger.WriteLine(string.Format("AusfallGrundGesamt={0}", 0));
logger.WriteLine(string.Format("AuftragNum={0}", wMtr.PurchaseOrder));
logger.WriteLine(string.Format("MaterialNum={0}", 38140500));
logger.WriteLine(string.Format("Prefix={0}", "8SEN01"));
logger.WriteLine(string.Format("Suffix="));
logger.WriteLine(string.Format("Palette={0}", 0));
logger.WriteLine(string.Format("Umkarton={0}", 0));
logger.WriteLine(string.Format("ZNr_komplett="));
logger.WriteLine(string.Format("OptikBewertung=0,00000"));
logger.WriteLine(string.Format("IdProduziert={0}", 0));
logger.WriteLine(string.Format("Calibration_alt={0}", wMtr.OrigCalibFactor));
logger.WriteLine(string.Format("Calibration={0}", wMtr.CalibFactor));
logger.WriteLine(string.Format("Firmware={0}", wMtr.FWVersion)); /// 5.066
logger.WriteLine(string.Format("FlexFlowFehler={0}", 0)); /// 0
logger.WriteLine(string.Format("FlexFlowAuftrag={0}", 0)); /// 4248189
logger.WriteLine(string.Format("JustierWert=0,2")); /// 0,2
logger.WriteLine(string.Format("Corrected2Hz={0}", wMtr.Hz2CorrectionDone ? 1 : 0));
logger.WriteLine(string.Format("Q2Corrected={0}", wMtr.Q2CorrectionDone ? 1 : 0));
logger.WriteLine(string.Format("Q2CorrectionRight={0}", wMtr.Q2CorrLR));
logger.WriteLine(string.Format("Q2CorrectionLeft={0}", wMtr.Q2CorrRL));
logger.WriteLine(string.Format("Q2CorrectionFlowRight={0}", wMtr.Q2CorrFlowRight));
logger.WriteLine(string.Format("FlowDirectionRight={0}", wMtr.Q2CorrFlowRight));
logger.WriteLine(string.Format("Position={0}", wMtr.WMPosition));
}
}
}
logger.WriteLine(string.Format("FüllenDruck={0}", 0)); /// 0,00
logger.WriteLine(string.Format("EvakVorneDruck={0}", 0)); /// 0,00
logger.WriteLine(string.Format("EvakHintenDruck={0}", 0)); /// -1,00
logger.WriteLine(string.Format("Spüldurchfluss={0}", 0)); /// 4722,00
logger.WriteLine(string.Format("AbpressDruck={0}", 0)); /// 20,13
logger.WriteLine(string.Format("AbpressDruckVorne={0}", 0)); /// 20,16
logger.WriteLine(string.Format("AbpressDruckBeginn={0}", 0)); /// 0,00
logger.WriteLine(string.Format("EntwässernDruck={0}", 0)); /// -1,00
logger.WriteLine(string.Format("ZaehlwerktestAnfang={0}", 0)); /// 0,00000
logger.WriteLine(string.Format("ZaehlwerktestEnde={0}", 0)); /// 0,00000
logger.WriteLine(string.Format("ZaehlwerktestImpulse={0}", 0)); /// 0
logger.WriteLine(string.Format("MeldungZaehler={0}", 0)); /// 0
logger.WriteLine();
logger.WriteLine("[Prüfdaten]");
///
logger.WriteLine(string.Format("Startzeit={0}", batch.StartTime.ToString("HH:mm:ss")));
logger.WriteLine(string.Format("Endezeit={0}", batch.EndTime.ToString("HH:mm:ss")));
logger.WriteLine(string.Format("Datum={0}", batch.StartTime.ToString("dd.MM.yyyy")));
logger.WriteLine(string.Format("GesamtDauer={0}", batch.EndTime.Subtract(batch.StartTime).TotalSeconds));
logger.WriteLine(string.Format("Dichtprüfung={0}", 0)); /// 1
logger.WriteLine();
logger.WriteLine("[allgemein]");
///
logger.WriteLine(string.Format("Prüfer={0}", batch.UserName));
logger.WriteLine(string.Format("PrüferID={0}", batch.UserNumber));
logger.WriteLine(string.Format("AuftragKompakt={0}", 0)); /// 4248189
logger.WriteLine(string.Format("VariantenCode={0}", "IP")); /// IPRO04CMECAZDKAMMXB1AA2011201101AEUAA1XX314NM1XXXLX
logger.WriteLine(string.Format("SollStückzahl={0}", 3)); /// 1000
logger.WriteLine(string.Format("IstStückzahl={0}", 3)); /// 61
logger.WriteLine(string.Format("Bemerkung=§")); /// §
logger.WriteLine(string.Format("BetriebsArt={0}", 3)); /// C
logger.WriteLine(string.Format("BuchstabenVorEtikett=8SEN01")); /// 8SEN01
logger.WriteLine(string.Format("BuchstabenNachEtikett=")); ///
logger.WriteLine(string.Format("StehenderStartStop={0}", 0)); /// 0
logger.WriteLine(string.Format("ID_WzPruefreihe={0}", batch.BatchNr)); /// 2583
logger.WriteLine(string.Format("ID_Pruefstand={0}", 18000 + batch.TestBenchId)); /// 18004
logger.WriteLine(string.Format("DichteKorrektur=0,00000")); /// 0,00000
logger.WriteLine(string.Format("LuftauftriebsKorrekturfaktor=1,00000")); /// 1,00100
logger.WriteLine(string.Format("ProgrammVersion={0}", Program.Version));
logger.WriteLine(string.Format("LetzteAenderung={0}", Program.BuildDateTime.ToShortDateString()));
logger.WriteLine(string.Format("QuarzTakt={0}", 0)); /// 1953,125
/// Close the file
logger.Close();
logger = null;
}
catch (Exception exc)
foreach (var cti in testInfos)
{
log.ErrorFormat("Results not saved to disk: {0}", exc.Message);
return Retv.Error;
if (cti.PruefungsNrLog != 0)
{
string pNrStr = cti.PruefungsNrLog.ToString("D2");
Results.Entities.TestRslt tr = wm0.GetTestRslt(cti.TestName);
if (tr != null)
{
logger.WriteLine(string.Format("Q{0}_geprüft=1", pNrStr));
WriteOneToDisk(logger, pNrStr, tr);
}
else
{
logger.WriteLine(string.Format("Q{0}_geprüft=0", pNrStr));
}
}
}
logger.WriteLine(string.Format("FüllenDruck={0}", 0)); /// 0,00
logger.WriteLine(string.Format("EvakVorneDruck={0}", 0)); /// 0,00
logger.WriteLine(string.Format("EvakHintenDruck={0}", 0)); /// -1,00
logger.WriteLine(string.Format("Spüldurchfluss={0}", 0)); /// 4722,00
logger.WriteLine(string.Format("AbpressDruck={0}", 0)); /// 20,13
logger.WriteLine(string.Format("AbpressDruckVorne={0}", 0)); /// 20,16
logger.WriteLine(string.Format("AbpressDruckBeginn={0}", 0)); /// 0,00
logger.WriteLine(string.Format("EntwässernDruck={0}", 0)); /// -1,00
logger.WriteLine(string.Format("ZaehlwerktestAnfang={0}", 0)); /// 0,00000
logger.WriteLine(string.Format("ZaehlwerktestEnde={0}", 0)); /// 0,00000
logger.WriteLine(string.Format("ZaehlwerktestImpulse={0}", 0)); /// 0
logger.WriteLine(string.Format("MeldungZaehler={0}", 0)); /// 0
logger.WriteLine();
logger.WriteLine("[allgemein]");
///
logger.WriteLine(string.Format("Prüfer={0}", batch.UserName));
logger.WriteLine(string.Format("PrüferID={0}", batch.UserNumber));
logger.WriteLine(string.Format("AuftragKompakt={0}", 0)); /// 4248189
logger.WriteLine(string.Format("VariantenCode={0}", "IP")); /// IPRO04CMECAZDKAMMXB1AA2011201101AEUAA1XX314NM1XXXLX
logger.WriteLine(string.Format("SollStückzahl={0}", 3)); /// 1000
logger.WriteLine(string.Format("IstStückzahl={0}", 3)); /// 61
logger.WriteLine(string.Format("Bemerkung=§")); /// §
logger.WriteLine(string.Format("BetriebsArt={0}", 3)); /// C
logger.WriteLine(string.Format("BuchstabenVorEtikett=8SEN01")); /// 8SEN01
logger.WriteLine(string.Format("BuchstabenNachEtikett=")); ///
logger.WriteLine(string.Format("StehenderStartStop={0}", 0)); /// 0
logger.WriteLine(string.Format("ID_WzPruefreihe={0}", batch.BatchNr)); /// 2583
logger.WriteLine(string.Format("ID_Pruefstand={0}", 18000 + batch.TestBenchId)); /// 18004
logger.WriteLine(string.Format("DichteKorrektur=0,00000")); /// 0,00000
logger.WriteLine(string.Format("LuftauftriebsKorrekturfaktor=1,00000")); /// 1,00100
logger.WriteLine(string.Format("ProgrammVersion={0}", Program.Version));
logger.WriteLine(string.Format("LetzteAenderung={0}", Program.BuildDateTime.ToShortDateString()));
logger.WriteLine(string.Format("QuarzTakt={0}", 0)); /// 1953,125
#endif
return Retv.OK; /// OK
}

View File

@ -1,5 +1,5 @@
///
/// Copyright (c) 2015-2018 Sensus Slovensko a.s.
/// Copyright (c) 2015-2019 Sensus Slovensko a.s.
///
//#define VERIFY_ACTIVE_MODE
//#define VERIFY_Q2_CORR_RESET
@ -37,7 +37,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
CmdTest, /// B = 11
Verify, /// C = 12
WrongIPerlType, /// D = 13
CalibFactorOoRange, /// E = 14
OutOfRange, /// E = 14
MissingTest, /// F = 15
RFPowerRecordMissing, /// 10H = 16
HeadDisabledByUser, /// 11H = 17
@ -264,11 +264,14 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
public const string NormalizeCalibrationV4FactorsStr = "Normalize calibration_V4";
public const string ReadQ2CorrectionStr = "Read Q2 corrections";
public const string ResetQ2CorrectionStr = "Reset Q2 correction";
public const string WriteQ2CorrectionStr = "Write Q2 correction";
public const string WriteQ2CorrectionAltStr = "Write Q2 correction Alt";
public const string WriteQ2CorrectionGreeceStr = "Write Q2 correction Greece";
public const string WriteQ2CorrectionRLStr = "Write Q2 correction R-L";
public const string WriteQ2CorrectionLRStr = "Write Q2 correction L-R";
public const string InitOrReadQ2CorrectionStr = "Init or read Q2 corrections";
public const string WriteQ2CorrectionStr = "Write Q2 correction"; /// No arguments
public const string WriteQ2CorrectionAltStr = "Write Q2 correction Alt"; /// No arguments
public const string WriteQ2CorrectionGreeceStr = "Write Q2 correction Greece"; /// Arguments: test_name
public const string WriteQ2CorrectionRLStr = "Write Q2 correction R-L"; /// Arguments: test_name
public const string WriteQ2CorrectionLRStr = "Write Q2 correction L-R"; /// Arguments: test_name
public const string UpdateQ2CorrectionsStr = "Update Q2 corrections"; /// Arguments: R-L_test_name L-R_test_name
public const string ConditnlUpdateQ2CorrectionsStr = "Conditional update of Q2 corrections"; /// Arguments: R-L_test_name L-R_test_name
public const string Reset2HzCorrectionStr = "Reset 2Hz correction";
public const string Write2HzCorrectionStr = "Write 2Hz correction";
@ -350,20 +353,8 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
/// </summary>
/// <param name="waterMetersCount">Number of text boxes for serial numbers</param>
public iPerlCommunicationForm(TestMethodCfg cfg, Test test, iPerlCommunicationParams testParams)
: this()
: this(cfg, new List<Test> { test }, new List<iPerlCommunicationParams> { testParams })
{
checkBoxesEditMode = false;
iPerlCommunicationForm.cfg = cfg;
iPerlCommunicationForm.tests = new List<Test>();
iPerlCommunicationForm.tests.Add(test);
iPerlCommunicationForm.multiTestParams = new List<iPerlCommunicationParams>();
iPerlCommunicationForm.multiTestParams.Add(testParams);
ProcessData.RegisterReaders = StateMachine.GetMetersPath(test).RegisterReaders;
activityLabel.Text = testParams.Activity;
ConstructorCommon();
}
/// <summary>
@ -592,6 +583,14 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
{
Text = Strings.Water_Meter_States;
saveButton.Text = Strings.Save;
sampleLabel1.Text = Strings.Direction_and_pulses_are_OK;
sampleLabel2.Text = Strings.There_are_no_opto_pulses;
sampleLabel3.Text = Strings.Direction_is_NOK;
samplePictureBox1.BackColor = OptoAndDirOKColor;
samplePictureBox2.BackColor = OptoNokColor;
samplePictureBox3.BackColor = DirNokColor;
}
@ -709,18 +708,18 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
for (int i = 0; i < multiTestParams.Count; i++ )
{
iPerlCommunicationParams testParams = multiTestParams[i];
Test currentTest = tests[i];
iPerlCommunicationParams currentTestParams = multiTestParams[i];
string currentActivity = currentTestParams.Activity; /// Current activity
TBF.UiBridge.TestProgressEventArgs.SetEstimatedTimes(new int[] { 0, 0, 10, 0, 140, 0, 0, 0 });
TBF.UiBridge.Bridge.OnTestProgress(null, new TBF.UiBridge.TestProgressEventArgs(tests[i], Config.Entities.Progress.JustStarted));
string activity = testParams.Activity; /// Current activity
if (threadID == 0)
{
rfidDataLogger.InfoFormat(""); /// Makes the log more readable when there is a lot of data
rfidDataLogger.WarnFormat("Activity = {0}", activity);
rfidDataLogger.WarnFormat("Activity = {0}", currentActivity);
rfidDataLogger.InfoFormat(""); /// Makes the log more readable when there is a lot of data
}
@ -758,25 +757,30 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
///
/// RFID communication activity call
///
if (ihead.Disabled || !ckbState[wmNr0]) error = CommErr.HeadDisabledByUser;
else if (activity.ToLower().Contains(ReadConfigurationStr.ToLower())) error = ReadConfiguration(threadID, ihead, wm, ref resultStr);
else if (activity.ToLower().Contains(SetTestModeStr.ToLower())) error = SetTestMode(threadID, ihead, wm, ref resultStr);
else if (activity.ToLower().Equals(SetActiveModeStr.ToLower())) error = SetActiveMode(threadID, ihead, wm, ref resultStr);
else if (activity.ToLower().Equals(ReadCalibrationStr.ToLower())) error = ReadCalibration(threadID, ihead, wm, ref resultStr);
else if (activity.ToLower().Equals(ReadCalibrationV4Str.ToLower())) error = ReadCalibrationV4(threadID, ihead, wm, ref resultStr);
else if (activity.ToLower().Contains(WriteCalibrationFactorStr.ToLower())) error = WriteCalibrationFactor(threadID, ihead, wm, ref resultStr);
else if (activity.ToLower().Contains(WriteCalibrationV4FactorsStr.ToLower())) error = WriteCalibrationV4Factors(threadID, ihead, wm, ref resultStr);
else if (activity.ToLower().Equals(NormalizeCalibrationFactorStr.ToLower())) error = NormalizeCalibrationFactor(threadID, ihead, wm, ref resultStr);
else if (activity.ToLower().Equals(NormalizeCalibrationV4FactorsStr.ToLower())) error = NormalizeCalibrationV4Factors(threadID, ihead, wm, ref resultStr);
else if (activity.ToLower().Equals(ResetQ2CorrectionStr.ToLower())) error = ResetQ2Correction(threadID, ihead, wm, ref resultStr);
else if (activity.ToLower().Equals(WriteQ2CorrectionStr.ToLower())) error = WriteQ2Correction(threadID, ihead, wm, ref resultStr, Q2CorrType.Standard, null, false);
else if (activity.ToLower().Equals(WriteQ2CorrectionAltStr.ToLower())) error = WriteQ2Correction(threadID, ihead, wm, ref resultStr, Q2CorrType.Dewa, null, false);
else if (activity.ToLower().Contains(WriteQ2CorrectionGreeceStr.ToLower())) error = WriteQ2Correction(threadID, ihead, wm, ref resultStr, Q2CorrType.Greece, activity.Substring(WriteQ2CorrectionGreeceStr.Length).Trim(), true);
else if (activity.ToLower().Contains(WriteQ2CorrectionRLStr.ToLower())) error = WriteQ2Correction(threadID, ihead, wm, ref resultStr, Q2CorrType.RL, activity.Substring(WriteQ2CorrectionRLStr.Length).Trim(), true);
else if (activity.ToLower().Contains(WriteQ2CorrectionLRStr.ToLower())) error = WriteQ2Correction(threadID, ihead, wm, ref resultStr, Q2CorrType.LR, activity.Substring(WriteQ2CorrectionLRStr.Length).Trim(), true);
else if (activity.ToLower().Equals(ReadQ2CorrectionStr.ToLower())) error = ReadQ2Correction(threadID, ihead, wm, ref resultStr);
else if (activity.ToLower().Equals(Reset2HzCorrectionStr.ToLower())) error = Reset2HzCorrection(threadID, ihead, wm, ref resultStr);
else if (activity.ToLower().Equals(Write2HzCorrectionStr.ToLower())) error = Write2HzCorrection(threadID, ihead, wm, ref resultStr);
if (ihead.Disabled || !ckbState[wmNr0]) error = CommErr.HeadDisabledByUser;
#if IPERL
else if (currentActivity.ToLower().Contains(ReadConfigurationStr.ToLower())) error = ReadConfiguration(threadID, ihead, wm, ref resultStr);
else if (currentActivity.ToLower().Contains(SetTestModeStr.ToLower())) error = SetTestMode(threadID, ihead, wm, ref resultStr);
else if (currentActivity.ToLower().Equals(SetActiveModeStr.ToLower())) error = SetActiveMode(threadID, ihead, wm, ref resultStr);
else if (currentActivity.ToLower().Equals(ReadCalibrationStr.ToLower())) error = ReadCalibration(threadID, ihead, wm, ref resultStr);
else if (currentActivity.ToLower().Equals(ReadCalibrationV4Str.ToLower())) error = ReadCalibrationV4(threadID, ihead, wm, ref resultStr);
else if (currentActivity.ToLower().Contains(WriteCalibrationFactorStr.ToLower())) error = WriteCalibrationFactor(threadID, ihead, wm, ref resultStr);
else if (currentActivity.ToLower().Contains(WriteCalibrationV4FactorsStr.ToLower())) error = WriteCalibrationV4Factors(threadID, ihead, wm, ref resultStr);
else if (currentActivity.ToLower().Equals(NormalizeCalibrationFactorStr.ToLower())) error = NormalizeCalibrationFactor(threadID, ihead, wm, ref resultStr);
else if (currentActivity.ToLower().Equals(NormalizeCalibrationV4FactorsStr.ToLower())) error = NormalizeCalibrationV4Factors(threadID, ihead, wm, ref resultStr);
else if (currentActivity.ToLower().Equals(ReadQ2CorrectionStr.ToLower())) error = ReadQ2Correction(threadID, ihead, wm, ref resultStr);
else if (currentActivity.ToLower().Equals(ResetQ2CorrectionStr.ToLower())) error = ResetQ2Correction(threadID, ihead, wm, ref resultStr);
else if (currentActivity.ToLower().Equals(InitOrReadQ2CorrectionStr.ToLower())) error = InitOrReadQ2Correction(threadID, ihead, wm, ref resultStr);
else if (currentActivity.ToLower().Equals(WriteQ2CorrectionStr.ToLower())) error = WriteQ2Correction(threadID, ihead, wm, currentTest, ref resultStr, Q2CorrType.Standard, null, false);
else if (currentActivity.ToLower().Equals(WriteQ2CorrectionAltStr.ToLower())) error = WriteQ2Correction(threadID, ihead, wm, currentTest, ref resultStr, Q2CorrType.Dewa, null, false);
else if (currentActivity.ToLower().Contains(WriteQ2CorrectionGreeceStr.ToLower())) error = WriteQ2Correction(threadID, ihead, wm, currentTest, ref resultStr, Q2CorrType.Greece, currentActivity.Substring(WriteQ2CorrectionGreeceStr.Length).Trim(), true);
else if (currentActivity.ToLower().Contains(WriteQ2CorrectionRLStr.ToLower())) error = WriteQ2Correction(threadID, ihead, wm, currentTest, ref resultStr, Q2CorrType.RL, currentActivity.Substring(WriteQ2CorrectionRLStr.Length).Trim(), true);
else if (currentActivity.ToLower().Contains(WriteQ2CorrectionLRStr.ToLower())) error = WriteQ2Correction(threadID, ihead, wm, currentTest, ref resultStr, Q2CorrType.LR, currentActivity.Substring(WriteQ2CorrectionLRStr.Length).Trim(), true);
else if (currentActivity.ToLower().Contains(UpdateQ2CorrectionsStr.ToLower())) error = WriteQ2Correction(threadID, ihead, wm, currentTest, ref resultStr, Q2CorrType.Update, currentActivity.Substring(UpdateQ2CorrectionsStr.Length).Trim(), true);
else if (currentActivity.ToLower().Contains(ConditnlUpdateQ2CorrectionsStr.ToLower())) error = WriteQ2Correction(threadID, ihead, wm, currentTest, ref resultStr, Q2CorrType.ConditionalUpdate, currentActivity.Substring(ConditnlUpdateQ2CorrectionsStr.Length).Trim(), true);
else if (currentActivity.ToLower().Equals(Reset2HzCorrectionStr.ToLower())) error = Reset2HzCorrection(threadID, ihead, wm, ref resultStr);
else if (currentActivity.ToLower().Equals(Write2HzCorrectionStr.ToLower())) error = Write2HzCorrection(threadID, ihead, wm, ref resultStr);
#endif
else
{
error = CommErr.None;
@ -810,7 +814,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
wm.ResultCode |= (((int)error << 16) | ((int)tests[i].ItemNr << 20));
}
string failureCauseLocal = string.Format(Strings.failed_0_1_exclamation, activity, error);
string failureCauseLocal = string.Format(Strings.failed_0_1_exclamation, currentActivity, error);
OnCommCompleted(null, new CommCompletedEventArgs(threadID, wmNr0, ihead, wm, failureCauseLocal, error));
rfidDataLogger.ErrorFormat("Group={0}, Board={1}, {2}", currentGroup, ihead.MuxBoardNrOrGroup14, failureCauseLocal);
ihead.CommFailed = true;
@ -1228,7 +1232,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
newCalibFactor = ihead.CalculateNewCalibFactor(ihead.LastTestResult, ihead.CalibFactor, ihead.FactorLimitLo, ihead.FactorLimitHi);
}
if (newCalibFactor == 0) return CommErr.CalibFactorOoRange;
if (newCalibFactor == 0) return CommErr.OutOfRange;
///
/// Start communication with iPerl
@ -1396,7 +1400,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
return CommErr.WrongArguments;
}
if (newCalibFactor == 0 || newCalibFactorLNA == 0) return CommErr.CalibFactorOoRange;
if (newCalibFactor == 0 || newCalibFactorLNA == 0) return CommErr.OutOfRange;
///
/// Start communication with iPerl
@ -1488,6 +1492,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
return avgTestRslt;
}
#if IPERL
/// <summary>
/// Normalize calibration factor in case ti is close to value 8000.
@ -1665,13 +1670,14 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
resultStr = "Q2 corrections successfully read";
ihead.Q2CorrLR = (int)((SByte)rdData[0]);
ihead.Q2CorrRL = (int)((SByte)rdData[1]);
#if IPERL
ihead.Q2CorrectionDone = (ihead.Q2CorrRL != 0) || (ihead.Q2CorrLR != 0);
if (wm != null)
{
wm.Q2CorrLR = ihead.Q2CorrLR;
wm.Q2CorrRL = ihead.Q2CorrRL;
wm.Q2CorrectionDone = ihead.Q2CorrectionDone;
}
#endif
}
ClosePort(threadId, ihead); /// Close RFID port
@ -1688,6 +1694,18 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
/// <param name="resultStr">String passed to caller</param>
/// <returns>true on success</returns>
static CommErr ResetQ2Correction(int threadId, IperlHead ihead, Results.Entities.WaterMeter wm, ref string resultStr)
{
return SetQ2Correction(threadId, ihead, wm, ref resultStr, 0, 0);
}
/// <summary>
/// Reset both Q2 correction factors in the memory to 0.
/// Read them back to verify factors were written correctly.
/// </summary>
/// <param name="ihead">Water meter object</param>
/// <param name="resultStr">String passed to caller</param>
/// <returns>true on success</returns>
static CommErr SetQ2Correction(int threadId, IperlHead ihead, Results.Entities.WaterMeter wm, ref string resultStr, int factorLR, int factorRL)
{
if (ihead.CommFailed) return CommErr.CommFailed;
@ -1696,13 +1714,24 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
CommErr error = CommErr.Write;
/// Write zero Q2 correction
byte[] wrData = new byte[2] { 0, 0 };
byte[] wrData = new byte[2] { (byte)factorLR, (byte)factorRL };
///
for (int j = 0; j < cfg.MaxCommRetries; j++)
{
if (0 == WriteRequestPort(threadId, ihead, MessageID.MetrologyMemory, Q2CorrFactorsAddr, wrData.Length, wrData, cfg.CommTimeout))
{
error = CommErr.None;
ihead.Q2CorrRL = factorRL;
ihead.Q2CorrLR = factorLR;
ihead.Q2CorrectionDone = (factorRL != 0) || (factorLR != 0);
if (wm != null)
{
wm.Q2CorrRL = ihead.Q2CorrRL;
wm.Q2CorrLR = ihead.Q2CorrLR;
wm.Q2CorrectionDone = ihead.Q2CorrectionDone;
}
error = CommErr.None;
break;
}
}
@ -1744,6 +1773,21 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
}
static CommErr InitOrReadQ2Correction(int threadId, IperlHead ihead, Results.Entities.WaterMeter wm, ref string resultStr)
{
if (ihead.CommFailed) return CommErr.CommFailed;
if (wm.Pruefindex == 1)
{
return SetQ2Correction(threadId, ihead, wm, ref resultStr, ihead.InitQ2CorrLR, ihead.InitQ2CorrRL);
}
else
{
return ReadQ2Correction(threadId, ihead, wm, ref resultStr);
}
}
/// <summary>
/// Reset 2Hz correction factor in the memory to 0.
/// </summary>
@ -1810,42 +1854,56 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
/// <summary>
/// Write the calculated Q2 correction factors to the memory.
/// Read them back to verify factors were written correctly.
///
/// Write Q2 correction
/// Write Q2 correction Alt
/// Write Q2 correction [Greece | R-L | L-R] testname
/// Update Q2 corrections
/// Conditional update of Q2 corrections
/// </summary>
/// <param name="ihead">Water meter object</param>
/// <param name="resultStr">String passed to caller</param>
/// <returns>true on success</returns>
static CommErr WriteQ2Correction(int threadId, IperlHead ihead, Results.Entities.WaterMeter wm, ref string resultStr, Q2CorrType q2CorrType, string q2TestName, bool updateQ2adjByCalibFactor)
static CommErr WriteQ2Correction(int threadId, IperlHead ihead, Results.Entities.WaterMeter wm, Test test, ref string resultStr,
Q2CorrType q2CorrType, string restOfLine, bool updateQ2adjByCalibFactor)
{
//if (ihead == null || ihead.CommFailed) return CommErr.CommFailed;
if ((q2CorrType == Q2CorrType.ConditionalUpdate) && wm.PassedFromTests())
{
resultStr = string.Format("No Q2 correction update (iPerl is OK)");
return CommErr.None; /// No Q2 correction when doing conditional update and WM passed
}
Results.Entities.MeterTestRslt q2adjResult;
Results.Entities.TestData q2adjTestData;
///
if (string.IsNullOrEmpty(q2TestName))
if ((wm == null) || (ihead == null) || ihead.CommFailed) return CommErr.CommFailed;
Results.Entities.MeterTestRslt q2adjResult; /// The only test or the 1st test (the test in R-L direction)
Results.Entities.TestData q2adjTestData;
Results.Entities.MeterTestRslt q2adjResult2 = null; /// 2nd test name for a test in L-R direction
Results.Entities.TestData q2adjTestData2 = null;
string[] args = new string[0];
if (!string.IsNullOrEmpty(restOfLine))
{
args = restOfLine.Split(new char[] { ' ' });
}
if (args.Length == 0)
{
/// In case of no test name argument, ihead.LastTestResult is used (if it exists)
if (ihead.LastTestResult != null && ihead.LastTestResult.TestDone)
{
q2adjResult = ihead.LastTestResult;
q2adjTestData = q2adjResult.TestRslt.TestData;
}
else
{
return CommErr.MissingTest;
}
if ((ihead.LastTestResult == null) || !ihead.LastTestResult.TestDone) return CommErr.MissingTest;
q2adjResult = ihead.LastTestResult;
q2adjTestData = q2adjResult.TestRslt.TestData;
}
else
else // if (args.Length >= 1)
{
/// Get test data is test name
q2adjTestData = wm.GetTestData(q2TestName);
if (q2adjTestData == null)
{
return CommErr.MissingTest;
}
else if (q2adjTestData.Repeats == 1)
/// Get test data from (the 1st) test name
q2adjTestData = wm.GetTestData(args[0]);
if (q2adjTestData == null) return CommErr.MissingTest;
if (q2adjTestData.Repeats == 1)
{
/// Find a test result if Repets == 1
q2adjResult = wm.GetMeterTestRslt(q2TestName);
q2adjResult = wm.GetMeterTestRslt(args[0]);
if (q2adjResult == null || !q2adjResult.TestDone) return CommErr.MissingTest;
}
else
@ -1854,41 +1912,137 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
q2adjResult = new Results.Entities.MeterTestRslt();
for (int i = 1; i <= q2adjTestData.Repeats; i++)
{
Results.Entities.MeterTestRslt oneMTR = wm.GetMeterTestRslt(string.Format("{0} ({1}/{2})", q2TestName, i, q2adjTestData.Repeats));
Results.Entities.MeterTestRslt oneMTR = wm.GetMeterTestRslt(string.Format("{0} ({1}/{2})", args[0], i, q2adjTestData.Repeats));
if (oneMTR == null || !oneMTR.TestDone) return CommErr.MissingTest;
q2adjResult.VolumeMeter += oneMTR.VolumeMeter;
q2adjResult.VolumeRef += oneMTR.VolumeRef;
}
#if IPERL
if (updateQ2adjByCalibFactor)
if (updateQ2adjByCalibFactor)
{
if (wm.OrigCalibFactor == 0) return CommErr.CalibFactorOoRange;
if (wm.OrigCalibFactor == 0) return CommErr.OutOfRange;
q2adjResult.VolumeMeter *= ((double)wm.CalibFactor / (double)wm.OrigCalibFactor);
}
#endif
q2adjResult.Error = Config.Formulas.ErrorFromVolumes(q2adjResult.VolumeMeter, q2adjResult.VolumeRef);
}
}
///
if (q2adjResult == null) return CommErr.CommFailed; /// This should never happen
ihead.Q2ErrWOCorrection = q2adjResult.Error;
ihead.Q2CorrectionDone = false;
ihead.Q2CorrRL = 0;
double q2Correction = 0;
Byte q2CorrRL = 0;
Byte q2CorrLR = 0;
///
/// Calculate Q2 correction form an error measured at Q2 (q2adjResult.Error)
///
if (!ihead.CalculateQ2CorrectionFactor(q2adjResult, q2adjTestData, out q2Correction))
if (args.Length >= 2)
{
return CommErr.None; /// Q2 error is too large, water meter failed anyhow
/// Get the 2nd test data from the 2nd test name
q2adjTestData2 = wm.GetTestData(args[1]);
if (q2adjTestData2 == null) return CommErr.MissingTest;
if (q2adjTestData2.Repeats == 1)
{
/// Find a test result if Repets == 1
q2adjResult2 = wm.GetMeterTestRslt(args[1]);
if (q2adjResult2 == null || !q2adjResult2.TestDone) return CommErr.MissingTest;
}
else
{
/// Calculate a summarized test result if Repeats > 1
q2adjResult2 = new Results.Entities.MeterTestRslt();
for (int i = 1; i <= q2adjTestData2.Repeats; i++)
{
Results.Entities.MeterTestRslt oneMTR = wm.GetMeterTestRslt(string.Format("{0} ({1}/{2})", args[1], i, q2adjTestData2.Repeats));
if (oneMTR == null || !oneMTR.TestDone) return CommErr.MissingTest;
q2adjResult2.VolumeMeter += oneMTR.VolumeMeter;
q2adjResult2.VolumeRef += oneMTR.VolumeRef;
}
if (updateQ2adjByCalibFactor)
{
if (wm.OrigCalibFactor == 0) return CommErr.OutOfRange;
q2adjResult2.VolumeMeter *= ((double)wm.CalibFactor / (double)wm.OrigCalibFactor);
}
q2adjResult2.Error = Config.Formulas.ErrorFromVolumes(q2adjResult2.VolumeMeter, q2adjResult2.VolumeRef);
}
}
if (q2adjResult == null) return CommErr.MissingTest; /// This should never happen
if ((q2CorrType == Q2CorrType.Update || q2CorrType == Q2CorrType.ConditionalUpdate) && (q2adjResult2 == null))
{
return CommErr.MissingTest; /// This should never happen, 2 test names required as activity arguments
}
///
/// Calculate Q2 correction factor(s) from an error measured at Q2
///
double q2Correction = 0;
double q2Correction2 = 0; /// L-R direction
///
if ((q2CorrType == Q2CorrType.Update) || (q2CorrType == Q2CorrType.ConditionalUpdate))
{
double errLimitLo = test.ErrLimLo + test.Uncertainty;
double errLimitHi = test.ErrLimHi - test.Uncertainty;
if (errLimitLo <= q2adjResult.Error && q2adjResult.Error <= errLimitHi &&
errLimitLo <= q2adjResult2.Error && q2adjResult2.Error <= errLimitHi)
{
/// Calculate updated Q2 correction factors
q2Correction = ihead.CalculateQ2CorrectionFactor(q2adjResult, q2adjTestData.Qfrom, wm.Q2CorrRL);
q2Correction2 = ihead.CalculateQ2CorrectionFactor(q2adjResult2, q2adjTestData2.Qfrom, wm.Q2CorrLR);
}
else
{
/// At least one of Q2 errors is out of range for the Q2 correction
/// Q2 error is out of range for the Q2 correction
log.WarnFormat("OoR => no Q2 correction: Pos={0}, PCB#={1}, ***Q2_RL err={2}%***, ***Q2_LR err={3}%***, CalTarget={4}%, [Lo={5}%, Hi={6}%]",
ihead.Name,
ihead.SerialNr,
q2adjResult.Error.ToString("F2"),
q2adjResult2.Error.ToString("F2"),
ihead.CalibTarget.ToString("F1"),
errLimitLo.ToString("F1"),
errLimitHi.ToString("F1"));
ihead.Q2CorrectionDone = false;
ihead.Q2CorrRL = wm.Q2CorrRL;
ihead.Q2CorrLR = wm.Q2CorrLR;
resultStr = string.Format("Q2 error is out of range => no Q2 correction");
return CommErr.OutOfRange;
}
}
else
{
double errLimitLo = q2adjTestData.ErrLimLo + q2adjTestData.Uncertainty;
double errLimitHi = q2adjTestData.ErrLimHi - q2adjTestData.Uncertainty;
if ((errLimitLo <= q2adjResult.Error) && (q2adjResult.Error <= errLimitHi))
{
/// Calculate Q2 correction factor (assuming it was 0 when doing a test)
ihead.Q2ErrWOCorrection = q2adjResult.Error;
q2Correction = ihead.CalculateQ2CorrectionFactor(q2adjResult, q2adjTestData.Qfrom);
}
else
{
/// Q2 error is out of range for the Q2 correction
log.WarnFormat("OoR => no Q2 correction: Pos={0}, PCB#={1}, ***Q2adj err={2}%***, CalTarget={3}%, [Lo={4}%, Hi={5}%]",
ihead.Name,
ihead.SerialNr,
q2adjResult.Error.ToString("F2"),
ihead.CalibTarget.ToString("F1"),
errLimitLo.ToString("F1"),
errLimitHi.ToString("F1"));
ihead.Q2ErrWOCorrection = q2adjResult.Error;
ihead.Q2CorrectionDone = false;
ihead.Q2CorrRL = 0;
resultStr = string.Format("Q2 error is out of range => no Q2 correction");
return CommErr.OutOfRange;
}
}
Byte q2CorrRL = 0;
Byte q2CorrLR = 0;
///
if (q2CorrType == Q2CorrType.Standard)
{
///
@ -1950,6 +2104,11 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
q2CorrLR = (byte)((int)Math.Round(q2Correction) & 0x000000FF);
}
else if ((q2CorrType == Q2CorrType.Update) || (q2CorrType == Q2CorrType.ConditionalUpdate))
{
q2CorrRL = (byte)((int)Math.Round(q2Correction) & 0x000000FF);
q2CorrLR = (byte)((int)Math.Round(q2Correction2) & 0x000000FF);
}
if (OpenPort(threadId, ihead) != 0) return CommErr.OpenPort; /// Open RFID port
@ -1957,7 +2116,9 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
if (q2CorrType == Q2CorrType.RL)
{
/// Write R->L Q2 correction factor only
///
/// Write R-L Q2 correction factor only
///
byte[] wrData = new byte[1] { q2CorrRL };
for (int j = 0; j < cfg.MaxCommRetries; j++)
{
@ -1970,7 +2131,9 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
}
else if (q2CorrType == Q2CorrType.LR)
{
/// Write L->R Q2 correction factor only
///
/// Write L-R Q2 correction factor only
///
byte[] wrData = new byte[1] { q2CorrLR };
for (int j = 0; j < cfg.MaxCommRetries; j++)
{
@ -1983,7 +2146,9 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
}
else
{
///
/// Write both Q2 correction factors
///
byte[] wrData = new byte[2] { q2CorrLR, q2CorrRL };
for (int j = 0; j < cfg.MaxCommRetries; j++)
{
@ -2013,20 +2178,12 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
error = CommErr.None;
resultStr = string.Format("Q2 factors: R-flow={0}, L-flow={1}", (SByte)q2CorrRFlow, (SByte)q2CorrLFlow);
rfidDataLogger.Warn(ihead.Name + ": " + resultStr);
ihead.Q2CorrectionDone = true;
ihead.Q2Correction = q2Correction;
if (q2CorrType != Q2CorrType.LR) ihead.Q2CorrRFlow = (int)(sbyte)q2CorrRFlow;
if (q2CorrType != Q2CorrType.RL) ihead.Q2CorrLFlow = (int)(sbyte)q2CorrLFlow;
#if IPERL
if (wm != null)
{
wm.Q2ErrWOCorrection = ihead.Q2ErrorWOCorrection;
wm.Q2CorrectionDone = ihead.Q2CorrectionDone;
wm.Q2Correction = ihead.Q2Correction;
if (q2CorrType != Q2CorrType.LR) wm.Q2CorrRFlow = ihead.Q2CorrRFlow;
if (q2CorrType != Q2CorrType.RL) wm.Q2CorrLFlow = ihead.Q2CorrLFlow;
}
#endif
wm.Q2ErrWOCorrection = ihead.Q2ErrorWOCorrection;
wm.Q2CorrectionDone = ihead.Q2CorrectionDone = true;
wm.Q2Correction = ihead.Q2Correction = q2Correction;
if (q2CorrType != Q2CorrType.LR) wm.Q2CorrRFlow = ihead.Q2CorrRFlow = (int)(sbyte)q2CorrRFlow;
if (q2CorrType != Q2CorrType.RL) wm.Q2CorrLFlow = ihead.Q2CorrLFlow = (int)(sbyte)q2CorrLFlow;
break;
}
}
@ -2053,8 +2210,8 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
ihead.Q2Correction = q2Correction;
if (q2CorrType != Q2CorrType.LR) ihead.Q2CorrRL = (int)(sbyte)q2CorrRL;
if (q2CorrType != Q2CorrType.RL) ihead.Q2CorrLR = (int)(sbyte)q2CorrLR;
#if IPERL
if (wm != null)
if (wm != null)
{
wm.Q2ErrWOCorrection = ihead.Q2ErrWOCorrection;
wm.Q2CorrectionDone = ihead.Q2CorrectionDone;
@ -2062,7 +2219,6 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
if (q2CorrType != Q2CorrType.LR) wm.Q2CorrRL = ihead.Q2CorrRL;
if (q2CorrType != Q2CorrType.RL) wm.Q2CorrLR = ihead.Q2CorrLR;
}
#endif
}
#endif
@ -2107,14 +2263,14 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
error = CommErr.None;
ihead.Hz2Correction = hz2CorrectionFactor;
ihead.Hz2CorrectionDone = true;
#if IPERL
if (wm != null)
if (wm != null)
{
wm.Hz2CorrectionDone = ihead.Hz2CorrectionDone;
wm.Hz2Correction = ihead.Hz2Correction;
}
#endif
break;
break;
}
}
@ -2137,15 +2293,15 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
resultStr = string.Format("2Hz factor = {0}", (SByte)hz2CorrectionByte);
rfidDataLogger.Warn(ihead.Name + ": " + resultStr);
ihead.Hz2CorrectionFactor = hz2CorrectionFactor;
#if IPERL
if (wm != null)
if (wm != null)
{
wm.Diff2Hz8Hz = ihead.Diff2Hz8Hz;
wm.Hz2CorrectionDone = ihead.Hz2CorrectionDone;
wm.Hz2Correction = ihead.Hz2CorrectionFactor;
}
#endif
break;
break;
}
}
}
@ -2156,14 +2312,13 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
rfidDataLogger.Warn(ihead.Name + ": " + resultStr);
ihead.Hz2CorrectionDone = true;
ihead.Hz2Correction = hz2CorrectionFactor;
#if IPERL
if (wm != null)
{
wm.Diff2Hz8Hz = ihead.Diff2Hz8Hz;
wm.Hz2CorrectionDone = ihead.Hz2CorrectionDone;
wm.Hz2Correction = ihead.Hz2Correction;
}
#endif
}
#endif
@ -2171,7 +2326,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
return error;
}
#endif /// IPERL
#endregion
/// <summary>

View File

@ -227,6 +227,12 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
this.checkBoxImage47 = new TBF.BenchControl.TestMethods.iPerlCommunication.CheckBoxImage();
this.checkBoxImage48 = new TBF.BenchControl.TestMethods.iPerlCommunication.CheckBoxImage();
this.saveButton = new System.Windows.Forms.Button();
this.samplePictureBox1 = new System.Windows.Forms.PictureBox();
this.samplePictureBox2 = new System.Windows.Forms.PictureBox();
this.samplePictureBox3 = new System.Windows.Forms.PictureBox();
this.sampleLabel1 = new System.Windows.Forms.Label();
this.sampleLabel2 = new System.Windows.Forms.Label();
this.sampleLabel3 = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.pictureBox48)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBox47)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBox46)).BeginInit();
@ -323,6 +329,9 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
((System.ComponentModel.ISupportInitialize)(this.checkBoxImage46)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.checkBoxImage47)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.checkBoxImage48)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.samplePictureBox1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.samplePictureBox2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.samplePictureBox3)).BeginInit();
this.SuspendLayout();
//
// wmTextBox2
@ -1289,7 +1298,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
//
this.activityLabel.AutoSize = true;
this.activityLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 27.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.activityLabel.Location = new System.Drawing.Point(31, 22);
this.activityLabel.Location = new System.Drawing.Point(189, 22);
this.activityLabel.Name = "activityLabel";
this.activityLabel.Size = new System.Drawing.Size(225, 42);
this.activityLabel.TabIndex = 95;
@ -2315,12 +2324,69 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
this.saveButton.Visible = false;
this.saveButton.Click += new System.EventHandler(this.saveButton_Click);
//
// samplePictureBox1
//
this.samplePictureBox1.Location = new System.Drawing.Point(7, 7);
this.samplePictureBox1.Name = "samplePictureBox1";
this.samplePictureBox1.Size = new System.Drawing.Size(23, 23);
this.samplePictureBox1.TabIndex = 193;
this.samplePictureBox1.TabStop = false;
//
// samplePictureBox2
//
this.samplePictureBox2.Location = new System.Drawing.Point(7, 32);
this.samplePictureBox2.Name = "samplePictureBox2";
this.samplePictureBox2.Size = new System.Drawing.Size(23, 23);
this.samplePictureBox2.TabIndex = 194;
this.samplePictureBox2.TabStop = false;
//
// samplePictureBox3
//
this.samplePictureBox3.Location = new System.Drawing.Point(7, 57);
this.samplePictureBox3.Name = "samplePictureBox3";
this.samplePictureBox3.Size = new System.Drawing.Size(23, 23);
this.samplePictureBox3.TabIndex = 195;
this.samplePictureBox3.TabStop = false;
//
// sampleLabel1
//
this.sampleLabel1.AutoSize = true;
this.sampleLabel1.Location = new System.Drawing.Point(36, 12);
this.sampleLabel1.Name = "sampleLabel1";
this.sampleLabel1.Size = new System.Drawing.Size(139, 13);
this.sampleLabel1.TabIndex = 196;
this.sampleLabel1.Text = "Direction and pulses are OK";
//
// sampleLabel2
//
this.sampleLabel2.AutoSize = true;
this.sampleLabel2.Location = new System.Drawing.Point(36, 37);
this.sampleLabel2.Name = "sampleLabel2";
this.sampleLabel2.Size = new System.Drawing.Size(125, 13);
this.sampleLabel2.TabIndex = 197;
this.sampleLabel2.Text = "There are no opto pulses";
//
// sampleLabel3
//
this.sampleLabel3.AutoSize = true;
this.sampleLabel3.Location = new System.Drawing.Point(36, 62);
this.sampleLabel3.Name = "sampleLabel3";
this.sampleLabel3.Size = new System.Drawing.Size(85, 13);
this.sampleLabel3.TabIndex = 198;
this.sampleLabel3.Text = "Direction is NOK";
//
// iPerlCommunicationForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.DarkGray;
this.ClientSize = new System.Drawing.Size(1161, 795);
this.Controls.Add(this.sampleLabel3);
this.Controls.Add(this.sampleLabel2);
this.Controls.Add(this.sampleLabel1);
this.Controls.Add(this.samplePictureBox3);
this.Controls.Add(this.samplePictureBox2);
this.Controls.Add(this.samplePictureBox1);
this.Controls.Add(this.saveButton);
this.Controls.Add(this.checkBoxImage48);
this.Controls.Add(this.checkBoxImage47);
@ -2620,6 +2686,9 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
((System.ComponentModel.ISupportInitialize)(this.checkBoxImage46)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.checkBoxImage47)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.checkBoxImage48)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.samplePictureBox1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.samplePictureBox2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.samplePictureBox3)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
@ -2821,6 +2890,12 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
private CheckBoxImage checkBoxImage47;
private CheckBoxImage checkBoxImage48;
private System.Windows.Forms.Button saveButton;
private System.Windows.Forms.PictureBox samplePictureBox1;
private System.Windows.Forms.PictureBox samplePictureBox2;
private System.Windows.Forms.PictureBox samplePictureBox3;
private System.Windows.Forms.Label sampleLabel1;
private System.Windows.Forms.Label sampleLabel2;
private System.Windows.Forms.Label sampleLabel3;
}
}

View File

@ -121,7 +121,7 @@
<data name="checkBoxImage1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -194,7 +194,7 @@
<data name="checkBoxImage2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -267,7 +267,7 @@
<data name="checkBoxImage3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -340,7 +340,7 @@
<data name="checkBoxImage4.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -413,7 +413,7 @@
<data name="checkBoxImage5.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -486,7 +486,7 @@
<data name="checkBoxImage6.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -559,7 +559,7 @@
<data name="checkBoxImage7.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -632,7 +632,7 @@
<data name="checkBoxImage8.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -705,7 +705,7 @@
<data name="checkBoxImage9.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -778,7 +778,7 @@
<data name="checkBoxImage10.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -851,7 +851,7 @@
<data name="checkBoxImage11.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -924,7 +924,7 @@
<data name="checkBoxImage12.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -997,7 +997,7 @@
<data name="checkBoxImage13.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -1070,7 +1070,7 @@
<data name="checkBoxImage14.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -1143,7 +1143,7 @@
<data name="checkBoxImage15.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -1216,7 +1216,7 @@
<data name="checkBoxImage16.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -1289,7 +1289,7 @@
<data name="checkBoxImage17.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -1362,7 +1362,7 @@
<data name="checkBoxImage18.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -1435,7 +1435,7 @@
<data name="checkBoxImage19.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -1508,7 +1508,7 @@
<data name="checkBoxImage20.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -1581,7 +1581,7 @@
<data name="checkBoxImage21.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -1654,7 +1654,7 @@
<data name="checkBoxImage22.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -1727,7 +1727,7 @@
<data name="checkBoxImage23.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -1800,7 +1800,7 @@
<data name="checkBoxImage24.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -1873,7 +1873,7 @@
<data name="checkBoxImage25.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -1946,7 +1946,7 @@
<data name="checkBoxImage26.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -2019,7 +2019,7 @@
<data name="checkBoxImage27.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -2092,7 +2092,7 @@
<data name="checkBoxImage28.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -2165,7 +2165,7 @@
<data name="checkBoxImage29.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -2238,7 +2238,7 @@
<data name="checkBoxImage30.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -2311,7 +2311,7 @@
<data name="checkBoxImage31.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -2384,7 +2384,7 @@
<data name="checkBoxImage32.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -2457,7 +2457,7 @@
<data name="checkBoxImage33.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -2530,7 +2530,7 @@
<data name="checkBoxImage34.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -2603,7 +2603,7 @@
<data name="checkBoxImage35.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -2676,7 +2676,7 @@
<data name="checkBoxImage36.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -2749,7 +2749,7 @@
<data name="checkBoxImage37.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -2822,7 +2822,7 @@
<data name="checkBoxImage38.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -2895,7 +2895,7 @@
<data name="checkBoxImage39.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -2968,7 +2968,7 @@
<data name="checkBoxImage40.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -3041,7 +3041,7 @@
<data name="checkBoxImage41.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -3114,7 +3114,7 @@
<data name="checkBoxImage42.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -3187,7 +3187,7 @@
<data name="checkBoxImage43.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -3260,7 +3260,7 @@
<data name="checkBoxImage44.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -3333,7 +3333,7 @@
<data name="checkBoxImage45.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -3406,7 +3406,7 @@
<data name="checkBoxImage46.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -3479,7 +3479,7 @@
<data name="checkBoxImage47.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B
@ -3552,7 +3552,7 @@
<data name="checkBoxImage48.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAA+KSURBVFhHdVh3lFz1ed04DSODAHVtU9ldrcqqCySKgTjH
Nn/4nJycJM7JMSfEWNjGAVMMOAScABamGhxABRkJISFpVxISQkjbe2+zu1N2eu+97czO7Oze3O/JS0LT
OVe/N++9mf3uV+73/X5FtbW1+DqEw2FEYlEFsVjsM0TjXBNxJFJJJNMpJJNciXQyhQwxlUgiN5VBNpNG
NptFejqLVC6L+EwWsZkcIoUcEphFHAWkZguYnpvDHPhP/ivwv+kZYCoHZPKYS+WQjya/0j7B1xIQ4/1B

View File

@ -53,6 +53,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
retVal.Add(iPerlCommunicationForm.NormalizeCalibrationV4FactorsStr);
retVal.Add(iPerlCommunicationForm.ReadQ2CorrectionStr);
retVal.Add(iPerlCommunicationForm.ResetQ2CorrectionStr);
retVal.Add(iPerlCommunicationForm.InitOrReadQ2CorrectionStr);
retVal.Add(iPerlCommunicationForm.WriteCalibrationFactorStr);
retVal.Add(iPerlCommunicationForm.WriteCalibrationV4FactorsStr);
retVal.Add(iPerlCommunicationForm.WriteQ2CorrectionStr);
@ -60,6 +61,8 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
retVal.Add(iPerlCommunicationForm.WriteQ2CorrectionGreeceStr);
retVal.Add(iPerlCommunicationForm.WriteQ2CorrectionRLStr);
retVal.Add(iPerlCommunicationForm.WriteQ2CorrectionLRStr);
retVal.Add(iPerlCommunicationForm.UpdateQ2CorrectionsStr);
retVal.Add(iPerlCommunicationForm.ConditnlUpdateQ2CorrectionsStr);
retVal.Add("Q2 corrected from Q2adj");
retVal.Add("Q2 correction check Q2bc Q2ac");
retVal.Add(iPerlCommunicationForm.SetActiveModeStr);

View File

@ -1,5 +1,5 @@
///
/// Copyright (c) 2017-2018 Sensus Slovensko a.s.
/// Copyright (c) 2017-2019 Sensus Slovensko a.s.
///
using System;
using System.Collections.Generic;
@ -8,14 +8,16 @@ using System.Text;
namespace TBF.BenchControl.TestMethods.iPerlCommunication
{
public enum Q2CorrType
{
public enum Q2CorrType
{
None,
Standard,
Dewa,
Greece,
Standard,
Dewa,
Greece,
RL,
LR,
Count
}
Update,
ConditionalUpdate,
Count,
}
}

View File

@ -1,13 +1,16 @@
///
/// Copyright (c) 2018 Sensus Slovensko a.s.
/// Copyright (c) 2018-2019 Sensus Slovensko a.s.
///
using System;
using log4net;
using Config.Entities;
namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead
{
public class FlowDirectionDetection
{
private static readonly ILog log = LogManager.GetLogger(typeof(IperlHead));
const int FIFO_SIZE = 64; /// 8 sec. @ 8Hz
const double MAX_OPTO_DROPOUT = 4.5; /// sec.
@ -109,31 +112,37 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead
/// Verify whether the flow direction is correct
/// </summary>
/// <returns>OptoHeadState.OptoAndDirOK, OptoHeadState.OptoNok or OptoHeadState.DirNok</returns>
public OptoHeadState CheckFlowDirection(Counting counting)
public OptoHeadState CheckFlowDirection(Counting counting, string iPerlHeadName)
{
if (!AreFifoDataValid()) return OptoHeadState.OptoNok;
decimal numer = N * sumXY - sumX * sumY;
decimal denom = N * sumXX - sumX * sumX;
if (denom == 0) return OptoHeadState.DirNok;
/// Calculate the slope of the regressed line, determine min. and max.
double slope = (double)(numer / denom);
if (slope > maxSlope) maxSlope = slope;
if (slope < minSlope) minSlope = slope;
if ((counting == Counting.Positive) && (maxSlope > -2 * minSlope))
try
{
return OptoHeadState.OptoAndDirOK;
decimal numer = N * sumXY - sumX * sumY;
decimal denom = N * sumXX - sumX * sumX;
if (denom == 0) return OptoHeadState.DirNok;
/// Calculate the slope of the regressed line, determine min. and max.
double slope = (double)(numer / denom);
if (slope > maxSlope) maxSlope = slope;
if (slope < minSlope) minSlope = slope;
if ( counting == Counting.Arbitrary ||
(counting == Counting.Positive && maxSlope > Math.Abs(2 * minSlope)) ||
(counting == Counting.Negative && minSlope < -Math.Abs(2 * maxSlope)))
{
return OptoHeadState.OptoAndDirOK;
}
else
{
return OptoHeadState.DirNok;
}
}
else if ((counting == Counting.Negative) && (minSlope < -2 * maxSlope))
catch (Exception)
{
return OptoHeadState.OptoAndDirOK;
}
else
{
return OptoHeadState.DirNok;
log.ErrorFormat("{0} : CheckFlowDirection() failed", iPerlHeadName);
return OptoHeadState.DirNok; /// ???
}
}
}

View File

@ -39,9 +39,10 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead
public ushort FactorLimitLo { get { return (ushort)iperlHeadCfg.ProcParams.FactorLimitLo; } }
public ushort FactorLimitHi { get { return (ushort)iperlHeadCfg.ProcParams.FactorLimitHi; } }
public Counting InitFlowDir { get { return (iperlHeadCfg != null && iperlHeadCfg.ProcParams != null) ? iperlHeadCfg.ProcParams.Counting : Counting.Arbitrary; } }
#if ORACLE_DB
public int WMType_ID { get { return iperlHeadCfg.ProcParams.WMType_ID; } } /// Required by Oracle DB
#endif
public int WMType_ID { get { return iperlHeadCfg.ProcParams.WMType_ID; } } /// Required by Oracle DB
public int InitQ2CorrLR { get { return iperlHeadCfg.ProcParams.InitQ2CorrLR; } } /// Used by InitOrReadQ2Corrections activity
public int InitQ2CorrRL { get { return iperlHeadCfg.ProcParams.InitQ2CorrRL; } } /// Required by Oracle DB
/// Properties set by the Begin and the End form
public string SerialNr
@ -231,35 +232,15 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead
/// <summary>
/// Q2 correction factor calculated from the last test (Q2).
/// This factors should be used only for R800 meters.
/// This factor should be used only for R800 meters.
/// </summary>
/// <param name="q2TestResult">Test result from which to calculate the factor</param>
/// <param name="q2CorrectionFactor">The calculated Q2 correction factor</param>
/// <returns>true = OK, false = failed</returns>
public bool CalculateQ2CorrectionFactor(Results.Entities.MeterTestRslt q2adjResult, Results.Entities.TestData q2adjTestData, out double q2CorrectionFactor)
/// <param name="q2TestResult">A test result from which to calculate the factor</param>
/// <param name="nominalFlow">Nominal flow in m3/h</param>
/// <param name="currentFactor">0 or the current Q2 correction factor when updating the factor</param>
/// <returns>Calculated Q2 correction factor</returns>
public double CalculateQ2CorrectionFactor(Results.Entities.MeterTestRslt q2adjResult, double nominalFlow, int currentFactor = 0)
{
q2CorrectionFactor = 0;
if (q2adjResult == null) return false; /// Q2 test result is missing ==> water meter failed
double errLimitLo = q2adjTestData.ErrLimLo + q2adjTestData.Uncertainty;
double errLimitHi = q2adjTestData.ErrLimHi - q2adjTestData.Uncertainty;
if ((q2adjResult.Error < errLimitLo) || (q2adjResult.Error > errLimitHi))
{
log.WarnFormat("Q2 correction: Pos={0}, PCB#={1}, ***Q2adjError={2}%***, CalTarget={3}%, ***corrFactor={4}***, [Lo={5}%, Hi={6}%]",
Name,
SerialNr,
q2adjResult.Error.ToString("F2"),
CalibTarget.ToString("F1"),
q2CorrectionFactor.ToString("F1"),
errLimitLo.ToString("F1"),
errLimitHi.ToString("F1"));
return false; /// Q2 error too large ==> water meter failed
}
//double nominalTestFlowLph = 500.0 * (q2adjTestData.Qfrom + q2adjTestData.Qto); /// in lph => 500.0 * ...
double nominalTestFlowLph = 1000.0 * q2adjTestData.Qfrom; /// in lph => 1000.0 * ...
double nominalTestFlowLph = Config.Units.ConvertTo(Config.Unit.lph, nominalFlow);
double volumeRefShiftedToTarget = q2adjResult.VolumeRef * (1.0f + CalibTarget / 100.0f);
double q2adjErrorShiftedToTarget = Config.Formulas.ErrorFromVolumes(q2adjResult.VolumeMeter, volumeRefShiftedToTarget);
@ -270,17 +251,16 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead
double F = D / (nominalTestFlowLph * 10.0); /// Error corrected with 8 Raw Units per minute [%]
double G = F / B; /// Error corrected with 1 Raw Unit per minute [%]
q2CorrectionFactor = (-1) * (q2adjErrorShiftedToTarget / G) * (volumeRefShiftedToTarget / q2adjResult.VolumeMeter);
double q2CorrectionFactor = (double)currentFactor - (q2adjErrorShiftedToTarget / G) * (volumeRefShiftedToTarget / q2adjResult.VolumeMeter);
log.WarnFormat("Q2 correction: Pos={0}, PCB#={1}, Q2adjError={2}%, CalTarget={3}%, corrFactor={4}, [Lo={5}%, Hi={6}%]",
Name,
SerialNr,
q2adjResult.Error.ToString("F2"),
CalibTarget.ToString("F1"),
q2CorrectionFactor.ToString("F1"),
errLimitLo.ToString("F1"),
errLimitHi.ToString("F1"));
return true;
log.WarnFormat("CalculateQ2CorrectionFactor() : Pos={0}, PCB#={1}, Error={2}%, CalTarget={3}%, Q2CorrFactor={4}",
Name,
SerialNr,
q2adjResult.Error.ToString("F2"),
CalibTarget.ToString("F1"),
q2CorrectionFactor.ToString("F1"));
return q2CorrectionFactor;
}
@ -461,7 +441,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead
///
public OptoHeadState CheckFlowDirection()
{
return (flowDirectionDetection != null) ? flowDirectionDetection.CheckFlowDirection(currentFlowDir) : OptoHeadState.DirNok;
return (flowDirectionDetection != null) ? flowDirectionDetection.CheckFlowDirection(currentFlowDir, Name) : OptoHeadState.DirNok;
}
///
public void ChangeFlowDirection()

View File

@ -1,5 +1,5 @@
///
/// Copyright (c) 2015-2018 Sensus Slovensko a.s.
/// Copyright (c) 2015-2019 Sensus Slovensko a.s.
///
using System;
using System.IO;
@ -20,9 +20,9 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead
public int FactorLimitLo; /// Lower limit for the calibration factor
public int FactorLimitHi; /// Upper limit for the calibration factor
public Counting Counting; /// Initial iPerl counting (Artbitrary, Positive or Negative)
#if ORACLE_DB
public int WMType_ID; /// Required for Oracle DB: ID_WZTyp in table VT_PRUEFPUNKT_SOLL_SD
#endif
public int InitQ2CorrLR;
public int InitQ2CorrRL;
public override void InitializeAll()
@ -32,9 +32,9 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead
FactorLimitLo = 1000;
FactorLimitHi = 8000;
Counting = Counting.Arbitrary;
#if ORACLE_DB
WMType_ID = 2; /// Value for iPerl DN15
#endif
InitQ2CorrLR = 0;
InitQ2CorrRL = 0;
}
string[] paramNames = new string[]
@ -44,9 +44,9 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead
"Calib. factor Lo",
"Calib. factor Hi",
"Counting",
#if ORACLE_DB
"WM type ID",
#endif
"Init. Q2 corr. LR",
"Init. Q2 corr. RL",
};
public override string ParamName(int i) { return paramNames[i]; }
public override int ParamsCount() { return paramNames.Length; }
@ -77,10 +77,10 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead
case 2: return FactorLimitLo.ToString();
case 3: return FactorLimitHi.ToString();
case 4: return Counting.ToString();
#if ORACLE_DB
case 5: return WMType_ID.ToString();
#endif
default: return string.Empty;
case 6: return InitQ2CorrLR.ToString();
case 7: return InitQ2CorrRL.ToString();
default: return string.Empty;
}
}
@ -103,9 +103,9 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead
if (c.ToString().Equals(strValue)) { Counting = c; return CfgUpdateFlags.None; }
}
break;
#if ORACLE_DB
case 5: WMType_ID = int.Parse(strValue); return CfgUpdateFlags.None;
#endif
case 6: InitQ2CorrLR = int.Parse(strValue); return CfgUpdateFlags.None;
case 7: InitQ2CorrRL = int.Parse(strValue); return CfgUpdateFlags.None;
default: return CfgUpdateFlags.None;
}
@ -134,11 +134,13 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead
case 4:
for (Counting c = 0; c < Counting.Count; c++) if (c.ToString().Equals(strValue)) return true;
break;
#if ORACLE_DB
case 5: /// WMType_ID
if (int.TryParse(strValue, out iDummy)) return true;
break;
#endif
case 6: /// InitQ2CorrLR
case 7: /// InitQ2CorrRL
if (int.TryParse(strValue, out iDummy) || (iDummy < -127) || (iDummy > 127)) return true;
break;
default:
message = "Invalid index";
return false;
@ -155,10 +157,10 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead
prms.FactorLimitLo = this.FactorLimitLo;
prms.FactorLimitHi = this.FactorLimitHi;
prms.Counting = this.Counting;
#if ORACLE_DB
prms.WMType_ID = this.WMType_ID;
#endif
}
prms.InitQ2CorrLR = this.InitQ2CorrLR;
prms.InitQ2CorrRL = this.InitQ2CorrRL;
}
public IParamsProvider Clone()
{

View File

@ -65,7 +65,7 @@ namespace TBF
public int MainWndTop;
public int MainWndWidth;
public int MainWndHeight;
public bool ManiWndMaximized;
public bool MainWndMaximized;
/// Components
public int ComponentsDlgLeft;

View File

@ -188,7 +188,7 @@ namespace TBF
Localize();
TBF.LocalSettings ls = Program.LocalSettings;
WindowState = (ls.ManiWndMaximized ? FormWindowState.Maximized : FormWindowState.Normal);
WindowState = (ls.MainWndMaximized ? FormWindowState.Maximized : FormWindowState.Normal);
//if (WindowState != FormWindowState.Normal)
//{
// RestoreBounds = new Rectangle((ls.MainWndLeft != 0) ? ls.MainWndLeft : 75,
@ -648,7 +648,7 @@ namespace TBF
ls.RightPaneHorizSplitterDistance = rightHorizSplitContainer.SplitterDistance;
ls.TopPaneVerticalSplitterDistance = topVerticalSplitContainer.SplitterDistance;
ls.ManiWndMaximized = (WindowState == FormWindowState.Maximized);
ls.MainWndMaximized = (WindowState == FormWindowState.Maximized);
if (WindowState == FormWindowState.Normal)
{
ls.MainWndLeft = Location.X;

View File

@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// Build Number
// Revision
//
[assembly: AssemblyVersion("2.18.1176.0")]
[assembly: AssemblyFileVersion("2.18.1176.0")]
[assembly: AssemblyVersion("2.18.1182.0")]
[assembly: AssemblyFileVersion("2.18.1182.0")]

View File

@ -1176,6 +1176,24 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Direction and pulses are OK.
/// </summary>
internal static string Direction_and_pulses_are_OK {
get {
return ResourceManager.GetString("Direction_and_pulses_are_OK", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Direction is NOK.
/// </summary>
internal static string Direction_is_NOK {
get {
return ResourceManager.GetString("Direction_is_NOK", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Diverter.
/// </summary>
@ -5103,6 +5121,15 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to There are no opto pulses.
/// </summary>
internal static string There_are_no_opto_pulses {
get {
return ResourceManager.GetString("There_are_no_opto_pulses", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to T stop - mass msrmt. [s].
/// </summary>

View File

@ -1422,4 +1422,13 @@
<data name="Ref_pulses_count" xml:space="preserve">
<value>Počet imp. etalonu</value>
</data>
<data name="Direction_and_pulses_are_OK" xml:space="preserve">
<value>Smer aj opto-impulzy sú OK</value>
</data>
<data name="Direction_is_NOK" xml:space="preserve">
<value>Zlý smer otočenia iPerlu</value>
</data>
<data name="There_are_no_opto_pulses" xml:space="preserve">
<value>Chýbajú opto-impulzy</value>
</data>
</root>

View File

@ -1969,4 +1969,13 @@
<data name="Ref_pulses_count" xml:space="preserve">
<value>Ref. pulses count</value>
</data>
<data name="Direction_and_pulses_are_OK" xml:space="preserve">
<value>Direction and pulses are OK</value>
</data>
<data name="Direction_is_NOK" xml:space="preserve">
<value>Direction is NOK</value>
</data>
<data name="There_are_no_opto_pulses" xml:space="preserve">
<value>There are no opto pulses</value>
</data>
</root>