diff --git a/TestBenchFramework/BenchControl/Elde/ControlBoardDev.cs b/TestBenchFramework/BenchControl/Elde/ControlBoardDev.cs index 176fdf08f..1ae0b90f1 100644 --- a/TestBenchFramework/BenchControl/Elde/ControlBoardDev.cs +++ b/TestBenchFramework/BenchControl/Elde/ControlBoardDev.cs @@ -56,7 +56,7 @@ namespace TBF.BenchControl.Elde public float RValvePosition(int rvNr1) { return controlCom.RValvePosition(rvNr1); } public float DivSamples(int ms) { return controlCom.DivSamples(ms); } public int ScopeSamples(int i, int j, int k) { return controlCom.ScopeSamples(i, j, k); } - public uint DigitalInputs { get { return controlCom.DigitalInputs; } } + public ulong DigitalInputs { get { return controlCom.DigitalInputs; } } public float AnalogInput(int adcNr0) { return controlCom.AnalogInput(adcNr0); } public uint AnalogInputRaw(int adcNr0, int bank) { return controlCom.AnalogInputRaw(adcNr0, bank); } /// adcNr0: 0=RV1, 1=RV2,... bank: 0=RV, 1=Temp public float ReferenceVolume { get { return controlCom.ReferenceVolume; } } diff --git a/TestBenchFramework/BenchControl/Elde/ControlComSim.cs b/TestBenchFramework/BenchControl/Elde/ControlComSim.cs index e9f6476ad..ee7d3be38 100644 --- a/TestBenchFramework/BenchControl/Elde/ControlComSim.cs +++ b/TestBenchFramework/BenchControl/Elde/ControlComSim.cs @@ -63,7 +63,7 @@ namespace TBF.BenchControl.Elde public float RValvePosition(int rvNr1) { return 0; } public float DivSamples(int ms) { return 0; } public int ScopeSamples(int i, int j, int k) { return 0; } - public uint DigitalInputs { get { return 0; } } + public ulong DigitalInputs { get { return 0; } } public float AnalogInput(int adcNr0) { return 0; } public uint AnalogInputRaw(int adcNr0, int bank) { return 0; } /// bank0=RV, bank1=Temp public float ReferenceVolume { get { return 0; } } diff --git a/TestBenchFramework/BenchControl/Elde/ControlComWrap.cs b/TestBenchFramework/BenchControl/Elde/ControlComWrap.cs index 206d1b541..b53e651b7 100644 --- a/TestBenchFramework/BenchControl/Elde/ControlComWrap.cs +++ b/TestBenchFramework/BenchControl/Elde/ControlComWrap.cs @@ -51,7 +51,7 @@ namespace TBF.BenchControl.Elde } public float DivSamples(int ms) { return ctrlBrdComponent.DIVSamples[ms, 0]; } public int ScopeSamples(int i, int j, int k) { return ctrlBrdComponent.ScopeSamples[i, j, k]; } - public uint DigitalInputs { get { return ctrlBrdComponent.Vstupy; } } + public ulong DigitalInputs { get { return (ulong)ctrlBrdComponent.Vstupy; } } public float AnalogInput(int adcNr0) { return ctrlBrdComponent.Analogy[adcNr0]; } public uint AnalogInputRaw(int adcNr0, int bank) { return ctrlBrdComponent.AnalogyRaw[adcNr0, bank]; } /// bank0=RV, bank1=Temp public float ReferenceVolume { get { return ctrlBrdComponent.ReferenceVolume; } } diff --git a/TestBenchFramework/BenchControl/Elde/IControlCom.cs b/TestBenchFramework/BenchControl/Elde/IControlCom.cs index 910d1fdd9..0836a0a90 100644 --- a/TestBenchFramework/BenchControl/Elde/IControlCom.cs +++ b/TestBenchFramework/BenchControl/Elde/IControlCom.cs @@ -25,7 +25,7 @@ namespace TBF.BenchControl.Elde float RValvePosition(int rvNr1); float DivSamples(int ms); int ScopeSamples(int i, int j, int k); - uint DigitalInputs { get; } + ulong DigitalInputs { get; } float AnalogInput(int adcNr0); uint AnalogInputRaw(int adcNr0, int bank); float ReferenceVolume { get; } diff --git a/TestBenchFramework/BenchControl/TbfComponents.cs b/TestBenchFramework/BenchControl/TbfComponents.cs index fab85f431..5bfea50eb 100644 --- a/TestBenchFramework/BenchControl/TbfComponents.cs +++ b/TestBenchFramework/BenchControl/TbfComponents.cs @@ -42,7 +42,8 @@ namespace TBF.BenchControl Factories.Add(new Cameras.IdcCamera.IdcCameraFactory()); Factories.Add(new WaterMeters.iPerl.WaterMeterFactory()); /// iPerl Factories.Add(new TestMethods.iPerlAdjustment.TestMethodFactory()); /// iPerlAdjustment - Factories.Add(new TestMethods.LeakTest.TestMethodFactory()); + Factories.Add(new TestMethods.iPerlCommunication.TestMethodFactory()); /// iPerlCommunication + Factories.Add(new TestMethods.LeakTest.TestMethodFactory()); Factories.Add(new MettlerToledo.Standard.BalanceFactory()); /// MettlerToledo Balance Factories.Add(new MettlerToledo.Standard.BalanceNewFactory()); /// MettlerToledoBalanceSN Factories.Add(new MettlerToledo.Multi.BalanceFactory()); /// MettlerToledo-Multi diff --git a/TestBenchFramework/BenchControl/TestMethods/iPerlAdjustment/iPerlCommunicationForm.cs b/TestBenchFramework/BenchControl/TestMethods/iPerlAdjustment/iPerlAdjustmentForm.cs similarity index 89% rename from TestBenchFramework/BenchControl/TestMethods/iPerlAdjustment/iPerlCommunicationForm.cs rename to TestBenchFramework/BenchControl/TestMethods/iPerlAdjustment/iPerlAdjustmentForm.cs index 484631da5..425036543 100644 --- a/TestBenchFramework/BenchControl/TestMethods/iPerlAdjustment/iPerlCommunicationForm.cs +++ b/TestBenchFramework/BenchControl/TestMethods/iPerlAdjustment/iPerlAdjustmentForm.cs @@ -13,9 +13,9 @@ using TBF.BenchControl.WaterMeters.iPerl; namespace TBF.BenchControl.TestMethods.iPerlAdjustment { - public partial class iPerlCommunicationForm : Form, GenericDevices.IHasCompleted + public partial class iPerlAdjustmentForm : Form, GenericDevices.IHasCompleted { - private static readonly ILog log = LogManager.GetLogger(typeof(iPerlCommunicationForm)); + private static readonly ILog log = LogManager.GetLogger(typeof(iPerlAdjustmentForm)); [DllImport("libRfid.dll", EntryPoint = "getDllVersion")] @@ -92,7 +92,7 @@ namespace TBF.BenchControl.TestMethods.iPerlAdjustment /// Parameterless constructor for 3 watermeters - public iPerlCommunicationForm() + public iPerlAdjustmentForm() { InitializeComponent(); @@ -151,7 +151,7 @@ namespace TBF.BenchControl.TestMethods.iPerlAdjustment /// Constructor /// /// Number of text boxes for serial numbers - public iPerlCommunicationForm(IList waterMeters) + public iPerlAdjustmentForm(IList waterMeters) : this() { this.WaterMetersCount = waterMeters.Count; @@ -322,8 +322,6 @@ namespace TBF.BenchControl.TestMethods.iPerlAdjustment private void readConfigBtn_Click(object sender, EventArgs e) { - byte[] data; - int i = 0; for (int group = 1; group <= 10; group++) @@ -336,23 +334,35 @@ namespace TBF.BenchControl.TestMethods.iPerlAdjustment foreach (var wm in WaterMeters) { - if (wm.DebugLevel == Entities.DebugMode.Normal && wm.Group == group) + if (wm.Group == group) { - int r1 = openPort((uint)wm.RfidComPortNr); - int r2 = ReadRequestPort(MessageID.Configuration, 0, ConfigStruct.Length, out data, 1000); - int r3 = closePort(); + Text = string.Format("WM={0} Group={1}", wm.Name, group); + if (wm.DebugLevel == Entities.DebugMode.Normal) + { + byte[] data = null; + bool success = false; + int r1 = openPort((uint)wm.RfidComPortNr); + for (int j = 0; j < 3; j++) + { + if (0 == ReadRequestPort(MessageID.Configuration, 0, ConfigStruct.Length, out data, 1000)) + { + success = true; + break; + } + } + closePort(); - if (r1==0 && r2==0 && r3==0) - { - errors[i++].Text = ConfigStruct.FromByteArray(data).ToString(); + if (r1 == 0 && success && data != null) + { + errors[i].Text = ConfigStruct.FromByteArray(data).ToString(1); + } + else + { + errors[i].Text = "Cannot read configuration"; + } } - else - { - errors[i++].Text = "Cannot read configuration"; - } - } - else i++; + } } } } diff --git a/TestBenchFramework/BenchControl/TestMethods/iPerlAdjustment/iPerlCommunicationForm.designer.cs b/TestBenchFramework/BenchControl/TestMethods/iPerlAdjustment/iPerlAdjustmentForm.designer.cs similarity index 99% rename from TestBenchFramework/BenchControl/TestMethods/iPerlAdjustment/iPerlCommunicationForm.designer.cs rename to TestBenchFramework/BenchControl/TestMethods/iPerlAdjustment/iPerlAdjustmentForm.designer.cs index 39c5f1e10..13b14acfc 100644 --- a/TestBenchFramework/BenchControl/TestMethods/iPerlAdjustment/iPerlCommunicationForm.designer.cs +++ b/TestBenchFramework/BenchControl/TestMethods/iPerlAdjustment/iPerlAdjustmentForm.designer.cs @@ -3,7 +3,7 @@ /// namespace TBF.BenchControl.TestMethods.iPerlAdjustment { - partial class iPerlCommunicationForm + partial class iPerlAdjustmentForm { /// /// Required designer variable. diff --git a/TestBenchFramework/BenchControl/TestMethods/iPerlAdjustment/iPerlCommunicationForm.resx b/TestBenchFramework/BenchControl/TestMethods/iPerlAdjustment/iPerlAdjustmentForm.resx similarity index 100% rename from TestBenchFramework/BenchControl/TestMethods/iPerlAdjustment/iPerlCommunicationForm.resx rename to TestBenchFramework/BenchControl/TestMethods/iPerlAdjustment/iPerlAdjustmentForm.resx diff --git a/TestBenchFramework/BenchControl/TestMethods/iPerlAdjustment/iPerlAdjustmentSeq.cs b/TestBenchFramework/BenchControl/TestMethods/iPerlAdjustment/iPerlAdjustmentSeq.cs index 63c755d57..ba534f0b7 100644 --- a/TestBenchFramework/BenchControl/TestMethods/iPerlAdjustment/iPerlAdjustmentSeq.cs +++ b/TestBenchFramework/BenchControl/TestMethods/iPerlAdjustment/iPerlAdjustmentSeq.cs @@ -20,9 +20,9 @@ namespace TBF.BenchControl.TestMethods.iPerlAdjustment /// delegate void ErrorsFormDlgt(iPerlAdjustmentSeq myRef); /// - void OpenWMErrorsForm(iPerlAdjustmentSeq myRef) + void OpenIPerlCommForm(iPerlAdjustmentSeq myRef) { - myRef.modelessDlg = new iPerlCommunicationForm(WaterMeters); + myRef.modelessDlg = new iPerlAdjustmentForm(WaterMeters); modelessDlg.Show(); } @@ -75,7 +75,7 @@ namespace TBF.BenchControl.TestMethods.iPerlAdjustment /// /// Show the modeless dialog with error indication /// - Program.MainWnd.Invoke(new ErrorsFormDlgt(OpenWMErrorsForm), this); + Program.MainWnd.Invoke(new ErrorsFormDlgt(OpenIPerlCommForm), this); loop: diff --git a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/AllCompletedEventArgs.cs b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/AllCompletedEventArgs.cs new file mode 100644 index 000000000..1832ed383 --- /dev/null +++ b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/AllCompletedEventArgs.cs @@ -0,0 +1,18 @@ +/// +/// Copyright (c) 2015 Sensus Metering Systems +/// Author: Milan Hanajík +/// +using System; + +namespace TBF.BenchControl.TestMethods.iPerlCommunication +{ + public class AllCompletedEventArgs : EventArgs + { + public string CommMessage; + + public AllCompletedEventArgs(string commMessage) + { + this.CommMessage = commMessage; + } + } +} diff --git a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/CommCompletedEventArgs.cs b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/CommCompletedEventArgs.cs new file mode 100644 index 000000000..4a86cc4f2 --- /dev/null +++ b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/CommCompletedEventArgs.cs @@ -0,0 +1,22 @@ +/// +/// Copyright (c) 2015 Sensus Metering Systems +/// Author: Milan Hanajík +/// +using System; + +namespace TBF.BenchControl.TestMethods.iPerlCommunication +{ + public class CommCompletedEventArgs : EventArgs + { + public int ThreadId; + public int WMNr; + public string CommMessage; + + public CommCompletedEventArgs(int threadId, int wmNr, string commMessage) + { + this.ThreadId = threadId; + this.WMNr = wmNr; + this.CommMessage = commMessage; + } + } +} diff --git a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethod.cs b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethod.cs new file mode 100644 index 000000000..fcddebb1a --- /dev/null +++ b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethod.cs @@ -0,0 +1,39 @@ +/// +/// Copyright (c) 2015 Sensus Metering Systems +/// Author: Milan Hanajík +/// +using System; +using System.Collections.Generic; +using log4net; +using TBF.BenchControl; + +namespace TBF.BenchControl.TestMethods.iPerlCommunication +{ + public class TestMethod : ComponentBase, GenericDevices.ITestMethod + { + private static readonly ILog log = LogManager.GetLogger(typeof(TestMethod)); + public override string ToString() { return string.Format("TestMethods.Adjustment({0})", Cfg.ToString(1)); } + + readonly TestMethodCfg testMethodCfg; + + public bool Evaluate { get { return false; } } + public bool Publish { get { return false; } } + public bool CanTest(Entities.MetersKind meters) { return meters == Entities.MetersKind.Single; } + + public TestMethod() + { + } + + public TestMethod(TestMethodCfg cfg) + : base(cfg) + { + testMethodCfg = cfg; + log.Debug(this.ToString()); + } + + public IList Execute(Entities.Test test) + { + return (new iPerlCommunicationSeq()).Execute(test, testMethodCfg.TestParams); + } + } +} diff --git a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethodCfg.cs b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethodCfg.cs new file mode 100644 index 000000000..00f7e2f6f --- /dev/null +++ b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethodCfg.cs @@ -0,0 +1,48 @@ +/// +/// Copyright (c) 2015 Sensus Metering Systems +/// Author: Milan Hanajík +/// +using System; +using System.Collections.Generic; +using System.IO; +using System.Xml.Serialization; +using TBF.BenchControl.Generic; + +namespace TBF.BenchControl.TestMethods.iPerlCommunication +{ + public class TestMethodCfg : ComponentCfgBase, Generic.IComponentCfg + { + public IComponent GetComponent(IList components) { return new TestMethod(this); } + public IComponentCfgCtrl GetControl() { return new TestMethodCfgCtrl(); } + + /// Test parameters + [XmlIgnore] + public iPerlCommunicationParams TestParams; + public override IParamsProvider GetTestParams() { return TestParams; } + public override IParamsProvider CreateTestParams(Entities.Test test) + { + iPerlCommunicationParams testParams = new iPerlCommunicationParams(); + testParams.UpdateTestParams(Name, test); + return testParams; + } + + /// Private parameterless constructor invoked by all other (public) constructors + TestMethodCfg() + { + Name = "iPerlCommunication"; + ParentName = string.Empty; + TestParams = new iPerlCommunicationParams(); + } + + public TestMethodCfg(IComponentFactory factory) + : this() + { + this.Factory = factory; + } + + public string ToString(int i) + { + return string.Format("Name={0}", Name); + } + } +} diff --git a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethodCfgCtrl.cs b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethodCfgCtrl.cs new file mode 100644 index 000000000..fd6949ab6 --- /dev/null +++ b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethodCfgCtrl.cs @@ -0,0 +1,72 @@ +/// +/// Copyright (c) 2015 Sensus Metering Systems +/// Author: Milan Hanajík +/// +using System; +using System.Windows.Forms; +using log4net; +using TBF.BenchControl.Generic; + +namespace TBF.BenchControl.TestMethods.iPerlCommunication +{ + public partial class TestMethodCfgCtrl : UserControl, IComponentCfgCtrl + { + static readonly ILog log = LogManager.GetLogger(typeof(TestMethodCfgCtrl)); + + public bool ShowMore { get { return false; } } + + TestMethodCfg config; + public IComponentCfg Config + { + get { return config as IComponentCfg; } + set + { + config = value as TestMethodCfg; + Redraw(); + } + } + + public TestMethodCfgCtrl() + { + InitializeComponent(); + } + + private void EntryFormCfgCtrl_Load(object sender, EventArgs e) + { + Redraw(); + } + + public void Closing() + { + } + + void Redraw() + { + if (config == null) return; /// Control was not loaded, settings were not changed + classNameLabel.Text = config.Factory.ClassName; + nameTextBox.Text = config.Name; + } + + public void Unlock() + { + nameTextBox.Enabled = true; + } + + public CfgUpdateFlags VerifyCfg(ref string message) + { + CfgUpdateFlags flags = CfgUpdateFlags.None; + return flags; + } + + public CfgUpdateFlags UpdateCfg() + { + CfgUpdateFlags flags = CfgUpdateFlags.RestartRqrd; + + if (config == null) return CfgUpdateFlags.Error; /// Control was not loaded, settings were not changed + + config.Name = nameTextBox.Text; + + return flags; + } + } +} diff --git a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethodCfgCtrl.designer.cs b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethodCfgCtrl.designer.cs new file mode 100644 index 000000000..2ddc2bb1d --- /dev/null +++ b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethodCfgCtrl.designer.cs @@ -0,0 +1,87 @@ +/// +/// Copyright (c) 2015 Sensus Metering Systems +/// Author: Milan Hanajík +/// +namespace TBF.BenchControl.TestMethods.iPerlCommunication +{ + partial class TestMethodCfgCtrl + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.nameTextBox = new System.Windows.Forms.TextBox(); + this.nameLabel = new System.Windows.Forms.Label(); + this.classNameLabel = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // nameTextBox + // + this.nameTextBox.Enabled = false; + this.nameTextBox.Location = new System.Drawing.Point(137, 57); + this.nameTextBox.Name = "nameTextBox"; + this.nameTextBox.Size = new System.Drawing.Size(130, 20); + this.nameTextBox.TabIndex = 5; + // + // nameLabel + // + this.nameLabel.AutoSize = true; + this.nameLabel.Location = new System.Drawing.Point(27, 60); + this.nameLabel.Name = "nameLabel"; + this.nameLabel.Size = new System.Drawing.Size(35, 13); + this.nameLabel.TabIndex = 4; + this.nameLabel.Text = "Name"; + // + // classNameLabel + // + this.classNameLabel.AutoSize = true; + this.classNameLabel.Location = new System.Drawing.Point(134, 33); + this.classNameLabel.Name = "classNameLabel"; + this.classNameLabel.Size = new System.Drawing.Size(83, 13); + this.classNameLabel.TabIndex = 3; + this.classNameLabel.Text = "ComonentName"; + // + // BasicPrinterCfgCtrl + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.nameTextBox); + this.Controls.Add(this.nameLabel); + this.Controls.Add(this.classNameLabel); + this.Name = "BasicPrinterCfgCtrl"; + this.Size = new System.Drawing.Size(300, 200); + this.Load += new System.EventHandler(this.EntryFormCfgCtrl_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TextBox nameTextBox; + private System.Windows.Forms.Label nameLabel; + private System.Windows.Forms.Label classNameLabel; + } +} diff --git a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethodCfgCtrl.resx b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethodCfgCtrl.resx new file mode 100644 index 000000000..1af7de150 --- /dev/null +++ b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethodCfgCtrl.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethodFactory.cs b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethodFactory.cs new file mode 100644 index 000000000..f2ee8153a --- /dev/null +++ b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethodFactory.cs @@ -0,0 +1,24 @@ +/// +/// Copyright (c) 2015 Sensus Metering Systems +/// Author: Milan Hanajík +/// +using TBF.BenchControl.Generic; + +namespace TBF.BenchControl.TestMethods.iPerlCommunication +{ + public class TestMethodFactory : IComponentFactory + { + public string ClassName { get { return "iPerlCommunication"; } } + + public void ResetStaticProperties() { TestMethod.ResetStaticProperties(); } + + public IComponent DummyComponent() { return new TestMethod(); } + + public IComponentCfg DefaultConfig() { return new TestMethodCfg(this); } + + public IComponentCfg CmpntCfgFromCmpntEntity(Entities.Component component) + { + return ComponentCfgBase.CreateFromDbEntity(typeof(TestMethodCfg), component, this); + } + } +} diff --git a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.cs b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.cs new file mode 100644 index 000000000..79be0dbf0 --- /dev/null +++ b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.cs @@ -0,0 +1,546 @@ +/// +/// Copyright (c) 2015 Sensus Metering Systems +/// Author: Milan Hanajík +/// +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Runtime.InteropServices; +using System.Threading; +using System.Windows.Forms; +using log4net; +using TBF.Resources; +using TBF.BenchControl.WaterMeters.iPerl; + +namespace TBF.BenchControl.TestMethods.iPerlCommunication +{ + public partial class iPerlCommunicationForm : Form, GenericDevices.IHasCompleted + { + private static readonly ILog log = LogManager.GetLogger(typeof(iPerlCommunicationForm)); + +#region DLL_Interface + + [DllImport("libRfid.dll", EntryPoint = "getDllVersion")] + public static extern unsafe int getDllVersion(); + + [DllImport("libRfid.dll", EntryPoint = "openPort")] + static extern unsafe int openPort(int comPort); + + [DllImport("libRfid.dll", EntryPoint = "closePort")] + static extern unsafe int closePort(); + + [DllImport("libRfid.dll", EntryPoint = "readRequestPort")] + static extern unsafe int readRequestPort(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); + + [DllImport("libRfid.dll", EntryPoint = "writeRequestPort")] + static extern unsafe int writeRequestPort(MessageID messageId, int offset, int lenght, byte* ptr, int timeout_ms); + + /// + /// Wrapper function with safe interface adn unsafe body + /// + /// Value returned by readRequestPort(...) + public static unsafe int ReadRequestPort(MessageID messageID, int offset, int lenght, out byte[] buffer, int timeout) + { + byte[] buf = new byte[1000]; + int retv; + + fixed (byte* pBuf = buf) + { + retv = readRequestPort(messageID, offset, lenght, pBuf, timeout); + + buffer = new byte[lenght]; + for (int i = 0; i < lenght; i++) buffer[i] = buf[i]; + } + + return retv; + } + + /// + /// Wrapper function with safe interface adn unsafe body + /// + /// Value returned by writeRequestPort(...) + public static unsafe int WriteRequestPort(MessageID messageID, int offset, int lenght, byte[] buffer, int timeout) + { + int retv; + fixed (byte* pBuf = buffer) + { + retv = writeRequestPort(messageID, offset, lenght, pBuf, timeout); + } + return retv; + } + +#endregion DLL_Interface + + + const int CommTimeout = 500; + const int MaxCommRetries = 3; + + + // Set to 'true' when the form closes + public bool Completed { get { return formCompleted; } } + bool formCompleted; + + /// Number of text boxes for serial numbers + public readonly int WaterMetersCount; + + readonly bool[] disabled; + + Entities.TestResult tr; + + int textBoxesCount; + + Label[] labels; + TextBox[] messages; + + static IList waterMeters; + + Modbus.QuidoRS.QuidoRS quido; + + + /// + /// RFID multiplexer PCB / RFID serial port and worker thread related variables + /// + static string activity; + static int currentGroup; /// form -> worker thread (0 = none) + static int lastGroup; + + static IList workerThreads; + static IList rfidPortNrs; + static IList stopWorkerThreads; /// form -> worker thread + + + /// Parameterless constructor for 3 watermeters + public iPerlCommunicationForm() + { + InitializeComponent(); + + textBoxesCount = 48; + + labels = new Label[48] + { + wmLabel1, wmLabel2, wmLabel3, wmLabel4, wmLabel5, + wmLabel6, wmLabel7, wmLabel8, wmLabel9, wmLabel10, + wmLabel11, wmLabel12, wmLabel13, wmLabel14, wmLabel15, + wmLabel16, wmLabel17, wmLabel18, wmLabel19, wmLabel20, + wmLabel21, wmLabel22, wmLabel23, wmLabel24, wmLabel25, + wmLabel26, wmLabel27, wmLabel28, wmLabel29, wmLabel30, + wmLabel31, wmLabel32, wmLabel33, wmLabel34, wmLabel35, + wmLabel36, wmLabel37, wmLabel38, wmLabel39, wmLabel40, + wmLabel41, wmLabel42, wmLabel43, wmLabel44, wmLabel45, + wmLabel46, wmLabel47, wmLabel48, + }; + messages = new TextBox[48] + { + wmTextBox1, wmTextBox2, wmTextBox3, wmTextBox4, wmTextBox5, + wmTextBox6, wmTextBox7, wmTextBox8, wmTextBox9, wmTextBox10, + wmTextBox11, wmTextBox12, wmTextBox13, wmTextBox14, wmTextBox15, + wmTextBox16, wmTextBox17, wmTextBox18, wmTextBox19, wmTextBox20, + wmTextBox21, wmTextBox22, wmTextBox23, wmTextBox24, wmTextBox25, + wmTextBox26, wmTextBox27, wmTextBox28, wmTextBox29, wmTextBox30, + wmTextBox31, wmTextBox32, wmTextBox33, wmTextBox34, wmTextBox35, + wmTextBox36, wmTextBox37, wmTextBox38, wmTextBox39, wmTextBox40, + wmTextBox41, wmTextBox42, wmTextBox43, wmTextBox44, wmTextBox45, + wmTextBox46, wmTextBox47, wmTextBox48, + }; + + currentGroup = 0; + lastGroup = 0; /// group numbers are >=1, lastGroup == 0 means no group + + workerThreads = new List(); + rfidPortNrs = new List(); + stopWorkerThreads = new List(); + + formCompleted = false; + tr = null; + + /// Find QuidoRS + foreach (var comp in StateMachine.Components) + { + if (comp is Modbus.QuidoRS.QuidoRS) + { + quido = comp as Modbus.QuidoRS.QuidoRS; + break; + } + } + + /// Attach to 'CommCompleted' handler + CommCompletedHandler += delegate(object sender, CommCompletedEventArgs args) + { + if (InvokeRequired) + { + Invoke(new EventHandler(DoOnCommCompleted), sender, args); + } + else DoOnCommCompleted(sender, args); + }; + + /// Attach to 'AllCompleted' handler + AllCompletedHandler += delegate(object sender, AllCompletedEventArgs args) + { + if (InvokeRequired) + { + Invoke(new EventHandler(DoOnAllCompleted), sender, args); + } + else DoOnAllCompleted(sender, args); + }; + } + + /// + /// Constructor + /// + /// Number of text boxes for serial numbers + public iPerlCommunicationForm(IList waterMeters, string activity) + : this() + { + iPerlCommunicationForm.activity = activity; + this.WaterMetersCount = waterMeters.Count; + iPerlCommunicationForm.waterMeters = new List(); + foreach (var wm in waterMeters) + { + WaterMeters.iPerl.WaterMeter iPerlWM = wm as WaterMeters.iPerl.WaterMeter; + iPerlCommunicationForm.waterMeters.Add(iPerlWM); + if (iPerlWM.Group > lastGroup) lastGroup = iPerlWM.Group; + if (!rfidPortNrs.Contains(iPerlWM.RfidComPortNr)) + { + rfidPortNrs.Add(iPerlWM.RfidComPortNr); + if (workerThreads.Count < 1) + { + Thread thread = new Thread(iPerlCommunicationForm.Worker); + workerThreads.Add(thread); + stopWorkerThreads.Add(false); + thread.Start(); /// TODO: start with arguments: thread.Start(workerThreads.Count - 1); + } + } + } + + activityLabel.Text = activity; + + ShuffleTextBoxes(this.WaterMetersCount, Program.LineSize); + + disabled = new bool[this.WaterMetersCount]; + } + + + /// + /// Make sure the layout of labels/text boxes on the screen + /// corresponds to the layout of watermeters of the test bench. + /// + /// Number of watermeters + /// Number of watermeters in one line + void ShuffleTextBoxes(int wmsCount, int lineSize) + { + if (wmsCount < textBoxesCount && lineSize > 0) + { + int nrLines = (wmsCount + lineSize - 1) / lineSize; + int gap = (textBoxesCount - wmsCount) / nrLines; + + int dest = 0; + for (int l = 0; l < nrLines; l++) + { + for (int i = 0; i < lineSize; i++) + { + labels[dest] = labels[l * lineSize + l * gap + i]; + messages[dest] = messages[l * lineSize + l * gap + i]; + dest++; + } + } + textBoxesCount = wmsCount; + } + } + + + void Localize() + { + Text = Strings.Water_Meter_States; + for (int i = 0; i < textBoxesCount; i++) + { + labels[i].Text = string.Format("iPerl{0}", i + 1); + } + } + + private void iPerlCommunicationForm_Load(object sender, EventArgs e) + { + Localize(); + + //Height = 50 + 90 * WaterMetersCount; + + for (int i = 0; i < textBoxesCount; i++) + { + if (disabled != null && i < disabled.Length && disabled[i]) + { + labels[i].Visible = messages[i].Visible = false; + } + else + { + labels[i].Visible = messages[i].Visible = true; + messages[i].Text = "---"; + } + } + + /// + /// Set QuidoRS outputs and start the whole communication process + /// by incrementing 'currentGroup'. + /// + if (quido != null) + { + quido.SetOutputs((ushort)(16 - currentGroup - 1)); + Thread.Sleep(200); + } + currentGroup++; + } + + private void NormalClose() + { + CommCompletedHandler = null; + AllCompletedHandler = null; + + formCompleted = true; + + DialogResult = DialogResult.OK; + Close(); + } + + void OnAdjustmentInProgress(object sender, UiBridge.AdjustmentInProgressEventArgs args) + { + tr = args.TestResult; + Redraw(); + } + + void Redraw() + { + if (tr != null) + { + for (int i = 0; i < textBoxesCount; i++) + { + messages[i].Text = tr.Meters[i].VolumeErrorPct.ToString("F1"); + } + } + } + + private void WMErrorsForm_Paint(object sender, PaintEventArgs e) + { + //if (tr != null) + //{ + // System.Drawing.Graphics graphics = this.CreateGraphics(); + + // for (int i = 0; i < WaterMetersCount; i++) + // { + // PaintOne(graphics, rects[i], tr.Meters[i].VolumeErrorPct, tr.ErrLimLo, tr.ErrLimHi); + // } + //} + } + + #region Forced close handling + + public void StartForceCloseHandler() + { + UiBridge.Bridge.CloseModelessFormHandler += delegate(object sender, EventArgs args) + { + if (InvokeRequired) { Invoke(new EventHandler(OnForceClose), sender, args); } + else OnForceClose(sender, args); + }; + } + + void OnForceClose(object sender, EventArgs args) + { + CommCompletedHandler = null; + AllCompletedHandler = null; + + DialogResult = DialogResult.Cancel; + Close(); + } + + #endregion + + + static void Worker() + { + int threadId = 0; + int rfidPortNr = rfidPortNrs[threadId]; + + for (int group = 1; group <= lastGroup; group++) + { + while (currentGroup != group && !stopWorkerThreads[threadId]) Thread.Sleep(50); + + if (stopWorkerThreads[threadId]) break; + + int wmNr = 0; + foreach (var wm in waterMeters) + { + if ((wm.RfidComPortNr == rfidPortNr) && (wm.Group == group)) + { + if (wm.DebugLevel == Entities.DebugMode.Normal) + { + if (activity.Equals("Read configuration")) ReadConfig(wm, threadId, wmNr); + else if (activity.Equals("Set to test mode")) SetToTestMode(wm, threadId, wmNr); + else if (activity.Equals("Set to active mode")) SetToActiveMode(wm, threadId, wmNr); + else OnCommCompleted(null, new CommCompletedEventArgs(threadId, wmNr, "Invalid activity")); + } + else + { + OnCommCompleted(null, new CommCompletedEventArgs(threadId, wmNr, "Simulation")); + } + break; + } + wmNr++; + } + } + } + + static void ReadConfig(WaterMeters.iPerl.WaterMeter wm, int threadId, int wmNr) + { + bool success = (0 == openPort(wm.RfidComPortNr)); /// Open RFID port + + byte[] cfg = null; + if (success) + { + success = false; + + /// Read configuration + for (int j = 0; j < MaxCommRetries; j++) + { + if (0 == ReadRequestPort(MessageID.Configuration, 0, ConfigStruct.Length, out cfg, CommTimeout)) { success = true; break; } + } + } + + closePort(); /// Close RFID port + + if (success) + { + OnCommCompleted(null, new CommCompletedEventArgs(threadId, wmNr, ConfigStruct.FromByteArray(cfg).ToString(1))); + } + else + { + OnCommCompleted(null, new CommCompletedEventArgs(threadId, wmNr, "Cannot read configuration")); + } + } + + static void SetToTestMode(WaterMeters.iPerl.WaterMeter wm, int threadId, int wmNr) + { + bool success = (openPort(wm.RfidComPortNr) == 0); /// Open RFID port + + if (success) + { + success = false; + + /// Switch to test mode + byte[] cmd = new byte[1] { (byte)7 }; + for (int j = 0; j < MaxCommRetries; j++) + { + if (0 == WriteRequestPort(MessageID.Command, 0, 1, cmd, CommTimeout)) { success = true; break; } + } + } + + byte[] cfg = null; + if (success) + { + success = false; + + /// Read configuration + for (int j = 0; j < MaxCommRetries; j++) + { + if (0 == ReadRequestPort(MessageID.Configuration, 0, ConfigStruct.Length, out cfg, CommTimeout)) { success = true; break; } + } + } + + closePort(); /// Close RFID port + + if (success) + { + OnCommCompleted(null, new CommCompletedEventArgs(threadId, wmNr, ConfigStruct.FromByteArray(cfg).ToString(1))); + } + else + { + OnCommCompleted(null, new CommCompletedEventArgs(threadId, wmNr, "Cannot switch to test mode")); + } + } + + static void SetToActiveMode(WaterMeters.iPerl.WaterMeter wm, int threadId, int wmNr) + { + bool success = (openPort(wm.RfidComPortNr) == 0); /// Open RFID port + + if (success) + { + success = false; + + /// Switch to active mode + byte[] cmd = new byte[1] { (byte)6 }; + for (int j = 0; j < MaxCommRetries; j++) + { + if (0 == WriteRequestPort(MessageID.Command, 0, 1, cmd, CommTimeout)) { success = true; break; } + } + } + + byte[] cfg = null; + if (success) + { + success = false; + + /// Read configuration + for (int j = 0; j < MaxCommRetries; j++) + { + if (0 == ReadRequestPort(MessageID.Configuration, 0, ConfigStruct.Length, out cfg, CommTimeout)) { success = true; break; } + } + } + + closePort(); /// Close RFID port + + if (success) + { + OnCommCompleted(null, new CommCompletedEventArgs(threadId, wmNr, ConfigStruct.FromByteArray(cfg).ToString(1))); + } + else + { + OnCommCompleted(null, new CommCompletedEventArgs(threadId, wmNr, "Cannot switch to active mode")); + } + } + + + /// + /// Called when communication with one watermeter is completed + /// + public static void OnCommCompleted(object sender, CommCompletedEventArgs data) + { + if (CommCompletedHandler == null) return; + try { CommCompletedHandler(sender, data); } + catch (Exception e) { log.Error("CommCompletedHandler(...) failed", e); } + } + public static event EventHandler CommCompletedHandler; + + void DoOnCommCompleted(object sender, CommCompletedEventArgs data) + { + messages[data.WMNr].Text = data.CommMessage; + + if (currentGroup < lastGroup) + { + if (quido != null) + { + quido.SetOutputs((ushort)(16 - currentGroup - 1)); + Thread.Sleep(200); + } + currentGroup++; + } + else + { + workerThreads[data.ThreadId].Join(2000); + NormalClose(); + } + } + + + /// + /// Called when communication with all watermeters is completed + /// + public static void OnAllCompleted(object sender, AllCompletedEventArgs data) + { + if (AllCompletedHandler == null) return; + try { AllCompletedHandler(sender, data); } + catch (Exception e) { log.Error("AllCompletedHandler(...) failed", e); } + } + public static event EventHandler AllCompletedHandler; + + void DoOnAllCompleted(object sender, AllCompletedEventArgs data) + { + Text = data.CommMessage; + } + } +} diff --git a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.designer.cs b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.designer.cs new file mode 100644 index 000000000..4a79332a0 --- /dev/null +++ b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.designer.cs @@ -0,0 +1,1320 @@ +/// +/// Copyright (c) 2015 Sensus Metering Systems +/// Author: Milan Hanajík +/// +namespace TBF.BenchControl.TestMethods.iPerlCommunication +{ + partial class iPerlCommunicationForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.wmTextBox2 = new System.Windows.Forms.TextBox(); + this.wmLabel2 = new System.Windows.Forms.Label(); + this.wmLabel1 = new System.Windows.Forms.Label(); + this.wmTextBox3 = new System.Windows.Forms.TextBox(); + this.wmLabel3 = new System.Windows.Forms.Label(); + this.wmTextBox4 = new System.Windows.Forms.TextBox(); + this.wmLabel4 = new System.Windows.Forms.Label(); + this.wmTextBox5 = new System.Windows.Forms.TextBox(); + this.wmLabel5 = new System.Windows.Forms.Label(); + this.wmTextBox6 = new System.Windows.Forms.TextBox(); + this.wmLabel6 = new System.Windows.Forms.Label(); + this.wmTextBox1 = new System.Windows.Forms.TextBox(); + this.wmTextBox7 = new System.Windows.Forms.TextBox(); + this.wmLabel7 = new System.Windows.Forms.Label(); + this.wmTextBox8 = new System.Windows.Forms.TextBox(); + this.wmLabel8 = new System.Windows.Forms.Label(); + this.wmTextBox9 = new System.Windows.Forms.TextBox(); + this.wmLabel9 = new System.Windows.Forms.Label(); + this.wmTextBox10 = new System.Windows.Forms.TextBox(); + this.wmLabel10 = new System.Windows.Forms.Label(); + this.wmTextBox12 = new System.Windows.Forms.TextBox(); + this.wmLabel12 = new System.Windows.Forms.Label(); + this.wmTextBox11 = new System.Windows.Forms.TextBox(); + this.wmLabel11 = new System.Windows.Forms.Label(); + this.wmTextBox24 = new System.Windows.Forms.TextBox(); + this.wmLabel24 = new System.Windows.Forms.Label(); + this.wmTextBox23 = new System.Windows.Forms.TextBox(); + this.wmLabel23 = new System.Windows.Forms.Label(); + this.wmTextBox22 = new System.Windows.Forms.TextBox(); + this.wmLabel22 = new System.Windows.Forms.Label(); + this.wmTextBox21 = new System.Windows.Forms.TextBox(); + this.wmLabel21 = new System.Windows.Forms.Label(); + this.wmTextBox20 = new System.Windows.Forms.TextBox(); + this.wmLabel20 = new System.Windows.Forms.Label(); + this.wmTextBox19 = new System.Windows.Forms.TextBox(); + this.wmLabel19 = new System.Windows.Forms.Label(); + this.wmTextBox18 = new System.Windows.Forms.TextBox(); + this.wmLabel18 = new System.Windows.Forms.Label(); + this.wmTextBox17 = new System.Windows.Forms.TextBox(); + this.wmLabel17 = new System.Windows.Forms.Label(); + this.wmTextBox16 = new System.Windows.Forms.TextBox(); + this.wmLabel16 = new System.Windows.Forms.Label(); + this.wmTextBox15 = new System.Windows.Forms.TextBox(); + this.wmLabel15 = new System.Windows.Forms.Label(); + this.wmTextBox14 = new System.Windows.Forms.TextBox(); + this.wmLabel14 = new System.Windows.Forms.Label(); + this.wmTextBox13 = new System.Windows.Forms.TextBox(); + this.wmLabel13 = new System.Windows.Forms.Label(); + this.wmTextBox48 = new System.Windows.Forms.TextBox(); + this.wmLabel48 = new System.Windows.Forms.Label(); + this.wmTextBox47 = new System.Windows.Forms.TextBox(); + this.wmLabel47 = new System.Windows.Forms.Label(); + this.wmTextBox46 = new System.Windows.Forms.TextBox(); + this.wmLabel46 = new System.Windows.Forms.Label(); + this.wmTextBox45 = new System.Windows.Forms.TextBox(); + this.wmLabel45 = new System.Windows.Forms.Label(); + this.wmTextBox44 = new System.Windows.Forms.TextBox(); + this.wmLabel44 = new System.Windows.Forms.Label(); + this.wmTextBox43 = new System.Windows.Forms.TextBox(); + this.wmLabel43 = new System.Windows.Forms.Label(); + this.wmTextBox42 = new System.Windows.Forms.TextBox(); + this.wmLabel42 = new System.Windows.Forms.Label(); + this.wmTextBox41 = new System.Windows.Forms.TextBox(); + this.wmLabel41 = new System.Windows.Forms.Label(); + this.wmTextBox40 = new System.Windows.Forms.TextBox(); + this.wmLabel40 = new System.Windows.Forms.Label(); + this.wmTextBox39 = new System.Windows.Forms.TextBox(); + this.wmLabel39 = new System.Windows.Forms.Label(); + this.wmTextBox38 = new System.Windows.Forms.TextBox(); + this.wmLabel38 = new System.Windows.Forms.Label(); + this.wmTextBox37 = new System.Windows.Forms.TextBox(); + this.wmLabel37 = new System.Windows.Forms.Label(); + this.wmTextBox36 = new System.Windows.Forms.TextBox(); + this.wmLabel36 = new System.Windows.Forms.Label(); + this.wmTextBox35 = new System.Windows.Forms.TextBox(); + this.wmLabel35 = new System.Windows.Forms.Label(); + this.wmTextBox34 = new System.Windows.Forms.TextBox(); + this.wmLabel34 = new System.Windows.Forms.Label(); + this.wmTextBox33 = new System.Windows.Forms.TextBox(); + this.wmLabel33 = new System.Windows.Forms.Label(); + this.wmTextBox32 = new System.Windows.Forms.TextBox(); + this.wmLabel32 = new System.Windows.Forms.Label(); + this.wmTextBox31 = new System.Windows.Forms.TextBox(); + this.wmLabel31 = new System.Windows.Forms.Label(); + this.wmTextBox30 = new System.Windows.Forms.TextBox(); + this.wmLabel30 = new System.Windows.Forms.Label(); + this.wmTextBox29 = new System.Windows.Forms.TextBox(); + this.wmLabel29 = new System.Windows.Forms.Label(); + this.wmTextBox28 = new System.Windows.Forms.TextBox(); + this.wmLabel28 = new System.Windows.Forms.Label(); + this.wmTextBox27 = new System.Windows.Forms.TextBox(); + this.wmLabel27 = new System.Windows.Forms.Label(); + this.wmTextBox26 = new System.Windows.Forms.TextBox(); + this.wmLabel26 = new System.Windows.Forms.Label(); + this.wmTextBox25 = new System.Windows.Forms.TextBox(); + this.wmLabel25 = new System.Windows.Forms.Label(); + this.activityLabel = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // wmTextBox2 + // + this.wmTextBox2.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox2.Location = new System.Drawing.Point(191, 118); + this.wmTextBox2.Name = "wmTextBox2"; + this.wmTextBox2.Size = new System.Drawing.Size(380, 23); + this.wmTextBox2.TabIndex = 1; + this.wmTextBox2.Visible = false; + // + // wmLabel2 + // + this.wmLabel2.AutoSize = true; + this.wmLabel2.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel2.Location = new System.Drawing.Point(26, 124); + this.wmLabel2.Name = "wmLabel2"; + this.wmLabel2.Size = new System.Drawing.Size(40, 16); + this.wmLabel2.TabIndex = 0; + this.wmLabel2.Text = "WM2"; + this.wmLabel2.Visible = false; + // + // wmLabel1 + // + this.wmLabel1.AutoSize = true; + this.wmLabel1.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel1.Location = new System.Drawing.Point(26, 95); + this.wmLabel1.Name = "wmLabel1"; + this.wmLabel1.Size = new System.Drawing.Size(40, 16); + this.wmLabel1.TabIndex = 0; + this.wmLabel1.Text = "WM1"; + this.wmLabel1.Visible = false; + // + // wmTextBox3 + // + this.wmTextBox3.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox3.Location = new System.Drawing.Point(191, 147); + this.wmTextBox3.Name = "wmTextBox3"; + this.wmTextBox3.Size = new System.Drawing.Size(380, 23); + this.wmTextBox3.TabIndex = 1; + this.wmTextBox3.Visible = false; + // + // wmLabel3 + // + this.wmLabel3.AutoSize = true; + this.wmLabel3.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel3.Location = new System.Drawing.Point(26, 153); + this.wmLabel3.Name = "wmLabel3"; + this.wmLabel3.Size = new System.Drawing.Size(40, 16); + this.wmLabel3.TabIndex = 0; + this.wmLabel3.Text = "WM3"; + this.wmLabel3.Visible = false; + // + // wmTextBox4 + // + this.wmTextBox4.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox4.Location = new System.Drawing.Point(191, 176); + this.wmTextBox4.Name = "wmTextBox4"; + this.wmTextBox4.Size = new System.Drawing.Size(380, 23); + this.wmTextBox4.TabIndex = 1; + this.wmTextBox4.Visible = false; + // + // wmLabel4 + // + this.wmLabel4.AutoSize = true; + this.wmLabel4.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel4.Location = new System.Drawing.Point(26, 182); + this.wmLabel4.Name = "wmLabel4"; + this.wmLabel4.Size = new System.Drawing.Size(69, 16); + this.wmLabel4.TabIndex = 0; + this.wmLabel4.Text = "Error [%]"; + this.wmLabel4.Visible = false; + // + // wmTextBox5 + // + this.wmTextBox5.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox5.Location = new System.Drawing.Point(191, 205); + this.wmTextBox5.Name = "wmTextBox5"; + this.wmTextBox5.Size = new System.Drawing.Size(380, 23); + this.wmTextBox5.TabIndex = 1; + this.wmTextBox5.Visible = false; + // + // wmLabel5 + // + this.wmLabel5.AutoSize = true; + this.wmLabel5.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel5.Location = new System.Drawing.Point(26, 211); + this.wmLabel5.Name = "wmLabel5"; + this.wmLabel5.Size = new System.Drawing.Size(69, 16); + this.wmLabel5.TabIndex = 0; + this.wmLabel5.Text = "Error [%]"; + this.wmLabel5.Visible = false; + // + // wmTextBox6 + // + this.wmTextBox6.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox6.Location = new System.Drawing.Point(191, 234); + this.wmTextBox6.Name = "wmTextBox6"; + this.wmTextBox6.Size = new System.Drawing.Size(380, 23); + this.wmTextBox6.TabIndex = 1; + this.wmTextBox6.Visible = false; + // + // wmLabel6 + // + this.wmLabel6.AutoSize = true; + this.wmLabel6.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel6.Location = new System.Drawing.Point(26, 241); + this.wmLabel6.Name = "wmLabel6"; + this.wmLabel6.Size = new System.Drawing.Size(69, 16); + this.wmLabel6.TabIndex = 0; + this.wmLabel6.Text = "Error [%]"; + this.wmLabel6.Visible = false; + // + // wmTextBox1 + // + this.wmTextBox1.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox1.Location = new System.Drawing.Point(191, 89); + this.wmTextBox1.Name = "wmTextBox1"; + this.wmTextBox1.Size = new System.Drawing.Size(380, 23); + this.wmTextBox1.TabIndex = 1; + this.wmTextBox1.Visible = false; + // + // wmTextBox7 + // + this.wmTextBox7.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox7.Location = new System.Drawing.Point(191, 263); + this.wmTextBox7.Name = "wmTextBox7"; + this.wmTextBox7.Size = new System.Drawing.Size(380, 23); + this.wmTextBox7.TabIndex = 9; + this.wmTextBox7.Visible = false; + // + // wmLabel7 + // + this.wmLabel7.AutoSize = true; + this.wmLabel7.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel7.Location = new System.Drawing.Point(26, 270); + this.wmLabel7.Name = "wmLabel7"; + this.wmLabel7.Size = new System.Drawing.Size(69, 16); + this.wmLabel7.TabIndex = 8; + this.wmLabel7.Text = "Error [%]"; + this.wmLabel7.Visible = false; + // + // wmTextBox8 + // + this.wmTextBox8.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox8.Location = new System.Drawing.Point(191, 292); + this.wmTextBox8.Name = "wmTextBox8"; + this.wmTextBox8.Size = new System.Drawing.Size(380, 23); + this.wmTextBox8.TabIndex = 11; + this.wmTextBox8.Visible = false; + // + // wmLabel8 + // + this.wmLabel8.AutoSize = true; + this.wmLabel8.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel8.Location = new System.Drawing.Point(26, 299); + this.wmLabel8.Name = "wmLabel8"; + this.wmLabel8.Size = new System.Drawing.Size(69, 16); + this.wmLabel8.TabIndex = 10; + this.wmLabel8.Text = "Error [%]"; + this.wmLabel8.Visible = false; + // + // wmTextBox9 + // + this.wmTextBox9.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox9.Location = new System.Drawing.Point(191, 321); + this.wmTextBox9.Name = "wmTextBox9"; + this.wmTextBox9.Size = new System.Drawing.Size(380, 23); + this.wmTextBox9.TabIndex = 13; + this.wmTextBox9.Visible = false; + // + // wmLabel9 + // + this.wmLabel9.AutoSize = true; + this.wmLabel9.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel9.Location = new System.Drawing.Point(26, 327); + this.wmLabel9.Name = "wmLabel9"; + this.wmLabel9.Size = new System.Drawing.Size(69, 16); + this.wmLabel9.TabIndex = 12; + this.wmLabel9.Text = "Error [%]"; + this.wmLabel9.Visible = false; + // + // wmTextBox10 + // + this.wmTextBox10.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox10.Location = new System.Drawing.Point(191, 350); + this.wmTextBox10.Name = "wmTextBox10"; + this.wmTextBox10.Size = new System.Drawing.Size(380, 23); + this.wmTextBox10.TabIndex = 15; + this.wmTextBox10.Visible = false; + // + // wmLabel10 + // + this.wmLabel10.AutoSize = true; + this.wmLabel10.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel10.Location = new System.Drawing.Point(26, 356); + this.wmLabel10.Name = "wmLabel10"; + this.wmLabel10.Size = new System.Drawing.Size(69, 16); + this.wmLabel10.TabIndex = 14; + this.wmLabel10.Text = "Error [%]"; + this.wmLabel10.Visible = false; + // + // wmTextBox12 + // + this.wmTextBox12.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox12.Location = new System.Drawing.Point(191, 408); + this.wmTextBox12.Name = "wmTextBox12"; + this.wmTextBox12.Size = new System.Drawing.Size(380, 23); + this.wmTextBox12.TabIndex = 19; + this.wmTextBox12.Visible = false; + // + // wmLabel12 + // + this.wmLabel12.AutoSize = true; + this.wmLabel12.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel12.Location = new System.Drawing.Point(26, 414); + this.wmLabel12.Name = "wmLabel12"; + this.wmLabel12.Size = new System.Drawing.Size(69, 16); + this.wmLabel12.TabIndex = 18; + this.wmLabel12.Text = "Error [%]"; + this.wmLabel12.Visible = false; + // + // wmTextBox11 + // + this.wmTextBox11.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox11.Location = new System.Drawing.Point(191, 379); + this.wmTextBox11.Name = "wmTextBox11"; + this.wmTextBox11.Size = new System.Drawing.Size(380, 23); + this.wmTextBox11.TabIndex = 17; + this.wmTextBox11.Visible = false; + // + // wmLabel11 + // + this.wmLabel11.AutoSize = true; + this.wmLabel11.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel11.Location = new System.Drawing.Point(26, 385); + this.wmLabel11.Name = "wmLabel11"; + this.wmLabel11.Size = new System.Drawing.Size(69, 16); + this.wmLabel11.TabIndex = 16; + this.wmLabel11.Text = "Error [%]"; + this.wmLabel11.Visible = false; + // + // wmTextBox24 + // + this.wmTextBox24.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox24.Location = new System.Drawing.Point(191, 756); + this.wmTextBox24.Name = "wmTextBox24"; + this.wmTextBox24.Size = new System.Drawing.Size(380, 23); + this.wmTextBox24.TabIndex = 43; + this.wmTextBox24.Visible = false; + // + // wmLabel24 + // + this.wmLabel24.AutoSize = true; + this.wmLabel24.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel24.Location = new System.Drawing.Point(26, 762); + this.wmLabel24.Name = "wmLabel24"; + this.wmLabel24.Size = new System.Drawing.Size(69, 16); + this.wmLabel24.TabIndex = 42; + this.wmLabel24.Text = "Error [%]"; + this.wmLabel24.Visible = false; + // + // wmTextBox23 + // + this.wmTextBox23.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox23.Location = new System.Drawing.Point(191, 727); + this.wmTextBox23.Name = "wmTextBox23"; + this.wmTextBox23.Size = new System.Drawing.Size(380, 23); + this.wmTextBox23.TabIndex = 41; + this.wmTextBox23.Visible = false; + // + // wmLabel23 + // + this.wmLabel23.AutoSize = true; + this.wmLabel23.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel23.Location = new System.Drawing.Point(26, 733); + this.wmLabel23.Name = "wmLabel23"; + this.wmLabel23.Size = new System.Drawing.Size(69, 16); + this.wmLabel23.TabIndex = 40; + this.wmLabel23.Text = "Error [%]"; + this.wmLabel23.Visible = false; + // + // wmTextBox22 + // + this.wmTextBox22.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox22.Location = new System.Drawing.Point(191, 698); + this.wmTextBox22.Name = "wmTextBox22"; + this.wmTextBox22.Size = new System.Drawing.Size(380, 23); + this.wmTextBox22.TabIndex = 39; + this.wmTextBox22.Visible = false; + // + // wmLabel22 + // + this.wmLabel22.AutoSize = true; + this.wmLabel22.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel22.Location = new System.Drawing.Point(26, 704); + this.wmLabel22.Name = "wmLabel22"; + this.wmLabel22.Size = new System.Drawing.Size(69, 16); + this.wmLabel22.TabIndex = 38; + this.wmLabel22.Text = "Error [%]"; + this.wmLabel22.Visible = false; + // + // wmTextBox21 + // + this.wmTextBox21.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox21.Location = new System.Drawing.Point(191, 669); + this.wmTextBox21.Name = "wmTextBox21"; + this.wmTextBox21.Size = new System.Drawing.Size(380, 23); + this.wmTextBox21.TabIndex = 37; + this.wmTextBox21.Visible = false; + // + // wmLabel21 + // + this.wmLabel21.AutoSize = true; + this.wmLabel21.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel21.Location = new System.Drawing.Point(26, 675); + this.wmLabel21.Name = "wmLabel21"; + this.wmLabel21.Size = new System.Drawing.Size(69, 16); + this.wmLabel21.TabIndex = 36; + this.wmLabel21.Text = "Error [%]"; + this.wmLabel21.Visible = false; + // + // wmTextBox20 + // + this.wmTextBox20.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox20.Location = new System.Drawing.Point(191, 640); + this.wmTextBox20.Name = "wmTextBox20"; + this.wmTextBox20.Size = new System.Drawing.Size(380, 23); + this.wmTextBox20.TabIndex = 35; + this.wmTextBox20.Visible = false; + // + // wmLabel20 + // + this.wmLabel20.AutoSize = true; + this.wmLabel20.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel20.Location = new System.Drawing.Point(26, 647); + this.wmLabel20.Name = "wmLabel20"; + this.wmLabel20.Size = new System.Drawing.Size(69, 16); + this.wmLabel20.TabIndex = 34; + this.wmLabel20.Text = "Error [%]"; + this.wmLabel20.Visible = false; + // + // wmTextBox19 + // + this.wmTextBox19.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox19.Location = new System.Drawing.Point(191, 611); + this.wmTextBox19.Name = "wmTextBox19"; + this.wmTextBox19.Size = new System.Drawing.Size(380, 23); + this.wmTextBox19.TabIndex = 33; + this.wmTextBox19.Visible = false; + // + // wmLabel19 + // + this.wmLabel19.AutoSize = true; + this.wmLabel19.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel19.Location = new System.Drawing.Point(26, 618); + this.wmLabel19.Name = "wmLabel19"; + this.wmLabel19.Size = new System.Drawing.Size(69, 16); + this.wmLabel19.TabIndex = 32; + this.wmLabel19.Text = "Error [%]"; + this.wmLabel19.Visible = false; + // + // wmTextBox18 + // + this.wmTextBox18.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox18.Location = new System.Drawing.Point(191, 582); + this.wmTextBox18.Name = "wmTextBox18"; + this.wmTextBox18.Size = new System.Drawing.Size(380, 23); + this.wmTextBox18.TabIndex = 27; + this.wmTextBox18.Visible = false; + // + // wmLabel18 + // + this.wmLabel18.AutoSize = true; + this.wmLabel18.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel18.Location = new System.Drawing.Point(26, 589); + this.wmLabel18.Name = "wmLabel18"; + this.wmLabel18.Size = new System.Drawing.Size(69, 16); + this.wmLabel18.TabIndex = 23; + this.wmLabel18.Text = "Error [%]"; + this.wmLabel18.Visible = false; + // + // wmTextBox17 + // + this.wmTextBox17.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox17.Location = new System.Drawing.Point(191, 553); + this.wmTextBox17.Name = "wmTextBox17"; + this.wmTextBox17.Size = new System.Drawing.Size(380, 23); + this.wmTextBox17.TabIndex = 26; + this.wmTextBox17.Visible = false; + // + // wmLabel17 + // + this.wmLabel17.AutoSize = true; + this.wmLabel17.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel17.Location = new System.Drawing.Point(26, 559); + this.wmLabel17.Name = "wmLabel17"; + this.wmLabel17.Size = new System.Drawing.Size(69, 16); + this.wmLabel17.TabIndex = 22; + this.wmLabel17.Text = "Error [%]"; + this.wmLabel17.Visible = false; + // + // wmTextBox16 + // + this.wmTextBox16.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox16.Location = new System.Drawing.Point(191, 524); + this.wmTextBox16.Name = "wmTextBox16"; + this.wmTextBox16.Size = new System.Drawing.Size(380, 23); + this.wmTextBox16.TabIndex = 30; + this.wmTextBox16.Visible = false; + // + // wmLabel16 + // + this.wmLabel16.AutoSize = true; + this.wmLabel16.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel16.Location = new System.Drawing.Point(26, 530); + this.wmLabel16.Name = "wmLabel16"; + this.wmLabel16.Size = new System.Drawing.Size(69, 16); + this.wmLabel16.TabIndex = 21; + this.wmLabel16.Text = "Error [%]"; + this.wmLabel16.Visible = false; + // + // wmTextBox15 + // + this.wmTextBox15.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox15.Location = new System.Drawing.Point(191, 495); + this.wmTextBox15.Name = "wmTextBox15"; + this.wmTextBox15.Size = new System.Drawing.Size(380, 23); + this.wmTextBox15.TabIndex = 31; + this.wmTextBox15.Visible = false; + // + // wmLabel15 + // + this.wmLabel15.AutoSize = true; + this.wmLabel15.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel15.Location = new System.Drawing.Point(26, 501); + this.wmLabel15.Name = "wmLabel15"; + this.wmLabel15.Size = new System.Drawing.Size(69, 16); + this.wmLabel15.TabIndex = 20; + this.wmLabel15.Text = "Error [%]"; + this.wmLabel15.Visible = false; + // + // wmTextBox14 + // + this.wmTextBox14.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox14.Location = new System.Drawing.Point(191, 466); + this.wmTextBox14.Name = "wmTextBox14"; + this.wmTextBox14.Size = new System.Drawing.Size(380, 23); + this.wmTextBox14.TabIndex = 28; + this.wmTextBox14.Visible = false; + // + // wmLabel14 + // + this.wmLabel14.AutoSize = true; + this.wmLabel14.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel14.Location = new System.Drawing.Point(26, 472); + this.wmLabel14.Name = "wmLabel14"; + this.wmLabel14.Size = new System.Drawing.Size(69, 16); + this.wmLabel14.TabIndex = 25; + this.wmLabel14.Text = "Error [%]"; + this.wmLabel14.Visible = false; + // + // wmTextBox13 + // + this.wmTextBox13.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox13.Location = new System.Drawing.Point(191, 437); + this.wmTextBox13.Name = "wmTextBox13"; + this.wmTextBox13.Size = new System.Drawing.Size(380, 23); + this.wmTextBox13.TabIndex = 29; + this.wmTextBox13.Visible = false; + // + // wmLabel13 + // + this.wmLabel13.AutoSize = true; + this.wmLabel13.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel13.Location = new System.Drawing.Point(26, 443); + this.wmLabel13.Name = "wmLabel13"; + this.wmLabel13.Size = new System.Drawing.Size(69, 16); + this.wmLabel13.TabIndex = 24; + this.wmLabel13.Text = "Error [%]"; + this.wmLabel13.Visible = false; + // + // wmTextBox48 + // + this.wmTextBox48.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox48.Location = new System.Drawing.Point(752, 756); + this.wmTextBox48.Name = "wmTextBox48"; + this.wmTextBox48.Size = new System.Drawing.Size(380, 23); + this.wmTextBox48.TabIndex = 94; + this.wmTextBox48.Visible = false; + // + // wmLabel48 + // + this.wmLabel48.AutoSize = true; + this.wmLabel48.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel48.Location = new System.Drawing.Point(587, 762); + this.wmLabel48.Name = "wmLabel48"; + this.wmLabel48.Size = new System.Drawing.Size(69, 16); + this.wmLabel48.TabIndex = 93; + this.wmLabel48.Text = "Error [%]"; + this.wmLabel48.Visible = false; + // + // wmTextBox47 + // + this.wmTextBox47.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox47.Location = new System.Drawing.Point(752, 727); + this.wmTextBox47.Name = "wmTextBox47"; + this.wmTextBox47.Size = new System.Drawing.Size(380, 23); + this.wmTextBox47.TabIndex = 92; + this.wmTextBox47.Visible = false; + // + // wmLabel47 + // + this.wmLabel47.AutoSize = true; + this.wmLabel47.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel47.Location = new System.Drawing.Point(587, 733); + this.wmLabel47.Name = "wmLabel47"; + this.wmLabel47.Size = new System.Drawing.Size(69, 16); + this.wmLabel47.TabIndex = 91; + this.wmLabel47.Text = "Error [%]"; + this.wmLabel47.Visible = false; + // + // wmTextBox46 + // + this.wmTextBox46.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox46.Location = new System.Drawing.Point(752, 698); + this.wmTextBox46.Name = "wmTextBox46"; + this.wmTextBox46.Size = new System.Drawing.Size(380, 23); + this.wmTextBox46.TabIndex = 90; + this.wmTextBox46.Visible = false; + // + // wmLabel46 + // + this.wmLabel46.AutoSize = true; + this.wmLabel46.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel46.Location = new System.Drawing.Point(587, 704); + this.wmLabel46.Name = "wmLabel46"; + this.wmLabel46.Size = new System.Drawing.Size(69, 16); + this.wmLabel46.TabIndex = 89; + this.wmLabel46.Text = "Error [%]"; + this.wmLabel46.Visible = false; + // + // wmTextBox45 + // + this.wmTextBox45.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox45.Location = new System.Drawing.Point(752, 669); + this.wmTextBox45.Name = "wmTextBox45"; + this.wmTextBox45.Size = new System.Drawing.Size(380, 23); + this.wmTextBox45.TabIndex = 88; + this.wmTextBox45.Visible = false; + // + // wmLabel45 + // + this.wmLabel45.AutoSize = true; + this.wmLabel45.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel45.Location = new System.Drawing.Point(587, 675); + this.wmLabel45.Name = "wmLabel45"; + this.wmLabel45.Size = new System.Drawing.Size(69, 16); + this.wmLabel45.TabIndex = 87; + this.wmLabel45.Text = "Error [%]"; + this.wmLabel45.Visible = false; + // + // wmTextBox44 + // + this.wmTextBox44.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox44.Location = new System.Drawing.Point(752, 640); + this.wmTextBox44.Name = "wmTextBox44"; + this.wmTextBox44.Size = new System.Drawing.Size(380, 23); + this.wmTextBox44.TabIndex = 86; + this.wmTextBox44.Visible = false; + // + // wmLabel44 + // + this.wmLabel44.AutoSize = true; + this.wmLabel44.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel44.Location = new System.Drawing.Point(587, 647); + this.wmLabel44.Name = "wmLabel44"; + this.wmLabel44.Size = new System.Drawing.Size(69, 16); + this.wmLabel44.TabIndex = 85; + this.wmLabel44.Text = "Error [%]"; + this.wmLabel44.Visible = false; + // + // wmTextBox43 + // + this.wmTextBox43.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox43.Location = new System.Drawing.Point(752, 611); + this.wmTextBox43.Name = "wmTextBox43"; + this.wmTextBox43.Size = new System.Drawing.Size(380, 23); + this.wmTextBox43.TabIndex = 84; + this.wmTextBox43.Visible = false; + // + // wmLabel43 + // + this.wmLabel43.AutoSize = true; + this.wmLabel43.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel43.Location = new System.Drawing.Point(587, 618); + this.wmLabel43.Name = "wmLabel43"; + this.wmLabel43.Size = new System.Drawing.Size(69, 16); + this.wmLabel43.TabIndex = 83; + this.wmLabel43.Text = "Error [%]"; + this.wmLabel43.Visible = false; + // + // wmTextBox42 + // + this.wmTextBox42.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox42.Location = new System.Drawing.Point(752, 582); + this.wmTextBox42.Name = "wmTextBox42"; + this.wmTextBox42.Size = new System.Drawing.Size(380, 23); + this.wmTextBox42.TabIndex = 78; + this.wmTextBox42.Visible = false; + // + // wmLabel42 + // + this.wmLabel42.AutoSize = true; + this.wmLabel42.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel42.Location = new System.Drawing.Point(587, 589); + this.wmLabel42.Name = "wmLabel42"; + this.wmLabel42.Size = new System.Drawing.Size(69, 16); + this.wmLabel42.TabIndex = 74; + this.wmLabel42.Text = "Error [%]"; + this.wmLabel42.Visible = false; + // + // wmTextBox41 + // + this.wmTextBox41.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox41.Location = new System.Drawing.Point(752, 553); + this.wmTextBox41.Name = "wmTextBox41"; + this.wmTextBox41.Size = new System.Drawing.Size(380, 23); + this.wmTextBox41.TabIndex = 77; + this.wmTextBox41.Visible = false; + // + // wmLabel41 + // + this.wmLabel41.AutoSize = true; + this.wmLabel41.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel41.Location = new System.Drawing.Point(587, 559); + this.wmLabel41.Name = "wmLabel41"; + this.wmLabel41.Size = new System.Drawing.Size(69, 16); + this.wmLabel41.TabIndex = 73; + this.wmLabel41.Text = "Error [%]"; + this.wmLabel41.Visible = false; + // + // wmTextBox40 + // + this.wmTextBox40.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox40.Location = new System.Drawing.Point(752, 524); + this.wmTextBox40.Name = "wmTextBox40"; + this.wmTextBox40.Size = new System.Drawing.Size(380, 23); + this.wmTextBox40.TabIndex = 81; + this.wmTextBox40.Visible = false; + // + // wmLabel40 + // + this.wmLabel40.AutoSize = true; + this.wmLabel40.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel40.Location = new System.Drawing.Point(587, 530); + this.wmLabel40.Name = "wmLabel40"; + this.wmLabel40.Size = new System.Drawing.Size(69, 16); + this.wmLabel40.TabIndex = 72; + this.wmLabel40.Text = "Error [%]"; + this.wmLabel40.Visible = false; + // + // wmTextBox39 + // + this.wmTextBox39.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox39.Location = new System.Drawing.Point(752, 495); + this.wmTextBox39.Name = "wmTextBox39"; + this.wmTextBox39.Size = new System.Drawing.Size(380, 23); + this.wmTextBox39.TabIndex = 82; + this.wmTextBox39.Visible = false; + // + // wmLabel39 + // + this.wmLabel39.AutoSize = true; + this.wmLabel39.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel39.Location = new System.Drawing.Point(587, 501); + this.wmLabel39.Name = "wmLabel39"; + this.wmLabel39.Size = new System.Drawing.Size(69, 16); + this.wmLabel39.TabIndex = 71; + this.wmLabel39.Text = "Error [%]"; + this.wmLabel39.Visible = false; + // + // wmTextBox38 + // + this.wmTextBox38.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox38.Location = new System.Drawing.Point(752, 466); + this.wmTextBox38.Name = "wmTextBox38"; + this.wmTextBox38.Size = new System.Drawing.Size(380, 23); + this.wmTextBox38.TabIndex = 79; + this.wmTextBox38.Visible = false; + // + // wmLabel38 + // + this.wmLabel38.AutoSize = true; + this.wmLabel38.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel38.Location = new System.Drawing.Point(587, 472); + this.wmLabel38.Name = "wmLabel38"; + this.wmLabel38.Size = new System.Drawing.Size(69, 16); + this.wmLabel38.TabIndex = 76; + this.wmLabel38.Text = "Error [%]"; + this.wmLabel38.Visible = false; + // + // wmTextBox37 + // + this.wmTextBox37.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox37.Location = new System.Drawing.Point(752, 437); + this.wmTextBox37.Name = "wmTextBox37"; + this.wmTextBox37.Size = new System.Drawing.Size(380, 23); + this.wmTextBox37.TabIndex = 80; + this.wmTextBox37.Visible = false; + // + // wmLabel37 + // + this.wmLabel37.AutoSize = true; + this.wmLabel37.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel37.Location = new System.Drawing.Point(587, 443); + this.wmLabel37.Name = "wmLabel37"; + this.wmLabel37.Size = new System.Drawing.Size(69, 16); + this.wmLabel37.TabIndex = 75; + this.wmLabel37.Text = "Error [%]"; + this.wmLabel37.Visible = false; + // + // wmTextBox36 + // + this.wmTextBox36.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox36.Location = new System.Drawing.Point(752, 408); + this.wmTextBox36.Name = "wmTextBox36"; + this.wmTextBox36.Size = new System.Drawing.Size(380, 23); + this.wmTextBox36.TabIndex = 70; + this.wmTextBox36.Visible = false; + // + // wmLabel36 + // + this.wmLabel36.AutoSize = true; + this.wmLabel36.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel36.Location = new System.Drawing.Point(587, 414); + this.wmLabel36.Name = "wmLabel36"; + this.wmLabel36.Size = new System.Drawing.Size(69, 16); + this.wmLabel36.TabIndex = 69; + this.wmLabel36.Text = "Error [%]"; + this.wmLabel36.Visible = false; + // + // wmTextBox35 + // + this.wmTextBox35.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox35.Location = new System.Drawing.Point(752, 379); + this.wmTextBox35.Name = "wmTextBox35"; + this.wmTextBox35.Size = new System.Drawing.Size(380, 23); + this.wmTextBox35.TabIndex = 68; + this.wmTextBox35.Visible = false; + // + // wmLabel35 + // + this.wmLabel35.AutoSize = true; + this.wmLabel35.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel35.Location = new System.Drawing.Point(587, 385); + this.wmLabel35.Name = "wmLabel35"; + this.wmLabel35.Size = new System.Drawing.Size(69, 16); + this.wmLabel35.TabIndex = 67; + this.wmLabel35.Text = "Error [%]"; + this.wmLabel35.Visible = false; + // + // wmTextBox34 + // + this.wmTextBox34.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox34.Location = new System.Drawing.Point(752, 350); + this.wmTextBox34.Name = "wmTextBox34"; + this.wmTextBox34.Size = new System.Drawing.Size(380, 23); + this.wmTextBox34.TabIndex = 66; + this.wmTextBox34.Visible = false; + // + // wmLabel34 + // + this.wmLabel34.AutoSize = true; + this.wmLabel34.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel34.Location = new System.Drawing.Point(587, 356); + this.wmLabel34.Name = "wmLabel34"; + this.wmLabel34.Size = new System.Drawing.Size(69, 16); + this.wmLabel34.TabIndex = 65; + this.wmLabel34.Text = "Error [%]"; + this.wmLabel34.Visible = false; + // + // wmTextBox33 + // + this.wmTextBox33.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox33.Location = new System.Drawing.Point(752, 321); + this.wmTextBox33.Name = "wmTextBox33"; + this.wmTextBox33.Size = new System.Drawing.Size(380, 23); + this.wmTextBox33.TabIndex = 64; + this.wmTextBox33.Visible = false; + // + // wmLabel33 + // + this.wmLabel33.AutoSize = true; + this.wmLabel33.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel33.Location = new System.Drawing.Point(587, 327); + this.wmLabel33.Name = "wmLabel33"; + this.wmLabel33.Size = new System.Drawing.Size(69, 16); + this.wmLabel33.TabIndex = 63; + this.wmLabel33.Text = "Error [%]"; + this.wmLabel33.Visible = false; + // + // wmTextBox32 + // + this.wmTextBox32.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox32.Location = new System.Drawing.Point(752, 292); + this.wmTextBox32.Name = "wmTextBox32"; + this.wmTextBox32.Size = new System.Drawing.Size(380, 23); + this.wmTextBox32.TabIndex = 62; + this.wmTextBox32.Visible = false; + // + // wmLabel32 + // + this.wmLabel32.AutoSize = true; + this.wmLabel32.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel32.Location = new System.Drawing.Point(587, 299); + this.wmLabel32.Name = "wmLabel32"; + this.wmLabel32.Size = new System.Drawing.Size(69, 16); + this.wmLabel32.TabIndex = 61; + this.wmLabel32.Text = "Error [%]"; + this.wmLabel32.Visible = false; + // + // wmTextBox31 + // + this.wmTextBox31.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox31.Location = new System.Drawing.Point(752, 263); + this.wmTextBox31.Name = "wmTextBox31"; + this.wmTextBox31.Size = new System.Drawing.Size(380, 23); + this.wmTextBox31.TabIndex = 60; + this.wmTextBox31.Visible = false; + // + // wmLabel31 + // + this.wmLabel31.AutoSize = true; + this.wmLabel31.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel31.Location = new System.Drawing.Point(587, 270); + this.wmLabel31.Name = "wmLabel31"; + this.wmLabel31.Size = new System.Drawing.Size(69, 16); + this.wmLabel31.TabIndex = 59; + this.wmLabel31.Text = "Error [%]"; + this.wmLabel31.Visible = false; + // + // wmTextBox30 + // + this.wmTextBox30.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox30.Location = new System.Drawing.Point(752, 234); + this.wmTextBox30.Name = "wmTextBox30"; + this.wmTextBox30.Size = new System.Drawing.Size(380, 23); + this.wmTextBox30.TabIndex = 54; + this.wmTextBox30.Visible = false; + // + // wmLabel30 + // + this.wmLabel30.AutoSize = true; + this.wmLabel30.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel30.Location = new System.Drawing.Point(587, 241); + this.wmLabel30.Name = "wmLabel30"; + this.wmLabel30.Size = new System.Drawing.Size(69, 16); + this.wmLabel30.TabIndex = 50; + this.wmLabel30.Text = "Error [%]"; + this.wmLabel30.Visible = false; + // + // wmTextBox29 + // + this.wmTextBox29.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox29.Location = new System.Drawing.Point(752, 205); + this.wmTextBox29.Name = "wmTextBox29"; + this.wmTextBox29.Size = new System.Drawing.Size(380, 23); + this.wmTextBox29.TabIndex = 53; + this.wmTextBox29.Visible = false; + // + // wmLabel29 + // + this.wmLabel29.AutoSize = true; + this.wmLabel29.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel29.Location = new System.Drawing.Point(587, 211); + this.wmLabel29.Name = "wmLabel29"; + this.wmLabel29.Size = new System.Drawing.Size(69, 16); + this.wmLabel29.TabIndex = 49; + this.wmLabel29.Text = "Error [%]"; + this.wmLabel29.Visible = false; + // + // wmTextBox28 + // + this.wmTextBox28.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox28.Location = new System.Drawing.Point(752, 176); + this.wmTextBox28.Name = "wmTextBox28"; + this.wmTextBox28.Size = new System.Drawing.Size(380, 23); + this.wmTextBox28.TabIndex = 57; + this.wmTextBox28.Visible = false; + // + // wmLabel28 + // + this.wmLabel28.AutoSize = true; + this.wmLabel28.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel28.Location = new System.Drawing.Point(587, 182); + this.wmLabel28.Name = "wmLabel28"; + this.wmLabel28.Size = new System.Drawing.Size(69, 16); + this.wmLabel28.TabIndex = 48; + this.wmLabel28.Text = "Error [%]"; + this.wmLabel28.Visible = false; + // + // wmTextBox27 + // + this.wmTextBox27.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox27.Location = new System.Drawing.Point(752, 147); + this.wmTextBox27.Name = "wmTextBox27"; + this.wmTextBox27.Size = new System.Drawing.Size(380, 23); + this.wmTextBox27.TabIndex = 58; + this.wmTextBox27.Visible = false; + // + // wmLabel27 + // + this.wmLabel27.AutoSize = true; + this.wmLabel27.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel27.Location = new System.Drawing.Point(587, 153); + this.wmLabel27.Name = "wmLabel27"; + this.wmLabel27.Size = new System.Drawing.Size(69, 16); + this.wmLabel27.TabIndex = 47; + this.wmLabel27.Text = "Error [%]"; + this.wmLabel27.Visible = false; + // + // wmTextBox26 + // + this.wmTextBox26.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox26.Location = new System.Drawing.Point(752, 118); + this.wmTextBox26.Name = "wmTextBox26"; + this.wmTextBox26.Size = new System.Drawing.Size(380, 23); + this.wmTextBox26.TabIndex = 55; + this.wmTextBox26.Visible = false; + // + // wmLabel26 + // + this.wmLabel26.AutoSize = true; + this.wmLabel26.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel26.Location = new System.Drawing.Point(587, 124); + this.wmLabel26.Name = "wmLabel26"; + this.wmLabel26.Size = new System.Drawing.Size(69, 16); + this.wmLabel26.TabIndex = 52; + this.wmLabel26.Text = "Error [%]"; + this.wmLabel26.Visible = false; + // + // wmTextBox25 + // + this.wmTextBox25.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmTextBox25.Location = new System.Drawing.Point(752, 89); + this.wmTextBox25.Name = "wmTextBox25"; + this.wmTextBox25.Size = new System.Drawing.Size(380, 23); + this.wmTextBox25.TabIndex = 56; + this.wmTextBox25.Visible = false; + // + // wmLabel25 + // + this.wmLabel25.AutoSize = true; + this.wmLabel25.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.wmLabel25.Location = new System.Drawing.Point(587, 95); + this.wmLabel25.Name = "wmLabel25"; + this.wmLabel25.Size = new System.Drawing.Size(69, 16); + this.wmLabel25.TabIndex = 51; + this.wmLabel25.Text = "Error [%]"; + this.wmLabel25.Visible = false; + // + // activityLabel + // + 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.Name = "activityLabel"; + this.activityLabel.Size = new System.Drawing.Size(225, 42); + this.activityLabel.TabIndex = 95; + this.activityLabel.Text = "Activity label"; + // + // iPerlCommunicationForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.DarkGoldenrod; + this.ClientSize = new System.Drawing.Size(1161, 795); + this.Controls.Add(this.activityLabel); + this.Controls.Add(this.wmTextBox48); + this.Controls.Add(this.wmLabel48); + this.Controls.Add(this.wmTextBox47); + this.Controls.Add(this.wmLabel47); + this.Controls.Add(this.wmTextBox46); + this.Controls.Add(this.wmLabel46); + this.Controls.Add(this.wmTextBox45); + this.Controls.Add(this.wmLabel45); + this.Controls.Add(this.wmTextBox44); + this.Controls.Add(this.wmLabel44); + this.Controls.Add(this.wmTextBox43); + this.Controls.Add(this.wmLabel43); + this.Controls.Add(this.wmTextBox42); + this.Controls.Add(this.wmLabel42); + this.Controls.Add(this.wmTextBox41); + this.Controls.Add(this.wmLabel41); + this.Controls.Add(this.wmTextBox40); + this.Controls.Add(this.wmLabel40); + this.Controls.Add(this.wmTextBox39); + this.Controls.Add(this.wmLabel39); + this.Controls.Add(this.wmTextBox38); + this.Controls.Add(this.wmLabel38); + this.Controls.Add(this.wmTextBox37); + this.Controls.Add(this.wmLabel37); + this.Controls.Add(this.wmTextBox36); + this.Controls.Add(this.wmLabel36); + this.Controls.Add(this.wmTextBox35); + this.Controls.Add(this.wmLabel35); + this.Controls.Add(this.wmTextBox34); + this.Controls.Add(this.wmLabel34); + this.Controls.Add(this.wmTextBox33); + this.Controls.Add(this.wmLabel33); + this.Controls.Add(this.wmTextBox32); + this.Controls.Add(this.wmLabel32); + this.Controls.Add(this.wmTextBox31); + this.Controls.Add(this.wmLabel31); + this.Controls.Add(this.wmTextBox30); + this.Controls.Add(this.wmLabel30); + this.Controls.Add(this.wmTextBox29); + this.Controls.Add(this.wmLabel29); + this.Controls.Add(this.wmTextBox28); + this.Controls.Add(this.wmLabel28); + this.Controls.Add(this.wmTextBox27); + this.Controls.Add(this.wmLabel27); + this.Controls.Add(this.wmTextBox26); + this.Controls.Add(this.wmLabel26); + this.Controls.Add(this.wmTextBox25); + this.Controls.Add(this.wmLabel25); + this.Controls.Add(this.wmTextBox24); + this.Controls.Add(this.wmLabel24); + this.Controls.Add(this.wmTextBox23); + this.Controls.Add(this.wmLabel23); + this.Controls.Add(this.wmTextBox22); + this.Controls.Add(this.wmLabel22); + this.Controls.Add(this.wmTextBox21); + this.Controls.Add(this.wmLabel21); + this.Controls.Add(this.wmTextBox20); + this.Controls.Add(this.wmLabel20); + this.Controls.Add(this.wmTextBox19); + this.Controls.Add(this.wmLabel19); + this.Controls.Add(this.wmTextBox18); + this.Controls.Add(this.wmLabel18); + this.Controls.Add(this.wmTextBox17); + this.Controls.Add(this.wmLabel17); + this.Controls.Add(this.wmTextBox16); + this.Controls.Add(this.wmLabel16); + this.Controls.Add(this.wmTextBox15); + this.Controls.Add(this.wmLabel15); + this.Controls.Add(this.wmTextBox14); + this.Controls.Add(this.wmLabel14); + this.Controls.Add(this.wmTextBox13); + this.Controls.Add(this.wmLabel13); + this.Controls.Add(this.wmTextBox12); + this.Controls.Add(this.wmLabel12); + this.Controls.Add(this.wmTextBox11); + this.Controls.Add(this.wmLabel11); + this.Controls.Add(this.wmTextBox10); + this.Controls.Add(this.wmLabel10); + this.Controls.Add(this.wmTextBox9); + this.Controls.Add(this.wmLabel9); + this.Controls.Add(this.wmTextBox8); + this.Controls.Add(this.wmLabel8); + this.Controls.Add(this.wmTextBox7); + this.Controls.Add(this.wmLabel7); + this.Controls.Add(this.wmTextBox6); + this.Controls.Add(this.wmLabel6); + this.Controls.Add(this.wmTextBox5); + this.Controls.Add(this.wmLabel5); + this.Controls.Add(this.wmTextBox4); + this.Controls.Add(this.wmLabel4); + this.Controls.Add(this.wmTextBox3); + this.Controls.Add(this.wmLabel3); + this.Controls.Add(this.wmTextBox2); + this.Controls.Add(this.wmLabel2); + this.Controls.Add(this.wmTextBox1); + this.Controls.Add(this.wmLabel1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.Name = "iPerlCommunicationForm"; + this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; + this.Text = "Water Meter States"; + this.TopMost = true; + this.Load += new System.EventHandler(this.iPerlCommunicationForm_Load); + this.Paint += new System.Windows.Forms.PaintEventHandler(this.WMErrorsForm_Paint); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TextBox wmTextBox2; + private System.Windows.Forms.Label wmLabel2; + private System.Windows.Forms.Label wmLabel1; + private System.Windows.Forms.TextBox wmTextBox3; + private System.Windows.Forms.Label wmLabel3; + private System.Windows.Forms.TextBox wmTextBox4; + private System.Windows.Forms.Label wmLabel4; + private System.Windows.Forms.TextBox wmTextBox5; + private System.Windows.Forms.Label wmLabel5; + private System.Windows.Forms.TextBox wmTextBox6; + private System.Windows.Forms.Label wmLabel6; + private System.Windows.Forms.TextBox wmTextBox1; + private System.Windows.Forms.TextBox wmTextBox7; + private System.Windows.Forms.Label wmLabel7; + private System.Windows.Forms.TextBox wmTextBox8; + private System.Windows.Forms.Label wmLabel8; + private System.Windows.Forms.TextBox wmTextBox9; + private System.Windows.Forms.Label wmLabel9; + private System.Windows.Forms.TextBox wmTextBox10; + private System.Windows.Forms.Label wmLabel10; + private System.Windows.Forms.TextBox wmTextBox12; + private System.Windows.Forms.Label wmLabel12; + private System.Windows.Forms.TextBox wmTextBox11; + private System.Windows.Forms.Label wmLabel11; + private System.Windows.Forms.TextBox wmTextBox24; + private System.Windows.Forms.Label wmLabel24; + private System.Windows.Forms.TextBox wmTextBox23; + private System.Windows.Forms.Label wmLabel23; + private System.Windows.Forms.TextBox wmTextBox22; + private System.Windows.Forms.Label wmLabel22; + private System.Windows.Forms.TextBox wmTextBox21; + private System.Windows.Forms.Label wmLabel21; + private System.Windows.Forms.TextBox wmTextBox20; + private System.Windows.Forms.Label wmLabel20; + private System.Windows.Forms.TextBox wmTextBox19; + private System.Windows.Forms.Label wmLabel19; + private System.Windows.Forms.TextBox wmTextBox18; + private System.Windows.Forms.Label wmLabel18; + private System.Windows.Forms.TextBox wmTextBox17; + private System.Windows.Forms.Label wmLabel17; + private System.Windows.Forms.TextBox wmTextBox16; + private System.Windows.Forms.Label wmLabel16; + private System.Windows.Forms.TextBox wmTextBox15; + private System.Windows.Forms.Label wmLabel15; + private System.Windows.Forms.TextBox wmTextBox14; + private System.Windows.Forms.Label wmLabel14; + private System.Windows.Forms.TextBox wmTextBox13; + private System.Windows.Forms.Label wmLabel13; + private System.Windows.Forms.TextBox wmTextBox48; + private System.Windows.Forms.Label wmLabel48; + private System.Windows.Forms.TextBox wmTextBox47; + private System.Windows.Forms.Label wmLabel47; + private System.Windows.Forms.TextBox wmTextBox46; + private System.Windows.Forms.Label wmLabel46; + private System.Windows.Forms.TextBox wmTextBox45; + private System.Windows.Forms.Label wmLabel45; + private System.Windows.Forms.TextBox wmTextBox44; + private System.Windows.Forms.Label wmLabel44; + private System.Windows.Forms.TextBox wmTextBox43; + private System.Windows.Forms.Label wmLabel43; + private System.Windows.Forms.TextBox wmTextBox42; + private System.Windows.Forms.Label wmLabel42; + private System.Windows.Forms.TextBox wmTextBox41; + private System.Windows.Forms.Label wmLabel41; + private System.Windows.Forms.TextBox wmTextBox40; + private System.Windows.Forms.Label wmLabel40; + private System.Windows.Forms.TextBox wmTextBox39; + private System.Windows.Forms.Label wmLabel39; + private System.Windows.Forms.TextBox wmTextBox38; + private System.Windows.Forms.Label wmLabel38; + private System.Windows.Forms.TextBox wmTextBox37; + private System.Windows.Forms.Label wmLabel37; + private System.Windows.Forms.TextBox wmTextBox36; + private System.Windows.Forms.Label wmLabel36; + private System.Windows.Forms.TextBox wmTextBox35; + private System.Windows.Forms.Label wmLabel35; + private System.Windows.Forms.TextBox wmTextBox34; + private System.Windows.Forms.Label wmLabel34; + private System.Windows.Forms.TextBox wmTextBox33; + private System.Windows.Forms.Label wmLabel33; + private System.Windows.Forms.TextBox wmTextBox32; + private System.Windows.Forms.Label wmLabel32; + private System.Windows.Forms.TextBox wmTextBox31; + private System.Windows.Forms.Label wmLabel31; + private System.Windows.Forms.TextBox wmTextBox30; + private System.Windows.Forms.Label wmLabel30; + private System.Windows.Forms.TextBox wmTextBox29; + private System.Windows.Forms.Label wmLabel29; + private System.Windows.Forms.TextBox wmTextBox28; + private System.Windows.Forms.Label wmLabel28; + private System.Windows.Forms.TextBox wmTextBox27; + private System.Windows.Forms.Label wmLabel27; + private System.Windows.Forms.TextBox wmTextBox26; + private System.Windows.Forms.Label wmLabel26; + private System.Windows.Forms.TextBox wmTextBox25; + private System.Windows.Forms.Label wmLabel25; + private System.Windows.Forms.Label activityLabel; + + } +} \ No newline at end of file diff --git a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.resx b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.resx new file mode 100644 index 000000000..1af7de150 --- /dev/null +++ b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationParams.cs b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationParams.cs new file mode 100644 index 000000000..9354f0b14 --- /dev/null +++ b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationParams.cs @@ -0,0 +1,96 @@ +/// +/// Copyright (c) 2015 Sensus Metering Systems +/// Author: Milan Hanajík +/// +using System; +using System.IO; +using System.Text; +using System.Xml.Serialization; +using TBF.BenchControl.Generic; +using TBF.Resources; + +namespace TBF.BenchControl.TestMethods.iPerlCommunication +{ + public class iPerlCommunicationParams : TestParamsBase, IParamsProvider, ITestParams + { + public string Activity; /// Communication activity + + public override void InitializeAll() + { + Activity = "Read Configuration"; + } + + + string[] paramNames = new string[] + { + Strings.Activity, + }; + public override string ParamName(int i) { return paramNames[i]; } + public override int ParamsCount() { return paramNames.Length; } + + public override string ToString(int i) + { + switch (i) + { + case 0: return Activity; + default: return string.Empty; + } + } + + public void UpdateParam(int i, string strValue) + { + switch (i) + { + case 0: Activity = strValue; return; + default: return; + } + } + + public bool ValidateParam(int i, string strValue, out string message) + { + message = string.Empty; + + switch (i) + { + case 0: + return true; + default: + message = "Invalid index"; + return false; + } + } + + public override void UpdateTestParams(Entities.ComponentTest dbEntity) + { + if (dbEntity == null) return; + try + { + iPerlCommunicationParams tmp = (iPerlCommunicationParams)(new XmlSerializer(typeof(iPerlCommunicationParams))) + .Deserialize(new StringReader(dbEntity.Parameters)); + + testParamsEntity = dbEntity; + componentName = dbEntity.CmpntName; + test = dbEntity.Test; + + Activity = tmp.Activity; + } + catch + { + } + } + + /// + /// Parameterless constructor initializes the parameters + /// + public iPerlCommunicationParams() + { + } + + public iPerlCommunicationParams(Entities.ComponentTest testParamsEntity, string componentName, Entities.Test test) + { + this.testParamsEntity = testParamsEntity; + this.componentName = componentName; + this.test = test; + } + } +} diff --git a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationSeq.cs b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationSeq.cs new file mode 100644 index 000000000..2cab720ac --- /dev/null +++ b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationSeq.cs @@ -0,0 +1,136 @@ +/// +/// Copyright (c) 2015 Sensus Metering Systems +/// Author: Milan Hanajík +/// +using System; +using System.Collections.Generic; +using System.Text; +using log4net; +using TBF.BenchControl; +using TBF.Boxes; +using TBF.Resources; +using TBF.UiBridge; + +namespace TBF.BenchControl.TestMethods.iPerlCommunication +{ + public class iPerlCommunicationSeq : Sequences.SequenceBase + { + private static readonly ILog log = LogManager.GetLogger(typeof(iPerlCommunicationSeq)); + + System.Windows.Forms.Form modelessDlg; + /// + delegate void ICommFormFormDlgt(iPerlCommunicationSeq myRef, string activity); + /// + void OpenIPerlCommForm(iPerlCommunicationSeq myRef, string activity) + { + myRef.modelessDlg = new iPerlCommunicationForm(WaterMeters, activity); + modelessDlg.Show(); + } + + /// + /// Flying start mass collection method sequence + /// + /// Test entity + /// + /// Event.Done . . . . . . . OK + /// Event.UiCmdStop . . . . Stopped by the user using the on-screen button STOP + /// Event.OpArgumentError . Target flow is out of range + /// Event.Error . . . . . . Unspecified error + /// + public IList Execute(Entities.Test test, iPerlCommunicationParams testParams) + { + IList e = new List(); /// Events from currently running operations + Event retVal = Event.Done; + checkUiOp = new Operations.CheckUIOp(true); /// Runs in more then one state + + processDataLoggingOp = new TBF.BenchControl.Operations.ProcessDataLoggingOp(processDataLogger, this); + + //==================================== + // Transition or SetRoute - Start + //==================================== + switch (Transition(transitionBefore, TransitionContext.BeforeTest)) + { + case Event.Error: { retVal = Event.Error; goto stopTest; } + case Event.UiCmdStop: { retVal = Event.UiCmdStop; goto stopTest; } + } + + if (testParams.Activity.Contains("Simulate")) + { + IList rList = new List(1); + + Entities.TestResult tstRslt = new Entities.TestResult(test, 1, Entities.MetersKind.Single); + + if (testParams.Activity.Contains("Q1")) + { + tstRslt.VolumeMaster = tstRslt.VolumeCTV = 5; + for (int i = 0; i < WaterMeters.Count; i++) + { + tstRslt.Meters[i].VolumeMeter = 5; + tstRslt.Meters[i].VolumeRef = tstRslt.VolumeCTV; + } + AddOrOverwriteResult(tstRslt); + } + else if (testParams.Activity.Contains("Q2")) + { + tstRslt.VolumeMaster = tstRslt.VolumeCTV = 5; + for (int i = 0; i < WaterMeters.Count; i++) + { + tstRslt.Meters[i].VolumeMeter = 5; + tstRslt.Meters[i].VolumeRef = tstRslt.VolumeCTV; + } + AddOrOverwriteResult(tstRslt); + } + else if (testParams.Activity.Contains("Q3")) + { + tstRslt.VolumeMaster = tstRslt.VolumeCTV = 5; + for (int i = 0; i < WaterMeters.Count; i++) + { + tstRslt.Meters[i].VolumeMeter = 5; + tstRslt.Meters[i].VolumeRef = tstRslt.VolumeCTV; + } + AddOrOverwriteResult(tstRslt); + } + + rList.Add(Event.Done); + return rList; + } + else + { + /// + /// Show the modeless dialog with error indication + /// + Program.MainWnd.Invoke(new ICommFormFormDlgt(OpenIPerlCommForm), new object[] { this, testParams.Activity }); + } + + loop: + //------------------------------------------------ + Bridge.OnActivity(this, Strings.Test_in_progress); + //------------------------------------------------ + + /// Make sure the CycleBeginForm is closed so that water meter data (s/n) can be copied into results + if (UIFlowControl.Stop == WaitBeginFormClosed()) goto stopTest; + + /// Test 'Quit' + if ((modelessDlg is GenericDevices.IHasCompleted) && !(modelessDlg as GenericDevices.IHasCompleted).Completed) + { + goto loop; /// Modeless dilaog not closed, keep looping + } + modelessDlg = null; /// Modeless dialog is closed now + + stopTest: + + /// Transition sequence at the end of test + /// Prevent overwriting 'retVal' in case it was set to non-default value earlier + switch (Transition(transitionAfter, TransitionContext.AfterTest)) + { + case Event.Error: { if (retVal == Event.Done) retVal = Event.Error; break; } + case Event.UiCmdStop: { if (retVal == Event.Done) retVal = Event.UiCmdStop; break; } + } + + /// Create a list with one item 'retVal' (default is Event.Done) and return it + IList retList = new List(1); + retList.Add(retVal); + return retList; + } + } +} diff --git a/TestBenchFramework/BenchControl/WaterMeters/iPerl/ConfigStruct.cs b/TestBenchFramework/BenchControl/WaterMeters/iPerl/ConfigStruct.cs index 5eb89d265..566464fab 100644 --- a/TestBenchFramework/BenchControl/WaterMeters/iPerl/ConfigStruct.cs +++ b/TestBenchFramework/BenchControl/WaterMeters/iPerl/ConfigStruct.cs @@ -119,5 +119,22 @@ namespace TBF.BenchControl.WaterMeters.iPerl AlarmMask.ToString("X4"), ConfigCheckSum.ToString("X4")); } - } + + public string ToString(int sel) + { + return string.Format("{1} PCBNr={6} TestModeCfg={7}", + Version, + MeterState, + TargetTimeVeryLowBatt, + TargetTimeLowBatt, + TestModeTime, + EmptyPipeThreshold, + PCBNumber[0].ToString("X2") + PCBNumber[1].ToString("X2") + PCBNumber[2].ToString("X2") + PCBNumber[3].ToString("X2") + PCBNumber[4].ToString("X2"), + TestModeConfig.ToString("X2"), + RadioAddress, + TempCalibration, + AlarmMask.ToString("X4"), + ConfigCheckSum.ToString("X4")); + } + } } diff --git a/TestBenchFramework/BenchControl/WaterMeters/iPerl/WaterMeter.cs b/TestBenchFramework/BenchControl/WaterMeters/iPerl/WaterMeter.cs index 0d25a03b9..cc5833930 100644 --- a/TestBenchFramework/BenchControl/WaterMeters/iPerl/WaterMeter.cs +++ b/TestBenchFramework/BenchControl/WaterMeters/iPerl/WaterMeter.cs @@ -120,10 +120,13 @@ namespace TBF.BenchControl.WaterMeters.iPerl public void StopDevice() { - stopWorkerThread = true; - workerThread.Join(2000); - optoSerialPort.Close(); - optoPortOpen = false; + if (DebugLevel == Entities.DebugMode.Normal) + { + stopWorkerThread = true; + workerThread.Join(2000); + optoSerialPort.Close(); + optoPortOpen = false; + } } /// diff --git a/TestBenchFramework/Properties/AssemblyInfo.cs b/TestBenchFramework/Properties/AssemblyInfo.cs index 7eb31f0fa..ad66d9624 100644 --- a/TestBenchFramework/Properties/AssemblyInfo.cs +++ b/TestBenchFramework/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ using System.Runtime.InteropServices; // Build Number // Revision // -[assembly: AssemblyVersion("1.5.74.1")] -[assembly: AssemblyFileVersion("1.5.74.1")] +[assembly: AssemblyVersion("1.5.75.1")] +[assembly: AssemblyFileVersion("1.5.75.1")] diff --git a/TestBenchFramework/TBF.csproj b/TestBenchFramework/TBF.csproj index 1f7dbfca2..90f45616c 100644 --- a/TestBenchFramework/TBF.csproj +++ b/TestBenchFramework/TBF.csproj @@ -329,12 +329,31 @@ TestMethodCfgCtrl.cs - + Form - + + iPerlAdjustmentForm.cs + + + + + + + Form + + iPerlCommunicationForm.cs + + + + UserControl + + + TestMethodCfgCtrl.cs + + @@ -1484,9 +1503,15 @@ TestMethodCfgCtrl.cs - + + iPerlAdjustmentForm.cs + + iPerlCommunicationForm.cs + + TestMethodCfgCtrl.cs + TestMethodCfgCtrl.cs diff --git a/packages/ControlBoard/iPerlST/ControlComponent3U.dll b/packages/ControlBoard/iPerlST/ControlComponent3U.dll index c29e437a3..b4cc632df 100644 Binary files a/packages/ControlBoard/iPerlST/ControlComponent3U.dll and b/packages/ControlBoard/iPerlST/ControlComponent3U.dll differ