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,