diff --git a/TBF/Properties/AssemblyInfo.cs b/TBF/Properties/AssemblyInfo.cs
index 39ffc4725..b1a419df0 100644
--- a/TBF/Properties/AssemblyInfo.cs
+++ b/TBF/Properties/AssemblyInfo.cs
@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// Build Number
// Revision
//
-[assembly: AssemblyVersion("3.9.2215.1")]
-[assembly: AssemblyFileVersion("3.9.2015.1")]
+[assembly: AssemblyVersion("3.9.2218.1")]
+[assembly: AssemblyFileVersion("3.9.2018.1")]
diff --git a/TBF/Rig/DataEntry/Uni/CycleBgEnForm.cs b/TBF/Rig/DataEntry/Uni/CycleBgEnForm.cs
index 5e8704905..e84674d4e 100644
--- a/TBF/Rig/DataEntry/Uni/CycleBgEnForm.cs
+++ b/TBF/Rig/DataEntry/Uni/CycleBgEnForm.cs
@@ -54,6 +54,16 @@ namespace TBF.Rig.DataEntry.Uni
readonly CheckBox[] checkBoxes; /// Check boxes for water meter enable/disable
///
bool readSerialNoByRegisterReader = true;
+ ///
+ /// automaticly read serial number from register reader
+ ///
+ bool bAutoRead;
+ ///
+ ///autoclose disabled by default, if > 0 is enabled
+ /// - in seconds
+ ///
+ int iAutocloseGap;
+
readonly MultiPurposeBtnFunction multiPurposeButtonFn;
bool multiPurposeButtonFlag;
@@ -92,7 +102,7 @@ namespace TBF.Rig.DataEntry.Uni
/// Water meter items displayed in columns (in the matrix in the main part of the form)
/// true = This form is displayed at the end of cycle
public CycleBgEnForm(IList waterMeters, int _lineSize, string title, FontSz sz, bool isLrOrder, bool isCameraPicture,
- string formCloseKeys, IList commonItems, IList colItems, bool isEnd = false)
+ string formCloseKeys, IList commonItems, IList colItems, bool AutoRead, int AutoCloseGap, bool isEnd = false)
: this()
{
/// Arguments
@@ -105,6 +115,9 @@ namespace TBF.Rig.DataEntry.Uni
this.commonItems = commonItems;
this.colItems = colItems;
this.isEnd = isEnd;
+
+ this.bAutoRead = AutoRead;
+ this.iAutocloseGap = AutoCloseGap; //autoclose disabled by default, if > 0 is enabled
/// Preserve column items for use in SummaryResults
if (!isEnd)
@@ -426,11 +439,14 @@ namespace TBF.Rig.DataEntry.Uni
}
}
- public CycleBgEnForm(IList waterMeters, IRegReader[] regReaders, int title, string myCfgBgTitle, FontSz myCfgBgSize, bool myCfgBgIsLrOrder, bool myCfgBgIsCameraPicture, string myCfgBgFormCloseKeys, IList getItems, IList getColumns, bool b, IRegReader[] iRegReaders)
- : this(waterMeters, title, myCfgBgTitle, myCfgBgSize, myCfgBgIsLrOrder, myCfgBgIsCameraPicture, myCfgBgFormCloseKeys, getItems, getColumns, b)
+ public CycleBgEnForm(IList waterMeters, IRegReader[] regReaders, int title, string myCfgBgTitle, FontSz myCfgBgSize, bool myCfgBgIsLrOrder, bool myCfgBgIsCameraPicture, string myCfgBgFormCloseKeys, IList getItems, IList getColumns, bool b, IRegReader[] iRegReaders, bool AutoRead, int AutoCloseGap)
+ : this(waterMeters, title, myCfgBgTitle, myCfgBgSize, myCfgBgIsLrOrder, myCfgBgIsCameraPicture, myCfgBgFormCloseKeys, getItems, getColumns,AutoRead,AutoCloseGap, b)
{
this.regReaders = regReaders;
-
+ if (bAutoRead)
+ {
+ ReadAndProcessSerialNumbersByRegReader();
+ }
}
///
@@ -704,26 +720,11 @@ namespace TBF.Rig.DataEntry.Uni
char[] digits = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
- if (readSerialNoByRegisterReader)
- {
- log.Debug("Reading serial numbers from register readers...");
- this.SerialNumberRead += (s, eArgs) =>
- {
- log.Debug("Serial updated: " + eArgs.SerialNumber);
- UpdateSomethingBySerial(eArgs.Reader, eArgs.SerialNumber);
- };
-
- BeforeUpdate();
- this.DoneUpdateBySerial += (s, eArgs) =>
- {
- log.Debug("Serial updated DONE!");
- DoneUpdate();
- };
-
- ReadSerialNumbersAsync(regReaders);
-
- }
- else
+ // if (readSerialNoByRegisterReader)
+ // {
+ // Task.Run(() => ReadAndProcessSerialNumbersByRegReader());
+ // }
+ // else
{
///
/// Find a column with serial numbers
@@ -809,6 +810,25 @@ namespace TBF.Rig.DataEntry.Uni
}
}
+ private void ReadAndProcessSerialNumbersByRegReader()
+ {
+ log.Debug("Reading serial numbers from register readers...");
+ this.SerialNumberRead += (s, eArgs) =>
+ {
+ log.Debug("Serial updated: " + eArgs.SerialNumber);
+ UpdateSomethingBySerial(eArgs.Reader, eArgs.SerialNumber);
+ };
+
+ BeforeUpdate();
+ this.DoneUpdateBySerial += (s, eArgs) =>
+ {
+ log.Debug("Serial updated DONE!");
+ DoneUpdate();
+ };
+
+ ReadSerialNumbersAsync(regReaders);
+ }
+
private void UpdateSomethingBySerial(IRegReader eReader, string eSerialNumber)
{
log.Debug($"RegReader name: {eReader.Name}, Serial No updated: " + eSerialNumber);
@@ -840,19 +860,57 @@ namespace TBF.Rig.DataEntry.Uni
_previousCursor = Cursor.Current;
Cursor.Current = Cursors.WaitCursor;
+
+
+ //Enable all checkboxes
+
+ for (int firstIx = 0; firstIx < wmsCount; firstIx++)
+ {
+ checkBoxes[firstIx].Checked = true;
+ }
+
+
+
}
private void DoneUpdate()
{
log.Debug("DoneUpdate");
+
+ //enbale only found checkboxes
+ int comboRows = comboBoxes.GetLength(0);
+ int comboCols = comboBoxes.GetLength(1);
+
+ for (int k = 0; k < colItems.Count && k < comboRows; k++)
+ {
+ for (int ix = 0; ix < wmsCount && ix < comboCols; ix++)
+ {
+ bool letEnable = false;
+ var combo = comboBoxes[k, ix];
+ if (combo != null)
+ {
+ letEnable = !string.IsNullOrEmpty(combo.Text);
+ }
+
+ if (letEnable && checkBoxes.Length > ix)
+ {
+
+ checkBoxes[ix].Enabled = true;
+ }
+ }
+ }
+
+
+
+
this.okButton.Enabled = GetStoredOrDefault("okButton");
this.clearButton.Enabled = GetStoredOrDefault("clearButton");
this.multiPurposeButton.Enabled = GetStoredOrDefault("multiPurposeButton");
Cursor.Current = _previousCursor;
- //if (ShowDialogType == ShowDialogType.ContinueAutomatically)
- //{
- AutoClickOkAfterDelay();
- //}
+ if (iAutocloseGap > 0)
+ {
+ AutoClickOkAfterDelay(iAutocloseGap * 1000);
+ }
}
private void PopulateComboBoxWithSerialNumbers( IRegReader eReader, string eSerialNumber)
@@ -1084,7 +1142,20 @@ namespace TBF.Rig.DataEntry.Uni
public async void ReadSerialNumbersAsync(IEnumerable regReaders)
{
- log.Debug("Reading serial numbers from register readers...");
+ log.Debug($"Reading-> regReaders.length({(regReaders != null ? regReaders.Count() : 0)})");
+ if (regReaders == null)
+ {
+ log.Debug("Reading-> regReaders is null");
+ return;
+ }
+
+
+ foreach (IRegReader reader in regReaders)
+ {
+ if (reader == null) continue;
+ log.Debug($"Reading-> regReader: {reader.GetType().Name}");
+ }
+
try
{
@@ -1092,6 +1163,9 @@ namespace TBF.Rig.DataEntry.Uni
.OfType()
.GroupBy(r => r.Group)
.OrderBy(g => g.Key);
+
+ if (groups != null)
+ log.Debug($"Reading-> groups.length({groups.Count()})");
foreach (var group in groups)
{
diff --git a/TBF/Rig/DataEntry/Uni/EntryFormCfg.cs b/TBF/Rig/DataEntry/Uni/EntryFormCfg.cs
index 83376d5f9..ea877ef37 100644
--- a/TBF/Rig/DataEntry/Uni/EntryFormCfg.cs
+++ b/TBF/Rig/DataEntry/Uni/EntryFormCfg.cs
@@ -41,8 +41,10 @@ namespace TBF.Rig.DataEntry.Uni
public bool BgIsLrOrder; /// 5
public bool BgIsCameraPicture; /// 6
public string BgFormCloseKeys; /// 7
+ public bool BgIsAutoReadingSerialNo;/// 8 - new
+ public int BgAutoCloseGap; /// 9 - new
- public bool EnShowForm; /// 8
+ public bool EnShowForm; /// 8 + 2
public string EnTitle; /// 9
public FontSz EnSize; /// 10
// int EnItemsCount; /// 11
@@ -60,7 +62,7 @@ namespace TBF.Rig.DataEntry.Uni
public bool TestIsCameraPicture; /// 22
public string TestStartPicName; /// 23
public string TestEndPicName; /// 24
- public string TestFormCloseKeys; /// 25
+ public string TestFormCloseKeys; /// 25 + 2
public Ct[] BgItemContent; /// 26 + 4 * ix
public string[] BgItemCaption; /// 27 + 4 * ix
@@ -343,6 +345,8 @@ namespace TBF.Rig.DataEntry.Uni
BgIsLrOrder = false;
BgIsCameraPicture = false;
BgFormCloseKeys = string.Empty;
+ BgIsAutoReadingSerialNo = false;
+ BgAutoCloseGap = 10;
EnShowForm = false;
EnTitle = "Enter water meter data";
@@ -389,16 +393,18 @@ namespace TBF.Rig.DataEntry.Uni
string[] paramNames = new string[]
{
- "Beginning: Show form",
- "Beginning: Form title",
- "Beginning: Font ize",
- "Beginning: Common items count",
+ "Beginning: Show form", //0
+ "Beginning: Form title", //1
+ "Beginning: Font ize", //2
+ "Beginning: Common items count",//3
"Beginning: Columns count",
"Beginning: Left-to-right order",
"Beginning: Show camera picture",
"Beginning: Keys to close the form",
+ "Beginning: Read Automatic Serial No from watermeter", //8
+ "Beginning: Continue automatic after Read Serial No", //9
- "End: Show form",
+ "End: Show form",//8+2
"End: Form title",
"End: Font size",
"End: Common items count",
@@ -508,17 +514,18 @@ namespace TBF.Rig.DataEntry.Uni
case 0:
case 5:
case 6:
- case 8:
- case 13:
- case 14:
+ case 8: //new auto read SerialNo
+ case 10: //8+2
+ case 15:
case 16:
- case 20:
- case 21:
+ case 18:
case 22:
+ case 23:
+ case 24:
return new string[] { Strings.yes, Strings.no };
case 2:
- case 10:
- case 18:
+ case 12:
+ case 20:
for (FontSz sz = 0; sz < FontSz.Count; sz++) list.Add(sz.ToDescription());
return list;
default:
@@ -596,26 +603,28 @@ namespace TBF.Rig.DataEntry.Uni
case 5: return BgIsLrOrder ? Strings.yes : Strings.no;
case 6: return BgIsCameraPicture ? Strings.yes : Strings.no;
case 7: return BgFormCloseKeys;
+ case 8: return BgIsAutoReadingSerialNo ? Strings.yes : Strings.no;;
+ case 9: return BgAutoCloseGap.ToString();
- case 8: return EnShowForm ? Strings.yes : Strings.no;
- case 9: return EnTitle;
- case 10: return EnSize.ToDescription();
- case 11: return GetEnItemsCount().ToString();
- case 12: return GetEnColumnsCount().ToString();
- case 13: return EnIsLrOrder ? Strings.yes : Strings.no;
- case 14: return EnIsCameraPicture ? Strings.yes : Strings.no;
- case 15: return EnFormCloseKeys;
+ case 10: return EnShowForm ? Strings.yes : Strings.no;
+ case 11: return EnTitle;
+ case 12: return EnSize.ToDescription();
+ case 13: return GetEnItemsCount().ToString();
+ case 14: return GetEnColumnsCount().ToString();
+ case 15: return EnIsLrOrder ? Strings.yes : Strings.no;
+ case 16: return EnIsCameraPicture ? Strings.yes : Strings.no;
+ case 17: return EnFormCloseKeys;
- case 16: return TestStartEndShowForm ? Strings.yes : Strings.no;
- case 17: return TestTitle;
- case 18: return TestSize.ToDescription();
- case 19: return GetTestColumnsCount().ToString();
- case 20: return TestStartBoxAlwaysEn ? Strings.yes : Strings.no;
- case 21: return TestIsLrOrder ? Strings.yes : Strings.no;
- case 22: return TestIsCameraPicture ? Strings.yes : Strings.no;
- case 23: return TestStartPicName;
- case 24: return TestEndPicName;
- case 25: return TestFormCloseKeys;
+ case 18: return TestStartEndShowForm ? Strings.yes : Strings.no;
+ case 19: return TestTitle;
+ case 20: return TestSize.ToDescription();
+ case 21: return GetTestColumnsCount().ToString();
+ case 22: return TestStartBoxAlwaysEn ? Strings.yes : Strings.no;
+ case 23: return TestIsLrOrder ? Strings.yes : Strings.no;
+ case 24: return TestIsCameraPicture ? Strings.yes : Strings.no;
+ case 25: return TestStartPicName;
+ case 26: return TestEndPicName;
+ case 27: return TestFormCloseKeys;
default: return string.Empty;
}
@@ -714,10 +723,12 @@ namespace TBF.Rig.DataEntry.Uni
case 5: BgIsLrOrder = (str == Strings.yes); return CfgUpdateFlags.RestartRqrd;
case 6: BgIsCameraPicture = (str == Strings.yes); return CfgUpdateFlags.RestartRqrd;
case 7: BgFormCloseKeys = str; return CfgUpdateFlags.RestartRqrd;
-
- case 8: EnShowForm = (str == Strings.yes); return CfgUpdateFlags.RestartRqrd;
- case 9: EnTitle = str; return CfgUpdateFlags.RestartRqrd;
- case 10:
+ case 8: BgIsAutoReadingSerialNo = (str == Strings.yes); return CfgUpdateFlags.RestartRqrd;
+ case 9: BgAutoCloseGap = int.Parse(str); return CfgUpdateFlags.RestartRqrd;
+
+ case 10: EnShowForm = (str == Strings.yes); return CfgUpdateFlags.RestartRqrd;
+ case 11: EnTitle = str; return CfgUpdateFlags.RestartRqrd;
+ case 12:
for (FontSz sz = 0; sz < FontSz.Count; sz++)
{
if (str == sz.ToDescription())
@@ -727,15 +738,15 @@ namespace TBF.Rig.DataEntry.Uni
}
}
return CfgUpdateFlags.None;
- case 11: SetEnItemsCount(int.Parse(str)); return CfgUpdateFlags.RestartRqrd;
- case 12: SetEnColumnsCount(int.Parse(str)); return CfgUpdateFlags.RestartRqrd;
- case 13: EnIsLrOrder = (str == Strings.yes); return CfgUpdateFlags.RestartRqrd;
- case 14: EnIsCameraPicture = (str == Strings.yes); return CfgUpdateFlags.RestartRqrd;
- case 15: EnFormCloseKeys = str; return CfgUpdateFlags.RestartRqrd;
+ case 13: SetEnItemsCount(int.Parse(str)); return CfgUpdateFlags.RestartRqrd;
+ case 14: SetEnColumnsCount(int.Parse(str)); return CfgUpdateFlags.RestartRqrd;
+ case 15: EnIsLrOrder = (str == Strings.yes); return CfgUpdateFlags.RestartRqrd;
+ case 16: EnIsCameraPicture = (str == Strings.yes); return CfgUpdateFlags.RestartRqrd;
+ case 17: EnFormCloseKeys = str; return CfgUpdateFlags.RestartRqrd;
- case 16: TestStartEndShowForm = (str == Strings.yes); return CfgUpdateFlags.RestartRqrd;
- case 17: TestTitle = str; return CfgUpdateFlags.RestartRqrd;
- case 18:
+ case 18: TestStartEndShowForm = (str == Strings.yes); return CfgUpdateFlags.RestartRqrd;
+ case 19: TestTitle = str; return CfgUpdateFlags.RestartRqrd;
+ case 20:
for (FontSz sz = 0; sz < FontSz.Count; sz++)
{
if (str == sz.ToDescription())
@@ -745,13 +756,13 @@ namespace TBF.Rig.DataEntry.Uni
}
}
return CfgUpdateFlags.None;
- case 19: SetTestColumnsCount(int.Parse(str)); return CfgUpdateFlags.RestartRqrd;
- case 20: TestStartBoxAlwaysEn = (str == Strings.yes); return CfgUpdateFlags.RestartRqrd;
- case 21: TestIsLrOrder = (str == Strings.yes); return CfgUpdateFlags.RestartRqrd;
- case 22: TestIsCameraPicture = (str == Strings.yes); return CfgUpdateFlags.RestartRqrd;
- case 23: TestStartPicName = str; return CfgUpdateFlags.RestartRqrd;
- case 24: TestEndPicName = str; return CfgUpdateFlags.RestartRqrd;
- case 25: TestFormCloseKeys = str; return CfgUpdateFlags.RestartRqrd;
+ case 21: SetTestColumnsCount(int.Parse(str)); return CfgUpdateFlags.RestartRqrd;
+ case 22: TestStartBoxAlwaysEn = (str == Strings.yes); return CfgUpdateFlags.RestartRqrd;
+ case 23: TestIsLrOrder = (str == Strings.yes); return CfgUpdateFlags.RestartRqrd;
+ case 24: TestIsCameraPicture = (str == Strings.yes); return CfgUpdateFlags.RestartRqrd;
+ case 25: TestStartPicName = str; return CfgUpdateFlags.RestartRqrd;
+ case 26: TestEndPicName = str; return CfgUpdateFlags.RestartRqrd;
+ case 27: TestFormCloseKeys = str; return CfgUpdateFlags.RestartRqrd;
default:
return CfgUpdateFlags.None;
@@ -872,34 +883,36 @@ namespace TBF.Rig.DataEntry.Uni
case 2:
case 5:
case 6:
- case 8:
- case 10:
- case 13:
- case 14:
+ case 8://Auto close - yes/No
+ case 10://8+2
+ case 12:
+ case 15:
case 16:
case 18:
case 20:
- case 21:
case 22:
+ case 23:
+ case 24:
message = string.Empty;
if (ParamValues(i).Contains(str)) return true;
break;
case 3:
case 4:
- case 11:
- case 12:
- case 19:
+ case 9: //Gap AutoClose
+ case 13:
+ case 14:
+ case 21:
message = string.Empty;
if (int.TryParse(str, out idummy)) return true;
break;
case 1:
case 7:
- case 9:
- case 15:
+ case 11:
case 17:
- case 23:
- case 24:
+ case 19:
case 25:
+ case 26:
+ case 27:
message = string.Empty;
return true;
default:
@@ -942,6 +955,8 @@ namespace TBF.Rig.DataEntry.Uni
prms.BgIsLrOrder = BgIsLrOrder;
prms.BgIsCameraPicture = BgIsCameraPicture;
prms.BgFormCloseKeys = BgFormCloseKeys;
+ prms.BgIsAutoReadingSerialNo = BgIsAutoReadingSerialNo;
+ prms.BgAutoCloseGap = BgAutoCloseGap;
prms.EnShowForm = EnShowForm;
prms.EnTitle = EnTitle;
diff --git a/TBF/Rig/DataEntry/Uni/EntryFormNoStartEnd.cs b/TBF/Rig/DataEntry/Uni/EntryFormNoStartEnd.cs
index 770786c56..5482a1b55 100644
--- a/TBF/Rig/DataEntry/Uni/EntryFormNoStartEnd.cs
+++ b/TBF/Rig/DataEntry/Uni/EntryFormNoStartEnd.cs
@@ -239,12 +239,12 @@ namespace TBF.Rig.DataEntry.Uni
if (regReaders != null)
{
modelessDlg = new CycleBgEnForm(waterMeters, regReaders, TBF.Data.LineSize, myCfg.BgTitle, myCfg.BgSize, myCfg.BgIsLrOrder, myCfg.BgIsCameraPicture,
- myCfg.BgFormCloseKeys, DEItem.GetItems(), DEItem.GetColumns(), false, regReaders);
+ myCfg.BgFormCloseKeys, DEItem.GetItems(), DEItem.GetColumns(), false, regReaders, myCfg.BgIsAutoReadingSerialNo, myCfg.BgAutoCloseGap);
}
else
{
modelessDlg = new CycleBgEnForm(waterMeters, TBF.Data.LineSize, myCfg.BgTitle, myCfg.BgSize, myCfg.BgIsLrOrder, myCfg.BgIsCameraPicture,
- myCfg.BgFormCloseKeys, DEItem.GetItems(), DEItem.GetColumns(), false);
+ myCfg.BgFormCloseKeys, DEItem.GetItems(), DEItem.GetColumns(), myCfg.BgIsAutoReadingSerialNo, myCfg.BgAutoCloseGap, false);
}
modelessDlg.Show();
}
@@ -273,7 +273,7 @@ namespace TBF.Rig.DataEntry.Uni
}
modelessDlg = new CycleBgEnForm(waterMeters, TBF.Data.LineSize, myCfg.EnTitle, myCfg.EnSize, myCfg.EnIsLrOrder, myCfg.EnIsCameraPicture,
- myCfg.EnFormCloseKeys, DEItem.GetItems(), DEItem.GetColumns(), true);
+ myCfg.EnFormCloseKeys, DEItem.GetItems(), DEItem.GetColumns(), myCfg.BgIsAutoReadingSerialNo, myCfg.BgAutoCloseGap, true);
modelessDlg.Show();
}
///
@@ -295,7 +295,8 @@ namespace TBF.Rig.DataEntry.Uni
modelessDlg = new TestStartEndForm(waterMeters, myRef.regReaders, TBF.Data.LineSize, myCfg.TestTitle, myCfg.TestSize,
myCfg.TestStartBoxAlwaysEn, myCfg.TestIsLrOrder, myCfg.TestFormCloseKeys,
DEItem.GetColumns(), isCompound, volumeUnit, myCfg.TestIsCameraPicture,
- startImages, endImages, ocr, ocrMessage, myRef.OcrStream);
+ startImages,endImages, ocr, ocrMessage, myRef.OcrStream,
+ myCfg.BgIsAutoReadingSerialNo, myCfg.BgAutoCloseGap);
modelessDlg.Show();
}
///
@@ -317,7 +318,7 @@ namespace TBF.Rig.DataEntry.Uni
modelessDlg = new TestStartEndForm(waterMeters, myRef.regReaders, TBF.Data.LineSize, myCfg.TestTitle, myCfg.TestSize,
myCfg.TestStartBoxAlwaysEn, myCfg.TestIsLrOrder, myCfg.TestFormCloseKeys, DEItem.GetColumns(),
isCompound, volumeUnit, myCfg.TestIsCameraPicture, startImages, endImages,
- ocr, ocrMessage, myRef.OcrStream, wmStartStateStr, refVolume, errLimLo, errLimHi);
+ ocr, ocrMessage, myRef.OcrStream, myCfg.BgIsAutoReadingSerialNo, myCfg.BgAutoCloseGap, wmStartStateStr, refVolume, errLimLo, errLimHi);
modelessDlg.Show();
}
///
@@ -339,7 +340,7 @@ namespace TBF.Rig.DataEntry.Uni
modelessDlg = new TestStartEndForm(waterMeters, myRef.regReaders, TBF.Data.LineSize, myCfg.TestTitle, myCfg.TestSize,
myCfg.TestStartBoxAlwaysEn, myCfg.TestIsLrOrder, myCfg.TestFormCloseKeys, DEItem.GetColumns(),
isCompound, volumeUnit, myCfg.TestIsCameraPicture, startImages, endImages,
- ocr, ocrMessage, myRef.OcrStream, wmStartStateStr, refVolume, errLimLo, errLimHi);
+ ocr, ocrMessage, myRef.OcrStream, myCfg.BgIsAutoReadingSerialNo,myCfg.BgAutoCloseGap, wmStartStateStr, refVolume, errLimLo, errLimHi);
modelessDlg.Show();
}
///
diff --git a/TBF/Rig/DataEntry/Uni/TestStartEndForm.cs b/TBF/Rig/DataEntry/Uni/TestStartEndForm.cs
index d791254f7..0b656c3e3 100644
--- a/TBF/Rig/DataEntry/Uni/TestStartEndForm.cs
+++ b/TBF/Rig/DataEntry/Uni/TestStartEndForm.cs
@@ -62,6 +62,17 @@ namespace TBF.Rig.DataEntry.Uni
readonly double refVolume;
readonly double warningLimLo; /// limit to display exclamation mark, typically 2x errLimLo
readonly double warningLimHi; /// limit to display exclamation mark, typically 2x errLimHi
+
+ private bool _readDataFromRegReaders = true;
+ ///
+ /// automaticly read serial number from register reader
+ ///
+ bool bAutoRead;
+ ///
+ ///autoclose disabled by default, if > 0 is enabled
+ /// - in seconds
+ ///
+ int iAutocloseGap;
/// Derived from arguments in the constructor
readonly bool isEnd;
@@ -156,7 +167,7 @@ namespace TBF.Rig.DataEntry.Uni
public TestStartEndForm(IList waterMeters, IRegReader[] regReaders, int _lineSize, string title, FontSz sz,
bool isStartBoxAlwaysEn, bool isLrOrder, string formCloseKeys, IList colItems, bool isCompound,
Unit initialVolumeUnit, bool isCameraPicture, string[] startImages, string[] endImages,
- OcrVidi ocrVidi, string ocrMessage, string streamName, string[] wmStartStateStr = null,
+ OcrVidi ocrVidi, string ocrMessage, string streamName, bool bAutoRead, int iAutocloseGap, string[] wmStartStateStr = null,
double refVolume = 0, double errLimLo = 0, double errLimHi = 0)
: this()
{
@@ -181,6 +192,8 @@ namespace TBF.Rig.DataEntry.Uni
this.refVolume = refVolume;
this.warningLimLo = 2 * errLimLo;
this.warningLimHi = 2 * errLimHi;
+ this.bAutoRead = bAutoRead;
+ this.iAutocloseGap = iAutocloseGap;
if (waterMeters == null || regReaders == null ||
(wmStartStateStr != null && wmStartStateStr.Length != (isCompound ? 2 : 1) * waterMeters.Count))
@@ -570,7 +583,7 @@ namespace TBF.Rig.DataEntry.Uni
}
- if (_readDataFromRegReaders)
+ if (bAutoRead)
{
log.Debug($"Reading serial numbers from register readers... IsEnd: {isEnd}");
this.VolumeStartReadbyRegReader += (s, eArgs) =>
@@ -630,10 +643,10 @@ namespace TBF.Rig.DataEntry.Uni
this.unitComboBox.Enabled = GetStoredOrDefault("unitComboBox");
Cursor.Current = _previousCursor;
- //if (ShowDialogType == ShowDialogType.ContinueAutomatically)
- //{
+ if (iAutocloseGap > 0)
+ {
AutoClickOkAfterDelay();
- //}
+ }
}
public void UpdateVolume(IRegReader eArgsReader, double eArgsVolume)
@@ -667,40 +680,30 @@ namespace TBF.Rig.DataEntry.Uni
: new List { Ct.StartState, Ct.StartStateAux };
double VolumeRaw = eArgsVolume;
- double v = eArgsVolume;
// Test and compensate roll over
if (isEnd)
{
if (eArgsReader != null && (!Double.IsNaN(eArgsReader.BeginWMState)))
{
- double lastMod = eArgsReader.BeginWMState % VOL_RANGE_LITERS;
- if (lastMod < 0) lastMod += VOL_RANGE_LITERS;
-
- double delta = v - lastMod;
-
- // choose the shortest jump across the modulo boundary
- if (delta < -VOL_RANGE_LITERS / 2.0) delta += VOL_RANGE_LITERS;
- else if (delta > VOL_RANGE_LITERS / 2.0) delta -= VOL_RANGE_LITERS;
-
- VolumeRaw = eArgsReader.BeginWMState + delta;
- log.Debug($"Roll over detected: {eArgsReader.Name} - {eArgsReader.BeginWMState} -> {VolumeRaw}");
+ if (eArgsReader.BeginWMState > VolumeRaw) //Do RollOver
+ {
+ VolumeRaw = eArgsVolume + VOL_RANGE_LITERS;
+ log.Debug(
+ $"Roll over detected: {eArgsReader.Name} - {eArgsReader.BeginWMState} -> {VolumeRaw}");
+ }
}
else
{
//volume from form
Double beginVolume = findBeginStateFromForm();
- double lastMod = beginVolume % VOL_RANGE_LITERS;
- if (lastMod < 0) lastMod += VOL_RANGE_LITERS;
-
- double delta = v - lastMod;
-
- // choose the shortest jump across the modulo boundary
- if (delta < -VOL_RANGE_LITERS / 2.0) delta += VOL_RANGE_LITERS;
- else if (delta > VOL_RANGE_LITERS / 2.0) delta -= VOL_RANGE_LITERS;
-
- VolumeRaw = beginVolume + delta;
- log.Debug($"Roll over detected: {eArgsReader.Name} - {eArgsReader.BeginWMState} -> {VolumeRaw}");
+
+ if (beginVolume > VolumeRaw) //Do RollOver
+ {
+ VolumeRaw = eArgsVolume + VOL_RANGE_LITERS;
+ log.Debug(
+ $"Begin from Form! Roll over detected: {eArgsReader.Name} - {beginVolume} -> {VolumeRaw}");
+ }
}
}
@@ -1392,7 +1395,7 @@ namespace TBF.Rig.DataEntry.Uni
Font largeFont = new Font("arial", 24.0F, FontStyle.Bold); /// normal image
Font smallFont = new Font("arial", 12.0F, FontStyle.Bold);
- private bool _readDataFromRegReaders = true;
+
/// zoomed image
diff --git a/TBFTests/Rig/DataEntry/Uni/TestStartEndFormTest.cs b/TBFTests/Rig/DataEntry/Uni/TestStartEndFormTest.cs
index 9268d61b6..0b5012cc5 100644
--- a/TBFTests/Rig/DataEntry/Uni/TestStartEndFormTest.cs
+++ b/TBFTests/Rig/DataEntry/Uni/TestStartEndFormTest.cs
@@ -78,6 +78,8 @@ namespace TBFTests.Rig.DataEntry.Uni
ocrVidi: null,
ocrMessage: "",
streamName: "",
+ bAutoRead: false,
+ iAutocloseGap: 0,
wmStartStateStr: wmStartStateStr,
refVolume: 0,
errLimLo: 0,