Refactor `ISmartReader` and related classes to support `SmartHeadsUni`. Remove redundant `IperlHeadsUni` references and introduce `SmartMeterFlyingStartMassCollection` functionality. Enhance regex-based head position extraction.
100 lines
3.4 KiB
C#
100 lines
3.4 KiB
C#
using System;
|
|
using System.Linq;
|
|
using System.Windows.Forms;
|
|
using TBF.Rig.RegisterReaders.CommonRR.IPerl.communication;
|
|
using TBF.Rig.RegisterReaders.iPerlReaderUNI.common;
|
|
using TBF.Rig.RegisterReaders.PoseidonReader.implementations;
|
|
using TBF.Rig.Sequences;
|
|
using TBF.Rig.Uni.SharedDialogs.SmartMetersCommunication;
|
|
|
|
namespace TBF.Rig.RegisterReaders.PoseidonReader
|
|
{
|
|
public partial class UniHeadTestCtrl : UserControl
|
|
{
|
|
private IUniHeadTestCtrl _ctrl;
|
|
private IUniHeadTestCtrl Ctrl { get => _ctrl; }
|
|
|
|
public UniHeadTestCtrl(Generic.IComponentCfg config)
|
|
{
|
|
this._ctrl = new PoseidonImplHeadTestCtrl();
|
|
Ctrl.config = config;
|
|
InitializeComponent();
|
|
if (config == null) return;
|
|
|
|
SmartCommunicationForm.TestMethodCfg = new iPerlReaderUNI.TestMethodCfg(null); // default values for iPerlCommunication
|
|
|
|
if (ProcessData.SmartHeadsUni != null)
|
|
{
|
|
foreach (var head in ProcessData.SmartHeadsUni)
|
|
{
|
|
if (head != null && head.Name == config.Name)
|
|
{
|
|
Ctrl.ISmartReader = head;
|
|
}
|
|
}
|
|
}
|
|
|
|
rfidCommandComboBox.DisplayMember = "Name";
|
|
rfidCommandComboBox.ValueMember = "Value";
|
|
var items = Ctrl.GetComboOperationsPairs();
|
|
/*
|
|
// CTRL+ALT+double click - hidden poweruser menu
|
|
if (((Keyboard.ModifierKeys & Keys.Control) == Keys.Control) && ((Keyboard.ModifierKeys & Keys.Alt) == Keys.Alt) && Users.CurrentUser.AuthorizedAs == AuthorizedAs.PowerUser)
|
|
{
|
|
Array.Resize(ref items, items.Length + 1);
|
|
items[items.Length - 1] = new { Name = "Kluc", Value = "Kluc" };
|
|
}
|
|
*/
|
|
rfidCommandComboBox.DataSource = items.Select(i => i.Name).ToArray();
|
|
|
|
Ctrl.Initialize();
|
|
|
|
Ctrl.OptoReceivedHandler += (EventHandler<OptoReceivedEventArgs>)((sndr, args) =>
|
|
{
|
|
if (this.InvokeRequired)
|
|
this.Invoke((Delegate)new EventHandler<OptoReceivedEventArgs>(this.OnOptoReceived2), sndr, (object)args);
|
|
else
|
|
this.OnOptoReceived2(sndr, args);
|
|
});
|
|
}
|
|
|
|
public void OnOptoReceived2(object sender, OptoReceivedEventArgs args)
|
|
{
|
|
optoListBox.Items.Insert(0,args.Data);
|
|
}
|
|
|
|
public void CommandTestButtonClick(object sender, MouseEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
commandTestButton.Enabled = false;
|
|
|
|
Ctrl.CommandTestButtonClick(sender, e, new Arguments()
|
|
{
|
|
ISmartReader = Ctrl.ISmartReader,
|
|
OptoListBox = optoListBox,
|
|
RfidCommandComboBox = rfidCommandComboBox,
|
|
RfidOutputListBox = rfidOutputListBox
|
|
});
|
|
}
|
|
finally
|
|
{
|
|
commandTestButton.Enabled = true;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private void UserControl_Load(object sender, EventArgs e)
|
|
{
|
|
this.ParentForm.FormClosing += new FormClosingEventHandler(ParentForm_FormClosing);
|
|
}
|
|
|
|
void ParentForm_FormClosing(object sender, FormClosingEventArgs e)
|
|
{
|
|
//OnHandleDestroyed(new EventArgs());
|
|
Ctrl.Destroy();
|
|
}
|
|
}
|
|
}
|