From 65f13cc8686deaf4ec3484f3af20447bf6dc80f1 Mon Sep 17 00:00:00 2001 From: Michal Buzik Date: Sat, 6 Dec 2025 12:51:51 +0100 Subject: [PATCH] Add `UNIHeadTestCtrl` interface and implement `IperlHeadTestCtrl` with command handling logic. --- .../IPerlS4/IperlHeadTestCtrl.cs | 97 +++++++++++++++++++ .../iPerlReaderUNI/iCommon/UNIHeadTestCtrl.cs | 9 ++ 2 files changed, 106 insertions(+) create mode 100644 TBF/Rig/RegisterReaders/iPerlReaderUNI/IPerlS4/IperlHeadTestCtrl.cs create mode 100644 TBF/Rig/RegisterReaders/iPerlReaderUNI/iCommon/UNIHeadTestCtrl.cs diff --git a/TBF/Rig/RegisterReaders/iPerlReaderUNI/IPerlS4/IperlHeadTestCtrl.cs b/TBF/Rig/RegisterReaders/iPerlReaderUNI/IPerlS4/IperlHeadTestCtrl.cs new file mode 100644 index 000000000..c06fef09a --- /dev/null +++ b/TBF/Rig/RegisterReaders/iPerlReaderUNI/IPerlS4/IperlHeadTestCtrl.cs @@ -0,0 +1,97 @@ +using System.Web.UI; +using System.Windows.Forms; +using TBF.Rig.RegisterReaders.iPerlReaderUNI.iCommon; + +namespace TBF.Rig.RegisterReaders.iPerlReaderUNI.IPerlS4 +{ + public class IperlHeadTestCtrl : UNIHeadTestCtrl + { + System.Windows.Forms.ListBox rfidOutputListBox; + + public IperlHeadTestCtrl(ListBox rfidOutputListBox) + { + this.rfidOutputListBox = rfidOutputListBox; + + var foo = new[] + { + new {Name = "Read PCB", Value = "ReadPCB" }, + new {Name = "Set Test Mode", Value = "SetTestMode" }, + new {Name = "Set Active Mode", Value = "SetActiveMode" }, +#if DEBUG + new {Name = "Start Read Opto Data", Value = "ReadOptoData" }, + new {Name = "Stop Read Opto Data", Value = "StopReadOptoData" }, +#endif + new {Name = " ", Value = "" }, + new {Name = "Reset NFC Head", Value = "ResetNfcHead" }, + new {Name = "Set NFC Head Interface", Value = "SetNfcHead" }, + new {Name = "Set RFID Head interface", Value = "SetRfidHead" } + }; + } + + + + public void CommandTestButtonClick(object sender, MouseEventArgs e) + { + rfidOutputListBox.Items.Clear(); + + using (Tools.LogChecker logChecker = new Tools.LogChecker("RfidData", log4net.Core.Level.Debug)) + { + ListItem rfidListItem = new ListItem(); + rfidListItem.Attributes.Add("style", "font-weight:bold"); + switch (rfidCommandComboBox.SelectedValue) + { + case "ReadPCB": + rfidListItem.Text = $"PCB: {OpticalHeadTest.ReadRequest_PCB(_iPerlReader)}"; + break; + case "SetTestMode": + rfidListItem.Text = OpticalHeadTest.SetTestMode(_iPerlReader); + optoListBox.Items.Clear(); + stopWorkerThread = false; + optoThread = new Thread(OptoWorker); + if (!optoThread.IsAlive) + { + _iPerlReader.StartDataStreamProcessing(); // open opto port + optoThread.Start(); + } + break; + case "SetActiveMode": + rfidListItem.Text = OpticalHeadTest.SetActiveMode(_iPerlReader); + stopWorkerThread = true; + _iPerlReader.StopDataStreamProcessing(); // close opto port + break; + case "ResetNfcHead": + _iPerlReader.ResetNfcInterface(); + break; + case "SetNfcHead": + _iPerlReader.SetNfcInterface(); + break; + case "SetRfidHead": + _iPerlReader.SetRfidInterface(); + break; + case "ReadOptoData": + optoListBox.Items.Clear(); + stopWorkerThread = false; + optoThread = new Thread(OptoWorker); + if (optoThread.IsAlive) + { + stopWorkerThread = true; + _iPerlReader.StopDataStreamProcessing(); // close opto port + } + if (!optoThread.IsAlive) + { + _iPerlReader.StartDataStreamProcessing(); // open opto port + optoThread.Start(); + } + break; + case "StopReadOptoData": + stopWorkerThread = true; + _iPerlReader.StopDataStreamProcessing(); // close opto port + break; + } + rfidOutputListBox.Items.Add(rfidListItem); + rfidOutputListBox.Items.AddRange(logChecker.Messages.ToArray()); + } + } + + } +} \ No newline at end of file diff --git a/TBF/Rig/RegisterReaders/iPerlReaderUNI/iCommon/UNIHeadTestCtrl.cs b/TBF/Rig/RegisterReaders/iPerlReaderUNI/iCommon/UNIHeadTestCtrl.cs new file mode 100644 index 000000000..8b1e199b1 --- /dev/null +++ b/TBF/Rig/RegisterReaders/iPerlReaderUNI/iCommon/UNIHeadTestCtrl.cs @@ -0,0 +1,9 @@ +using System.Windows.Forms; + +namespace TBF.Rig.RegisterReaders.iPerlReaderUNI.iCommon +{ + public interface UNIHeadTestCtrl + { + void CommandTestButtonClick(object sender, MouseEventArgs e); + } +} \ No newline at end of file