diff --git a/TBF/BenchControl/Output/FileWriters/IperlLogger/Writer.cs b/TBF/BenchControl/Output/FileWriters/IperlLogger/Writer.cs
index 67f345ec8..7a507cc09 100644
--- a/TBF/BenchControl/Output/FileWriters/IperlLogger/Writer.cs
+++ b/TBF/BenchControl/Output/FileWriters/IperlLogger/Writer.cs
@@ -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
}
diff --git a/TBF/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.cs b/TBF/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.cs
index 5dcfbde21..c8651ec35 100644
--- a/TBF/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.cs
+++ b/TBF/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.cs
@@ -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
///
/// Number of text boxes for serial numbers
public iPerlCommunicationForm(TestMethodCfg cfg, Test test, iPerlCommunicationParams testParams)
- : this()
+ : this(cfg, new List { test }, new List { testParams })
{
- checkBoxesEditMode = false;
-
- iPerlCommunicationForm.cfg = cfg;
- iPerlCommunicationForm.tests = new List();
- iPerlCommunicationForm.tests.Add(test);
- iPerlCommunicationForm.multiTestParams = new List();
- iPerlCommunicationForm.multiTestParams.Add(testParams);
-
- ProcessData.RegisterReaders = StateMachine.GetMetersPath(test).RegisterReaders;
- activityLabel.Text = testParams.Activity;
-
- ConstructorCommon();
}
///
@@ -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
///
/// 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
/// String passed to caller
/// true on success
static CommErr ResetQ2Correction(int threadId, IperlHead ihead, Results.Entities.WaterMeter wm, ref string resultStr)
+ {
+ return SetQ2Correction(threadId, ihead, wm, ref resultStr, 0, 0);
+ }
+
+ ///
+ /// Reset both Q2 correction factors in the memory to 0.
+ /// Read them back to verify factors were written correctly.
+ ///
+ /// Water meter object
+ /// String passed to caller
+ /// true on success
+ 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);
+ }
+ }
+
+
///
/// Reset 2Hz correction factor in the memory to 0.
///
@@ -1810,42 +1854,56 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication
///
/// 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
///
/// Water meter object
/// String passed to caller
/// true on success
- 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
///
diff --git a/TBF/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.designer.cs b/TBF/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.designer.cs
index 3aac92da1..3c51c1d73 100644
--- a/TBF/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.designer.cs
+++ b/TBF/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.designer.cs
@@ -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;
}
}
\ No newline at end of file
diff --git a/TBF/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.resx b/TBF/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.resx
index 03d2e91ae..5ee43624a 100644
--- a/TBF/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.resx
+++ b/TBF/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.resx
@@ -121,7 +121,7 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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
diff --git a/TBF/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationParams.cs b/TBF/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationParams.cs
index e1fa7a922..dab268274 100644
--- a/TBF/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationParams.cs
+++ b/TBF/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationParams.cs
@@ -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);
diff --git a/TBF/BenchControl/TestMethods/iPerlCommunication/iPerlEnums.cs b/TBF/BenchControl/TestMethods/iPerlCommunication/iPerlEnums.cs
index 9a0f3835f..eb18dbcad 100644
--- a/TBF/BenchControl/TestMethods/iPerlCommunication/iPerlEnums.cs
+++ b/TBF/BenchControl/TestMethods/iPerlCommunication/iPerlEnums.cs
@@ -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,
+ }
}
diff --git a/TBF/BenchControl/TestMethods/iPerlCommunication/iPerlHead/FlowDirectionDetection.cs b/TBF/BenchControl/TestMethods/iPerlCommunication/iPerlHead/FlowDirectionDetection.cs
index 551710a10..3642926b8 100644
--- a/TBF/BenchControl/TestMethods/iPerlCommunication/iPerlHead/FlowDirectionDetection.cs
+++ b/TBF/BenchControl/TestMethods/iPerlCommunication/iPerlHead/FlowDirectionDetection.cs
@@ -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
///
/// OptoHeadState.OptoAndDirOK, OptoHeadState.OptoNok or OptoHeadState.DirNok
- 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; /// ???
}
}
}
diff --git a/TBF/BenchControl/TestMethods/iPerlCommunication/iPerlHead/IperlHead.cs b/TBF/BenchControl/TestMethods/iPerlCommunication/iPerlHead/IperlHead.cs
index 7eae5a167..ed9e5cf20 100644
--- a/TBF/BenchControl/TestMethods/iPerlCommunication/iPerlHead/IperlHead.cs
+++ b/TBF/BenchControl/TestMethods/iPerlCommunication/iPerlHead/IperlHead.cs
@@ -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
///
/// 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.
///
- /// Test result from which to calculate the factor
- /// The calculated Q2 correction factor
- /// true = OK, false = failed
- public bool CalculateQ2CorrectionFactor(Results.Entities.MeterTestRslt q2adjResult, Results.Entities.TestData q2adjTestData, out double q2CorrectionFactor)
+ /// A test result from which to calculate the factor
+ /// Nominal flow in m3/h
+ /// 0 or the current Q2 correction factor when updating the factor
+ /// Calculated Q2 correction factor
+ 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()
diff --git a/TBF/BenchControl/TestMethods/iPerlCommunication/iPerlHead/ProcParams.cs b/TBF/BenchControl/TestMethods/iPerlCommunication/iPerlHead/ProcParams.cs
index eccdfe194..8f324fea9 100644
--- a/TBF/BenchControl/TestMethods/iPerlCommunication/iPerlHead/ProcParams.cs
+++ b/TBF/BenchControl/TestMethods/iPerlCommunication/iPerlHead/ProcParams.cs
@@ -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()
{
diff --git a/TBF/LocalSettings.cs b/TBF/LocalSettings.cs
index 098d215ad..f79a70538 100644
--- a/TBF/LocalSettings.cs
+++ b/TBF/LocalSettings.cs
@@ -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;
diff --git a/TBF/MainWnd.cs b/TBF/MainWnd.cs
index 57170dc30..1d0974a97 100644
--- a/TBF/MainWnd.cs
+++ b/TBF/MainWnd.cs
@@ -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;
diff --git a/TBF/Properties/AssemblyInfo.cs b/TBF/Properties/AssemblyInfo.cs
index bda08bae5..9d1878baa 100644
--- a/TBF/Properties/AssemblyInfo.cs
+++ b/TBF/Properties/AssemblyInfo.cs
@@ -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")]
diff --git a/TBF/Resources/Strings.Designer.cs b/TBF/Resources/Strings.Designer.cs
index 127f94c3b..a61ff8a9a 100644
--- a/TBF/Resources/Strings.Designer.cs
+++ b/TBF/Resources/Strings.Designer.cs
@@ -1176,6 +1176,24 @@ namespace TBF.Resources {
}
}
+ ///
+ /// Looks up a localized string similar to Direction and pulses are OK.
+ ///
+ internal static string Direction_and_pulses_are_OK {
+ get {
+ return ResourceManager.GetString("Direction_and_pulses_are_OK", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Direction is NOK.
+ ///
+ internal static string Direction_is_NOK {
+ get {
+ return ResourceManager.GetString("Direction_is_NOK", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Diverter.
///
@@ -5103,6 +5121,15 @@ namespace TBF.Resources {
}
}
+ ///
+ /// Looks up a localized string similar to There are no opto pulses.
+ ///
+ internal static string There_are_no_opto_pulses {
+ get {
+ return ResourceManager.GetString("There_are_no_opto_pulses", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to T stop - mass msrmt. [s].
///
diff --git a/TBF/Resources/Strings.cs.resx b/TBF/Resources/Strings.cs.resx
index b2686cd8a..9be14add0 100644
--- a/TBF/Resources/Strings.cs.resx
+++ b/TBF/Resources/Strings.cs.resx
@@ -1422,4 +1422,13 @@
Počet imp. etalonu
+
+ Smer aj opto-impulzy sú OK
+
+
+ Zlý smer otočenia iPerlu
+
+
+ Chýbajú opto-impulzy
+
\ No newline at end of file
diff --git a/TBF/Resources/Strings.resx b/TBF/Resources/Strings.resx
index 05196f4ff..e3d91e547 100644
--- a/TBF/Resources/Strings.resx
+++ b/TBF/Resources/Strings.resx
@@ -1969,4 +1969,13 @@
Ref. pulses count
+
+ Direction and pulses are OK
+
+
+ Direction is NOK
+
+
+ There are no opto pulses
+
\ No newline at end of file