diff --git a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethodCfg.cs b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethodCfg.cs index d5dc4d927..119106af7 100644 --- a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethodCfg.cs +++ b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethodCfg.cs @@ -21,6 +21,10 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication public int RfidPortNrBoard2; public int RfidPortNrBoard3; public int RfidPortNrBoard4; + public int CommTimeout; /// Communication timeout in ms (500 .. 5000) + public int MaxCommRetries; /// Max. number of retries (1 .. 10) + public int NrThreads; /// Numbwr of parallel threads (1, 2 or 4) + /// Test parameters [XmlIgnore] @@ -42,6 +46,10 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication RfidPortNrBoard1 = 52; RfidPortNrBoard1 = 53; RfidPortNrBoard1 = 54; + CommTimeout = 1800; /// ms + MaxCommRetries = 4; + NrThreads = 2; /// 1, 2 or 4 threads + TestParams = new iPerlCommunicationParams(); } @@ -53,8 +61,8 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication public string ToString(int i) { - return string.Format("Name={0}, Board#1=COM{1}, Board#2=COM{2}, Board#3=COM{3}, Board#4=COM{4}", - Name, RfidPortNrBoard1, RfidPortNrBoard2, RfidPortNrBoard3, RfidPortNrBoard4); + return string.Format("Name={0}, Brd#1=COM{1}, Brd#2=COM{2}, Brd#3=COM{3}, Brd#4=COM{4}, CommTimeout={5}, MaxRetries={6}, NrThreads={7}", + Name, RfidPortNrBoard1, RfidPortNrBoard2, RfidPortNrBoard3, RfidPortNrBoard4, CommTimeout, MaxCommRetries, NrThreads); } } } diff --git a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethodCfgCtrl.cs b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethodCfgCtrl.cs index f934ecd28..cdf89288e 100644 --- a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethodCfgCtrl.cs +++ b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethodCfgCtrl.cs @@ -48,6 +48,9 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication rfidPortBoard2TextBox.Text = config.RfidPortNrBoard2.ToString(); rfidPortBoard3TextBox.Text = config.RfidPortNrBoard3.ToString(); rfidPortBoard4TextBox.Text = config.RfidPortNrBoard4.ToString(); + commTimeoutTextBox.Text = config.CommTimeout.ToString(); + maxCommRetriesTextBox.Text = config.MaxCommRetries.ToString(); + nrThreadsTextBox.Text = config.NrThreads.ToString(); } public void Unlock() @@ -57,6 +60,9 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication rfidPortBoard2TextBox.Enabled = true; rfidPortBoard3TextBox.Enabled = true; rfidPortBoard4TextBox.Enabled = true; + commTimeoutTextBox.Enabled = true; + maxCommRetriesTextBox.Enabled = true; + nrThreadsTextBox.Enabled = true; } public CfgUpdateFlags VerifyCfg(ref string message) @@ -84,6 +90,21 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication flags |= CfgUpdateFlags.Error; message += Environment.NewLine + "'RFID Port #4' is not valid"; } + if (!int.TryParse(commTimeoutTextBox.Text, out dummy) || dummy < 500 || dummy > 5000) + { + flags |= CfgUpdateFlags.Error; + message += Environment.NewLine + "'Comm. timeout' should be in range 500 .. 5000"; + } + if (!int.TryParse(maxCommRetriesTextBox.Text, out dummy) || dummy < 1 || dummy > 10) + { + flags |= CfgUpdateFlags.Error; + message += Environment.NewLine + "'Max. retries' should be in range 1 .. 10"; + } + if (!int.TryParse(nrThreadsTextBox.Text, out dummy) || (dummy != 1 && dummy != 2 && dummy != 4)) + { + flags |= CfgUpdateFlags.Error; + message += Environment.NewLine + "'Nr. threads' should be 1, 2 or 4"; + } return flags; } @@ -95,17 +116,26 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication if (config.Name != nameTextBox.Text) { config.Name = nameTextBox.Text; flags = CfgUpdateFlags.RestartRqrd; } - int comPortNr = int.Parse(rfidPortBoard1TextBox.Text); - if (config.RfidPortNrBoard1 != comPortNr) { config.RfidPortNrBoard1 = comPortNr; flags = CfgUpdateFlags.RestartRqrd; } + int tmp = int.Parse(rfidPortBoard1TextBox.Text); + if (config.RfidPortNrBoard1 != tmp) { config.RfidPortNrBoard1 = tmp; flags = CfgUpdateFlags.RestartRqrd; } - comPortNr = int.Parse(rfidPortBoard2TextBox.Text); - if (config.RfidPortNrBoard2 != comPortNr) { config.RfidPortNrBoard2 = comPortNr; flags = CfgUpdateFlags.RestartRqrd; } + tmp = int.Parse(rfidPortBoard2TextBox.Text); + if (config.RfidPortNrBoard2 != tmp) { config.RfidPortNrBoard2 = tmp; flags = CfgUpdateFlags.RestartRqrd; } - comPortNr = int.Parse(rfidPortBoard3TextBox.Text); - if (config.RfidPortNrBoard3 != comPortNr) { config.RfidPortNrBoard3 = comPortNr; flags = CfgUpdateFlags.RestartRqrd; } + tmp = int.Parse(rfidPortBoard3TextBox.Text); + if (config.RfidPortNrBoard3 != tmp) { config.RfidPortNrBoard3 = tmp; flags = CfgUpdateFlags.RestartRqrd; } - comPortNr = int.Parse(rfidPortBoard4TextBox.Text); - if (config.RfidPortNrBoard4 != comPortNr) { config.RfidPortNrBoard4 = comPortNr; flags = CfgUpdateFlags.RestartRqrd; } + tmp = int.Parse(rfidPortBoard4TextBox.Text); + if (config.RfidPortNrBoard4 != tmp) { config.RfidPortNrBoard4 = tmp; flags = CfgUpdateFlags.RestartRqrd; } + + tmp = int.Parse(commTimeoutTextBox.Text); + if (config.CommTimeout != tmp) { config.CommTimeout = tmp; flags = CfgUpdateFlags.RestartRqrd; } + + tmp = int.Parse(maxCommRetriesTextBox.Text); + if (config.MaxCommRetries != tmp) { config.MaxCommRetries = tmp; flags = CfgUpdateFlags.RestartRqrd; } + + tmp = int.Parse(nrThreadsTextBox.Text); + if (config.NrThreads != tmp) { config.NrThreads = tmp; flags = CfgUpdateFlags.RestartRqrd; } return flags; } diff --git a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethodCfgCtrl.designer.cs b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethodCfgCtrl.designer.cs index 884bf8db7..5e3babea9 100644 --- a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethodCfgCtrl.designer.cs +++ b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/TestMethodCfgCtrl.designer.cs @@ -43,12 +43,18 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication this.rfidPortBoard3Label = new System.Windows.Forms.Label(); this.rfidPortBoard4TextBox = new System.Windows.Forms.TextBox(); this.rfidPortBoard4Label = new System.Windows.Forms.Label(); + this.commTimeoutTextBox = new System.Windows.Forms.TextBox(); + this.commTimeoutLabel = new System.Windows.Forms.Label(); + this.maxCommRetriesTextBox = new System.Windows.Forms.TextBox(); + this.maxNrRetriesLabel = new System.Windows.Forms.Label(); + this.nrThreadsTextBox = new System.Windows.Forms.TextBox(); + this.nrThreadsLabel = new System.Windows.Forms.Label(); this.SuspendLayout(); // // nameTextBox // this.nameTextBox.Enabled = false; - this.nameTextBox.Location = new System.Drawing.Point(137, 57); + this.nameTextBox.Location = new System.Drawing.Point(133, 25); this.nameTextBox.Name = "nameTextBox"; this.nameTextBox.Size = new System.Drawing.Size(130, 20); this.nameTextBox.TabIndex = 5; @@ -56,7 +62,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication // nameLabel // this.nameLabel.AutoSize = true; - this.nameLabel.Location = new System.Drawing.Point(27, 60); + this.nameLabel.Location = new System.Drawing.Point(23, 28); this.nameLabel.Name = "nameLabel"; this.nameLabel.Size = new System.Drawing.Size(35, 13); this.nameLabel.TabIndex = 4; @@ -65,7 +71,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication // classNameLabel // this.classNameLabel.AutoSize = true; - this.classNameLabel.Location = new System.Drawing.Point(134, 33); + this.classNameLabel.Location = new System.Drawing.Point(132, 7); this.classNameLabel.Name = "classNameLabel"; this.classNameLabel.Size = new System.Drawing.Size(83, 13); this.classNameLabel.TabIndex = 3; @@ -74,75 +80,132 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication // rfidPortBoard1TextBox // this.rfidPortBoard1TextBox.Enabled = false; - this.rfidPortBoard1TextBox.Location = new System.Drawing.Point(137, 83); + this.rfidPortBoard1TextBox.Location = new System.Drawing.Point(133, 47); this.rfidPortBoard1TextBox.Name = "rfidPortBoard1TextBox"; - this.rfidPortBoard1TextBox.Size = new System.Drawing.Size(34, 20); + this.rfidPortBoard1TextBox.Size = new System.Drawing.Size(45, 20); this.rfidPortBoard1TextBox.TabIndex = 9; // // rfidPortBoard1Label // this.rfidPortBoard1Label.AutoSize = true; - this.rfidPortBoard1Label.Location = new System.Drawing.Point(27, 86); + this.rfidPortBoard1Label.Location = new System.Drawing.Point(23, 50); this.rfidPortBoard1Label.Name = "rfidPortBoard1Label"; - this.rfidPortBoard1Label.Size = new System.Drawing.Size(99, 13); + this.rfidPortBoard1Label.Size = new System.Drawing.Size(96, 13); this.rfidPortBoard1Label.TabIndex = 8; - this.rfidPortBoard1Label.Text = "RFID COM port #1:"; + this.rfidPortBoard1Label.Text = "RFID COM port #1"; // // rfidPortBoard2TextBox // this.rfidPortBoard2TextBox.Enabled = false; - this.rfidPortBoard2TextBox.Location = new System.Drawing.Point(137, 109); + this.rfidPortBoard2TextBox.Location = new System.Drawing.Point(133, 69); this.rfidPortBoard2TextBox.Name = "rfidPortBoard2TextBox"; - this.rfidPortBoard2TextBox.Size = new System.Drawing.Size(34, 20); + this.rfidPortBoard2TextBox.Size = new System.Drawing.Size(45, 20); this.rfidPortBoard2TextBox.TabIndex = 11; // // rfidPortBoard2Label // this.rfidPortBoard2Label.AutoSize = true; - this.rfidPortBoard2Label.Location = new System.Drawing.Point(27, 112); + this.rfidPortBoard2Label.Location = new System.Drawing.Point(23, 72); this.rfidPortBoard2Label.Name = "rfidPortBoard2Label"; - this.rfidPortBoard2Label.Size = new System.Drawing.Size(99, 13); + this.rfidPortBoard2Label.Size = new System.Drawing.Size(96, 13); this.rfidPortBoard2Label.TabIndex = 10; - this.rfidPortBoard2Label.Text = "RFID COM port #2:"; + this.rfidPortBoard2Label.Text = "RFID COM port #2"; // // rfidPortBoard3TextBox // this.rfidPortBoard3TextBox.Enabled = false; - this.rfidPortBoard3TextBox.Location = new System.Drawing.Point(137, 135); + this.rfidPortBoard3TextBox.Location = new System.Drawing.Point(133, 91); this.rfidPortBoard3TextBox.Name = "rfidPortBoard3TextBox"; - this.rfidPortBoard3TextBox.Size = new System.Drawing.Size(34, 20); + this.rfidPortBoard3TextBox.Size = new System.Drawing.Size(45, 20); this.rfidPortBoard3TextBox.TabIndex = 13; // // rfidPortBoard3Label // this.rfidPortBoard3Label.AutoSize = true; - this.rfidPortBoard3Label.Location = new System.Drawing.Point(27, 138); + this.rfidPortBoard3Label.Location = new System.Drawing.Point(23, 94); this.rfidPortBoard3Label.Name = "rfidPortBoard3Label"; - this.rfidPortBoard3Label.Size = new System.Drawing.Size(99, 13); + this.rfidPortBoard3Label.Size = new System.Drawing.Size(96, 13); this.rfidPortBoard3Label.TabIndex = 12; - this.rfidPortBoard3Label.Text = "RFID COM port #3:"; + this.rfidPortBoard3Label.Text = "RFID COM port #3"; // // rfidPortBoard4TextBox // this.rfidPortBoard4TextBox.Enabled = false; - this.rfidPortBoard4TextBox.Location = new System.Drawing.Point(137, 161); + this.rfidPortBoard4TextBox.Location = new System.Drawing.Point(133, 113); this.rfidPortBoard4TextBox.Name = "rfidPortBoard4TextBox"; - this.rfidPortBoard4TextBox.Size = new System.Drawing.Size(34, 20); + this.rfidPortBoard4TextBox.Size = new System.Drawing.Size(45, 20); this.rfidPortBoard4TextBox.TabIndex = 15; // // rfidPortBoard4Label // this.rfidPortBoard4Label.AutoSize = true; - this.rfidPortBoard4Label.Location = new System.Drawing.Point(27, 164); + this.rfidPortBoard4Label.Location = new System.Drawing.Point(23, 116); this.rfidPortBoard4Label.Name = "rfidPortBoard4Label"; - this.rfidPortBoard4Label.Size = new System.Drawing.Size(99, 13); + this.rfidPortBoard4Label.Size = new System.Drawing.Size(96, 13); this.rfidPortBoard4Label.TabIndex = 14; - this.rfidPortBoard4Label.Text = "RFID COM port #4:"; + this.rfidPortBoard4Label.Text = "RFID COM port #4"; + // + // commTimeoutTextBox + // + this.commTimeoutTextBox.Enabled = false; + this.commTimeoutTextBox.Location = new System.Drawing.Point(133, 135); + this.commTimeoutTextBox.Name = "commTimeoutTextBox"; + this.commTimeoutTextBox.Size = new System.Drawing.Size(45, 20); + this.commTimeoutTextBox.TabIndex = 17; + // + // commTimeoutLabel + // + this.commTimeoutLabel.AutoSize = true; + this.commTimeoutLabel.Location = new System.Drawing.Point(23, 138); + this.commTimeoutLabel.Name = "commTimeoutLabel"; + this.commTimeoutLabel.Size = new System.Drawing.Size(98, 13); + this.commTimeoutLabel.TabIndex = 16; + this.commTimeoutLabel.Text = "Comm. timeout [ms]"; + // + // maxNrRetriesTextBox + // + this.maxCommRetriesTextBox.Enabled = false; + this.maxCommRetriesTextBox.Location = new System.Drawing.Point(133, 157); + this.maxCommRetriesTextBox.Name = "maxNrRetriesTextBox"; + this.maxCommRetriesTextBox.Size = new System.Drawing.Size(45, 20); + this.maxCommRetriesTextBox.TabIndex = 19; + // + // maxNrRetriesLabel + // + this.maxNrRetriesLabel.AutoSize = true; + this.maxNrRetriesLabel.Location = new System.Drawing.Point(23, 160); + this.maxNrRetriesLabel.Name = "maxNrRetriesLabel"; + this.maxNrRetriesLabel.Size = new System.Drawing.Size(61, 13); + this.maxNrRetriesLabel.TabIndex = 18; + this.maxNrRetriesLabel.Text = "Max. retries"; + // + // nrThreadsTextBox + // + this.nrThreadsTextBox.Enabled = false; + this.nrThreadsTextBox.Location = new System.Drawing.Point(133, 179); + this.nrThreadsTextBox.Name = "nrThreadsTextBox"; + this.nrThreadsTextBox.Size = new System.Drawing.Size(45, 20); + this.nrThreadsTextBox.TabIndex = 21; + // + // nrThreadsLabel + // + this.nrThreadsLabel.AutoSize = true; + this.nrThreadsLabel.Location = new System.Drawing.Point(23, 182); + this.nrThreadsLabel.Name = "nrThreadsLabel"; + this.nrThreadsLabel.Size = new System.Drawing.Size(59, 13); + this.nrThreadsLabel.TabIndex = 20; + this.nrThreadsLabel.Text = "Nr. threads"; // // TestMethodCfgCtrl // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.nrThreadsTextBox); + this.Controls.Add(this.nrThreadsLabel); + this.Controls.Add(this.maxCommRetriesTextBox); + this.Controls.Add(this.maxNrRetriesLabel); + this.Controls.Add(this.commTimeoutTextBox); + this.Controls.Add(this.commTimeoutLabel); this.Controls.Add(this.rfidPortBoard4TextBox); this.Controls.Add(this.rfidPortBoard4Label); this.Controls.Add(this.rfidPortBoard3TextBox); @@ -175,5 +238,11 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication private System.Windows.Forms.Label rfidPortBoard3Label; private System.Windows.Forms.TextBox rfidPortBoard4TextBox; private System.Windows.Forms.Label rfidPortBoard4Label; + private System.Windows.Forms.TextBox commTimeoutTextBox; + private System.Windows.Forms.Label commTimeoutLabel; + private System.Windows.Forms.TextBox maxCommRetriesTextBox; + private System.Windows.Forms.Label maxNrRetriesLabel; + private System.Windows.Forms.TextBox nrThreadsTextBox; + private System.Windows.Forms.Label nrThreadsLabel; } } diff --git a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.cs b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.cs index dfe44037c..c3c3beba9 100644 --- a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.cs +++ b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlCommunicationForm.cs @@ -29,11 +29,6 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication public partial class iPerlCommunicationForm : Form, GenericDevices.IHasCompleted { - const int CommTimeout = 1800; - const int MaxCommRetries = 4; - const int NrThreads = 2; /// 1, 2 or 4 threads - - private static readonly ILog log = LogManager.GetLogger(typeof(iPerlCommunicationForm)); protected static readonly ILog rfidDataLogger = LogManager.GetLogger("RfidData"); @@ -141,7 +136,11 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication else if (messageID == MessageID.MetrologyMemory) { } - retv = 0; + + if (wm.Name.Equals("iPerl13")) + retv = 2; + else + retv = 0; } rfidDataLogger.InfoFormat("{0}, ReadRequestPort({1}, {2}, {3}, ...) returned {4} {5}", wm.Name, messageID, offset, lenght, retv, (retv != 0) ? "!" : ""); @@ -328,9 +327,11 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication /// Creates a list of iPerl-s, re-shuffles UI conrols and allocates 'disabled' array. /// /// Number of text boxes for serial numbers - public iPerlCommunicationForm(IList waterMeters) + public iPerlCommunicationForm(IList waterMeters, TestMethodCfg cfg) : this() { + iPerlCommunicationForm.cfg = cfg; + this.WaterMetersCount = waterMeters.Count; iPerlCommunicationForm.waterMeters = new List(); /// @@ -362,7 +363,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication { rfidPortNrs.Add(iPerl.MuxBoardNr); - if (workerThreads.Count < NrThreads) + if (workerThreads.Count < cfg.NrThreads) { Thread thread = new Thread(iPerlCommunicationForm.Worker); workerThreads.Add(thread); @@ -379,10 +380,8 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication /// Number of text boxes for serial numbers public iPerlCommunicationForm(IList waterMeters, TestMethodCfg cfg, iPerlCommunicationParams testParams) - : this(waterMeters) + : this(waterMeters, cfg) { - iPerlCommunicationForm.cfg = cfg; - iPerlCommunicationForm.multiTestParams = new List(); iPerlCommunicationForm.multiTestParams.Add(testParams); @@ -396,9 +395,8 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication /// Number of text boxes for serial numbers public iPerlCommunicationForm(IList waterMeters, TestMethodCfg cfg, IList multiTestParams) - : this(waterMeters) + : this(waterMeters, cfg) { - iPerlCommunicationForm.cfg = cfg; iPerlCommunicationForm.multiTestParams = multiTestParams; if (multiTestParams.Count > 0) activityLabel.Text = multiTestParams[0].Activity; @@ -560,7 +558,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication if (stopWorkerThreads) break; - for (int rfidPortIx = threadId; rfidPortIx < threadId + 4; rfidPortIx += NrThreads) + for (int rfidPortIx = threadId; rfidPortIx < threadId + 4; rfidPortIx += cfg.NrThreads) { int rfidPortNr = rfidPortNrs[rfidPortIx]; int wmNr = 0; @@ -648,9 +646,9 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication /// Read configuration byte[] config = null; - for (int j = 0; j < MaxCommRetries; j++) + for (int j = 0; j < cfg.MaxCommRetries; j++) { - if (0 == ReadRequestPort(wm, MessageID.Configuration, 0, ConfigStruct.Length, out config, CommTimeout)) + if (0 == ReadRequestPort(wm, MessageID.Configuration, 0, ConfigStruct.Length, out config, cfg.CommTimeout)) { error = CommErr.None; wm.ConfigStruct = ConfigStruct.FromByteArray(config); @@ -707,9 +705,9 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication /// Switch to Active mode in order to change TestModeConfig error = CommErr.CmdActive; byte[] cmd = new byte[1] { (byte)6 }; - for (int j = 0; j < MaxCommRetries; j++) + for (int j = 0; j < cfg.MaxCommRetries; j++) { - if (0 == WriteRequestPort(wm, MessageID.Command, 0, 1, cmd, CommTimeout)) { error = CommErr.None; break; } + if (0 == WriteRequestPort(wm, MessageID.Command, 0, 1, cmd, cfg.CommTimeout)) { error = CommErr.None; break; } } } @@ -718,9 +716,9 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication /// Change the TestModeConfig if necessary error = CommErr.Write; byte[] tstMdCfg = new byte[1] { testModeConfig }; - for (int j = 0; j < MaxCommRetries; j++) + for (int j = 0; j < cfg.MaxCommRetries; j++) { - if (0 == WriteRequestPort(wm, MessageID.Configuration, 21, 1, tstMdCfg, CommTimeout)) + if (0 == WriteRequestPort(wm, MessageID.Configuration, 21, 1, tstMdCfg, cfg.CommTimeout)) { wm.ConfigStruct.Update(21, tstMdCfg); error = CommErr.None; @@ -734,9 +732,9 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication /// Switch to test mode error = CommErr.CmdTest; byte[] cmd = new byte[1] { (byte)7 }; - for (int j = 0; j < MaxCommRetries; j++) + for (int j = 0; j < cfg.MaxCommRetries; j++) { - if (0 == WriteRequestPort(wm, MessageID.Command, 0, 1, cmd, CommTimeout)) { error = CommErr.None; break; } + if (0 == WriteRequestPort(wm, MessageID.Command, 0, 1, cmd, cfg.CommTimeout)) { error = CommErr.None; break; } } } @@ -746,9 +744,9 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication /// Verify the configuration error = CommErr.Verify; byte[] cfg_0_3 = null; - for (int j = 0; j < MaxCommRetries; j++) + for (int j = 0; j < cfg.MaxCommRetries; j++) { - if (0 == ReadRequestPort(wm, MessageID.Configuration, 0, 4, out cfg_0_3, CommTimeout)) + if (0 == ReadRequestPort(wm, MessageID.Configuration, 0, 4, out cfg_0_3, cfg.CommTimeout)) { wm.ConfigStruct.Update(0, cfg_0_3); if (wm.ConfigStruct.MeterState == MeterState.Test) @@ -784,9 +782,9 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication /// Switch to active mode byte[] cmd = new byte[1] { (byte)6 }; - for (int j = 0; j < MaxCommRetries; j++) + for (int j = 0; j < cfg.MaxCommRetries; j++) { - if (0 == WriteRequestPort(wm, MessageID.Command, 0, 1, cmd, CommTimeout)) { error = CommErr.None; break; } + if (0 == WriteRequestPort(wm, MessageID.Command, 0, 1, cmd, cfg.CommTimeout)) { error = CommErr.None; break; } } if (error == CommErr.None) @@ -795,9 +793,9 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication /// Read configuration byte[] cfg_0_3 = null; - for (int j = 0; j < MaxCommRetries; j++) + for (int j = 0; j < cfg.MaxCommRetries; j++) { - if (0 == ReadRequestPort(wm, MessageID.Configuration, 0, 4, out cfg_0_3, CommTimeout)) + if (0 == ReadRequestPort(wm, MessageID.Configuration, 0, 4, out cfg_0_3, cfg.CommTimeout)) { wm.ConfigStruct.Update(0, cfg_0_3); if (wm.ConfigStruct.MeterState == MeterState.Active) @@ -832,9 +830,9 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication /// Read calibration byte[] calib = null; - for (int j = 0; j < MaxCommRetries; j++) + for (int j = 0; j < cfg.MaxCommRetries; j++) { - if (0 == ReadRequestPort(wm, MessageID.Calibration, 0, CalibrationStruct.Length, out calib, CommTimeout)) + if (0 == ReadRequestPort(wm, MessageID.Calibration, 0, CalibrationStruct.Length, out calib, cfg.CommTimeout)) { error = CommErr.None; wm.CalibrationStruct = CalibrationStruct.FromByteArray(calib); @@ -882,9 +880,9 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication } byte[] data = new byte[2] { (byte)(newCalibFactor & 0x00FF), (byte)((newCalibFactor >> 8) & 0x00FF) }; - for (int j = 0; j < MaxCommRetries; j++) + for (int j = 0; j < cfg.MaxCommRetries; j++) { - if (0 == WriteRequestPort(wm, MessageID.Calibration, 2, 2, data, CommTimeout)) + if (0 == WriteRequestPort(wm, MessageID.Calibration, 2, 2, data, cfg.CommTimeout)) { error = CommErr.None; wm.CalibrationStruct.Update(data, 2); @@ -898,9 +896,9 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication /// Read calibration byte[] calib_2_3 = null; - for (int j = 0; j < MaxCommRetries; j++) + for (int j = 0; j < cfg.MaxCommRetries; j++) { - if (0 == ReadRequestPort(wm, MessageID.Calibration, 2, 2, out calib_2_3, CommTimeout)) + if (0 == ReadRequestPort(wm, MessageID.Calibration, 2, 2, out calib_2_3, cfg.CommTimeout)) { error = CommErr.None; wm.CalibrationStruct.Update(calib_2_3, 2); @@ -937,9 +935,9 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication /// Write zero Q2 correction byte[] wrData = new byte[2] { 0, 0 }; /// - for (int j = 0; j < MaxCommRetries; j++) + for (int j = 0; j < cfg.MaxCommRetries; j++) { - if (0 == WriteRequestPort(wm, MessageID.MetrologyMemory, Q2CorrFactorsAddr, 2, wrData, CommTimeout)) { error = CommErr.None; break; } + if (0 == WriteRequestPort(wm, MessageID.MetrologyMemory, Q2CorrFactorsAddr, 2, wrData, cfg.CommTimeout)) { error = CommErr.None; break; } } /// Verify the correction factors @@ -949,9 +947,9 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication /// Read calibration byte[] rdData = null; - for (int j = 0; j < MaxCommRetries; j++) + for (int j = 0; j < cfg.MaxCommRetries; j++) { - if ((0 == ReadRequestPort(wm, MessageID.MetrologyMemory, Q2CorrFactorsAddr, 2, out rdData, CommTimeout)) && + if ((0 == ReadRequestPort(wm, MessageID.MetrologyMemory, Q2CorrFactorsAddr, 2, out rdData, cfg.CommTimeout)) && (rdData != null) && (rdData.Length == 2) && (rdData[0] == 0) && (rdData[1] == 0)) { error = CommErr.None; @@ -989,9 +987,9 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication Byte q2CorrLFlow = (byte)((int)Math.Round(q2CorrectionFactor) & 0x000000FF); byte[] wrData = new byte[2] { q2CorrRFlow, q2CorrLFlow }; /// - for (int j = 0; j < MaxCommRetries; j++) + for (int j = 0; j < cfg.MaxCommRetries; j++) { - if (0 == WriteRequestPort(wm, MessageID.MetrologyMemory, Q2CorrFactorsAddr, 2, wrData, CommTimeout)) { error = CommErr.None; break; } + if (0 == WriteRequestPort(wm, MessageID.MetrologyMemory, Q2CorrFactorsAddr, 2, wrData, cfg.CommTimeout)) { error = CommErr.None; break; } } if (error == CommErr.None) @@ -1000,9 +998,9 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication /// Read calibration byte[] rdData = null; - for (int j = 0; j < MaxCommRetries; j++) + for (int j = 0; j < cfg.MaxCommRetries; j++) { - if ((0 == ReadRequestPort(wm, MessageID.MetrologyMemory, Q2CorrFactorsAddr, 2, out rdData, CommTimeout)) && + if ((0 == ReadRequestPort(wm, MessageID.MetrologyMemory, Q2CorrFactorsAddr, 2, out rdData, cfg.CommTimeout)) && (rdData != null) && (rdData.Length == 2) && (rdData[0] == q2CorrRFlow) && (rdData[1] == q2CorrLFlow)) { error = CommErr.None;