Refactor RadioService to utilize GciBridge for communication, replace SerialDriver, and add SlotNr support in Genesis configuration and UI.
This commit is contained in:
parent
eea80d39c0
commit
0d984a77b3
@ -32,6 +32,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader
|
||||
public string CommunicationInterfaceBridge; /// Communication Interface: RFID or NFC
|
||||
public bool EnableShowChanels;
|
||||
public int IBeginDataFlush;
|
||||
public int SlotNr;
|
||||
|
||||
|
||||
|
||||
@ -51,6 +52,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader
|
||||
{
|
||||
Name = "Genesis";
|
||||
ParentName = string.Empty;
|
||||
SlotNr = 0;
|
||||
OptoComPortNr = 10;
|
||||
RfidComPortNr = 0; /// = use mux. board
|
||||
MuxBoardNr = 1;
|
||||
@ -70,7 +72,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader
|
||||
|
||||
public string ToString(int i)
|
||||
{
|
||||
return $"{Name} Group1 (mux#)={MuxBoardNr}, Group2={Group}, Opto=Com{OptoComPortNr}, {CommunicationInterfaceBridge}=Com{RfidComPortNr}, EnableShowChanels={EnableShowChanels}, IBeginDataFlush={IBeginDataFlush}";
|
||||
return $"{Name} SlotNr={SlotNr} Group1 (mux#)={MuxBoardNr}, Group2={Group}, Opto=Com{OptoComPortNr}, {CommunicationInterfaceBridge}=Com{RfidComPortNr}, EnableShowChanels={EnableShowChanels}, IBeginDataFlush={IBeginDataFlush}";
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -8,7 +8,6 @@ using System.Windows.Forms;
|
||||
using Common;
|
||||
using TBF.Resources;
|
||||
using TBF.Rig.Generic;
|
||||
using TBF.Rig.RegisterReaders.GenesisRegReader.implementations;
|
||||
using TBF.UI.Bench.Components;
|
||||
|
||||
|
||||
@ -91,6 +90,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader
|
||||
muxBoardNrTextBox.Text = config.MuxBoardNr.ToString();
|
||||
groupTextBox.Text = config.Group.ToString();
|
||||
comboBoxCommunicationInterface.SelectedItem = config.CommunicationInterfaceBridge;
|
||||
textBoxSlotNr.Text = config.SlotNr.ToString();
|
||||
tBBeginDataFlush.Text = config.IBeginDataFlush.ToString();
|
||||
checkBox_EnableShowChanels.Checked = config.EnableShowChanels;
|
||||
|
||||
@ -110,6 +110,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader
|
||||
muxBoardNrTextBox.Enabled = true;
|
||||
groupTextBox.Enabled = true;
|
||||
comboBoxCommunicationInterface.Enabled = true;
|
||||
textBoxSlotNr.Enabled = true;
|
||||
tBBeginDataFlush.Enabled = true;
|
||||
checkBox_EnableShowChanels.Enabled = true;
|
||||
}
|
||||
@ -180,6 +181,12 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader
|
||||
message += Environment.NewLine + "Communication Interface is not selected";
|
||||
}
|
||||
|
||||
if (!int.TryParse(textBoxSlotNr.Text, out dummy) || dummy < 0 || dummy > 400)
|
||||
{
|
||||
flags |= CfgUpdateFlags.Error;
|
||||
message += Environment.NewLine + string.Format(Strings.Invalid_0, tBBeginDataFlush.Text);
|
||||
}
|
||||
|
||||
return flags;
|
||||
}
|
||||
|
||||
@ -210,6 +217,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader
|
||||
config.HeadCommunicationComPortNr = int.Parse(headPortNrTextBox.Text);
|
||||
config.IBeginDataFlush = int.Parse(tBBeginDataFlush.Text);
|
||||
config.EnableShowChanels = checkBox_EnableShowChanels.Checked;
|
||||
config.SlotNr = int.Parse(textBoxSlotNr.Text);
|
||||
|
||||
return flags;
|
||||
}
|
||||
|
||||
@ -33,6 +33,8 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader
|
||||
{
|
||||
this.tabControl1 = new System.Windows.Forms.TabControl();
|
||||
this.tabPage1 = new System.Windows.Forms.TabPage();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.textBoxSlotNr = new System.Windows.Forms.TextBox();
|
||||
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
||||
this.headPortNrTextBox = new System.Windows.Forms.TextBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
@ -83,6 +85,8 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader
|
||||
//
|
||||
// tabPage1
|
||||
//
|
||||
this.tabPage1.Controls.Add(this.label5);
|
||||
this.tabPage1.Controls.Add(this.textBoxSlotNr);
|
||||
this.tabPage1.Controls.Add(this.groupBox2);
|
||||
this.tabPage1.Controls.Add(this.label4);
|
||||
this.tabPage1.Controls.Add(this.label3);
|
||||
@ -104,6 +108,22 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader
|
||||
this.tabPage1.Text = "Config";
|
||||
this.tabPage1.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// label5
|
||||
//
|
||||
this.label5.Location = new System.Drawing.Point(372, 55);
|
||||
this.label5.Name = "label5";
|
||||
this.label5.Size = new System.Drawing.Size(100, 23);
|
||||
this.label5.TabIndex = 28;
|
||||
this.label5.Text = "Slot Nr:";
|
||||
//
|
||||
// textBoxSlotNr
|
||||
//
|
||||
this.textBoxSlotNr.Enabled = false;
|
||||
this.textBoxSlotNr.Location = new System.Drawing.Point(480, 55);
|
||||
this.textBoxSlotNr.Name = "textBoxSlotNr";
|
||||
this.textBoxSlotNr.Size = new System.Drawing.Size(74, 26);
|
||||
this.textBoxSlotNr.TabIndex = 27;
|
||||
//
|
||||
// groupBox2
|
||||
//
|
||||
this.groupBox2.Controls.Add(this.headPortNrTextBox);
|
||||
@ -445,6 +465,9 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader
|
||||
this.ResumeLayout(false);
|
||||
}
|
||||
|
||||
private System.Windows.Forms.TextBox textBoxSlotNr;
|
||||
private System.Windows.Forms.Label label5;
|
||||
|
||||
private System.Windows.Forms.CheckBox checkBox_EnableShowChanels;
|
||||
|
||||
private System.Windows.Forms.Label labelFlush;
|
||||
|
||||
@ -1,12 +1,9 @@
|
||||
using System;
|
||||
using System.IO.Ports;
|
||||
using Common;
|
||||
using log4net;
|
||||
using TBF.Rig.BridgeComponents.GciBridge;
|
||||
using TBF.Rig.RegisterReaders.GenesisRegReader.implementations;
|
||||
using TBF.Rig.TestMethods.iPerlCommunication.communication.C4.diagnosticLed;
|
||||
using TBF.Rig.TestMethods.iPerlCommunication.communication.Utils;
|
||||
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore;
|
||||
|
||||
|
||||
namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
|
||||
@ -17,9 +14,9 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
|
||||
private static readonly ILog log = LogManager.GetLogger(typeof(OptoHeadTest));
|
||||
|
||||
private GenesisSmartReader genesisHead;
|
||||
private SerialDriver serialDriver;
|
||||
//private SerialDriver serialDriver;
|
||||
|
||||
public static SerialDriver BuildConnection(GenesisSmartReader genesidHead)
|
||||
public void BuildConnection(GenesisSmartReader genesidHead)
|
||||
{
|
||||
InitSlot(1, genesidHead.RfidComPortNr, genesidHead.RfidComPortNr);
|
||||
genesidHead?.CommInterfaceBridgeComponent.ConnectExternal();
|
||||
@ -104,6 +101,10 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
|
||||
gciBridge.ConnectExternal();
|
||||
//gciBridge.GciExternalInterface.InitOneMeterFromExtern(1, GenesisMeter.ConfigSource.ExternStorage, GenesisMeter.PasswordSource.ExternUniStorage, GenesisMeter.PasswordSource.ExternUniStorage);
|
||||
|
||||
|
||||
if (gciBridge.GciExternalInterface?.IsConnected == null)
|
||||
BuildConnection(genesisHead);
|
||||
|
||||
gciBridge.DisconnectExternal();
|
||||
}
|
||||
|
||||
@ -111,17 +112,15 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
|
||||
|
||||
|
||||
|
||||
if (serialDriver == null)
|
||||
serialDriver = BuildConnection(genesisHead);
|
||||
|
||||
log.Debug("ReadSerialNr called for iHead: " + genesisHead.ToString() + " serialDriver: " + serialDriver);
|
||||
RadioService headService = new RadioService(serialDriver);
|
||||
string serialNo = headService.ReadRequest_PCB(ref genesisHead);
|
||||
if (!string.IsNullOrEmpty(serialNo))
|
||||
{
|
||||
log.Info($"Success Serial No: {serialNo} on COM{genesisHead.RfidComPortNr} serialDriver: {serialDriver}");
|
||||
return true;
|
||||
}
|
||||
// log.Debug("ReadSerialNr called for iHead: " + genesisHead.ToString() + " serialDriver: " + serialDriver);
|
||||
// RadioService headService = new RadioService(serialDriver);
|
||||
// string serialNo = headService.ReadRequest_PCB(ref genesisHead);
|
||||
// if (!string.IsNullOrEmpty(serialNo))
|
||||
// {
|
||||
// log.Info($"Success Serial No: {serialNo} on COM{genesisHead.RfidComPortNr} serialDriver: {serialDriver}");
|
||||
// return true;
|
||||
// }
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
@ -143,14 +142,13 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
|
||||
{
|
||||
if (genesisHead != null)
|
||||
{
|
||||
if(genesisHead.RfidComPortNr != 0 && genesisHead. )
|
||||
|
||||
if (serialDriver == null)
|
||||
serialDriver = BuildConnection(genesisHead);
|
||||
if(genesisHead.RfidComPortNr != 0 && !genesisHead?.CommInterfaceBridgeComponent?.GciExternalInterface?.IsConnected == false)
|
||||
BuildConnection(genesisHead);
|
||||
|
||||
|
||||
RadioService headService = new RadioService(serialDriver);
|
||||
RadioService headService = new RadioService(genesisHead?.CommInterfaceBridgeComponent);
|
||||
string serialNo = headService.ReadRequest_PCB(ref genesisHead);
|
||||
log.Info($"PCB Number: {serialNo} on COM{genesisHead.RfidComPortNr} serialDriver: {serialDriver}");
|
||||
log.Info($"PCB Number: {serialNo} on COM{genesisHead.RfidComPortNr} SlotNr: {genesisHead.GetSlotNr} serialDriver: {genesisHead?.CommInterfaceBridgeComponent}");
|
||||
return serialNo;
|
||||
}
|
||||
}
|
||||
@ -241,14 +239,21 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
|
||||
/// <exception cref="Exception"></exception>
|
||||
private bool SetOptTestMode()
|
||||
{
|
||||
|
||||
if (genesisHead.DebugLevel == DebugMode.Simulate)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
if (genesisHead != null)
|
||||
{
|
||||
if (serialDriver == null)
|
||||
serialDriver = BuildConnection(genesisHead);
|
||||
|
||||
RadioService headService = new RadioService(serialDriver);
|
||||
if(genesisHead.RfidComPortNr != 0 && !genesisHead?.CommInterfaceBridgeComponent?.GciExternalInterface?.IsConnected == false)
|
||||
BuildConnection(genesisHead);
|
||||
|
||||
|
||||
RadioService headService = new RadioService(genesisHead?.CommInterfaceBridgeComponent);
|
||||
bool optTestMode = headService.SetOptTestMode(genesisHead);
|
||||
if (genesisHead.ConfigStruct != null)
|
||||
genesisHead.ConfigStruct.OpthoStatusMode = optTestMode ? DiagnosticLedState.State4 : DiagnosticLedState.StatusUnknown;
|
||||
@ -259,7 +264,10 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
|
||||
{
|
||||
log.Error("SetOptTestMode() - Exception:" + ex.StackTrace);
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -300,10 +308,10 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
|
||||
{
|
||||
if (iHead != null)
|
||||
{
|
||||
if (serialDriver == null)
|
||||
serialDriver = BuildConnection(iHead);
|
||||
if(genesisHead.RfidComPortNr != 0 && !genesisHead?.CommInterfaceBridgeComponent?.GciExternalInterface?.IsConnected == false)
|
||||
BuildConnection(genesisHead);
|
||||
|
||||
RadioService headService = new RadioService(serialDriver);
|
||||
RadioService headService = new RadioService(genesisHead?.CommInterfaceBridgeComponent);
|
||||
return headService.SetOptActiveMode(iHead);
|
||||
}
|
||||
}
|
||||
@ -327,11 +335,12 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
|
||||
{
|
||||
if (genesisHead != null)
|
||||
{
|
||||
if (serialDriver == null)
|
||||
serialDriver = BuildConnection(genesisHead);
|
||||
if (genesisHead.RfidComPortNr != 0 &&
|
||||
!genesisHead?.CommInterfaceBridgeComponent?.GciExternalInterface?.IsConnected == false)
|
||||
BuildConnection(genesisHead);
|
||||
|
||||
log.Debug("SetActivityMode_Active called for iHead: " + genesisHead.ToString() + " serialDriver: " + serialDriver);
|
||||
RadioService headService = new RadioService(serialDriver);
|
||||
log.Debug("SetActivityMode_Active called for iHead: " + genesisHead.ToString());
|
||||
RadioService headService = new RadioService(genesisHead?.CommInterfaceBridgeComponent);
|
||||
return headService.SetActivityMode_Active(genesisHead);
|
||||
}
|
||||
}
|
||||
@ -355,12 +364,13 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
|
||||
{
|
||||
if (genesisHead != null)
|
||||
{
|
||||
if (serialDriver == null)
|
||||
serialDriver = BuildConnection(genesisHead);
|
||||
if (genesisHead.RfidComPortNr != 0 &&
|
||||
!genesisHead?.CommInterfaceBridgeComponent?.GciExternalInterface?.IsConnected == false)
|
||||
BuildConnection(genesisHead);
|
||||
|
||||
log.Debug("SetActivityMode_Idle called for iHead: " + genesisHead.ToString() + " serialDriver: " + serialDriver);
|
||||
log.Debug("SetActivityMode_Idle called for iHead: " + genesisHead.ToString());
|
||||
|
||||
RadioService headService = new RadioService(serialDriver);
|
||||
RadioService headService = new RadioService(genesisHead?.CommInterfaceBridgeComponent);
|
||||
return headService.SetActivityMode_Idle(genesisHead);
|
||||
}
|
||||
}
|
||||
@ -399,10 +409,11 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
|
||||
{
|
||||
genesisHead.ConfigStruct = new ConfigStruct();
|
||||
|
||||
if (serialDriver == null)
|
||||
serialDriver = BuildConnection(genesisHead);
|
||||
if (genesisHead.RfidComPortNr != 0 &&
|
||||
!genesisHead?.CommInterfaceBridgeComponent?.GciExternalInterface?.IsConnected == false)
|
||||
BuildConnection(genesisHead);
|
||||
|
||||
RadioService headService = new RadioService(serialDriver);
|
||||
RadioService headService = new RadioService(genesisHead?.CommInterfaceBridgeComponent);
|
||||
genesisHead.ConfigStruct.PCBNumberString = headService.ReadRequest_PCB(ref genesisHead);
|
||||
genesisHead.ConfigStruct.StatusMode = headService.GetActivityStatusMode(genesisHead);
|
||||
genesisHead.ConfigStruct.Unit = headService.GetUnit(genesisHead);
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
using log4net;
|
||||
using TBF.Rig.BridgeComponents.GciBridge;
|
||||
using TBF.Rig.RegisterReaders.GenesisRegReader.implementations;
|
||||
using TBF.Rig.TestMethods.iPerlCommunication.communication.C4.diagnosticLed;
|
||||
using TBF.Rig.TestMethods.iPerlCommunication.communication.C4.IperlHatProtocol;
|
||||
@ -15,47 +16,31 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
|
||||
static string okResponse = "Command complete, no errors";
|
||||
static string errorResponse = "Unable to execute";
|
||||
|
||||
private ISerialDriver serialDriver;
|
||||
public RadioService(SerialDriver serialDriver)
|
||||
private GciBridge _bridge;
|
||||
|
||||
public RadioService(GciBridge genesisHeadCommInterfaceBridgeComponent)
|
||||
{
|
||||
this.serialDriver = serialDriver;
|
||||
log.Debug("RadioService created with serialDriver= " + serialDriver + "");
|
||||
}
|
||||
|
||||
public RadioService(ISerialDriver serialDriver)
|
||||
{
|
||||
this.serialDriver = serialDriver;
|
||||
log.Debug("RadioService created with serialDriver= " + serialDriver + "");
|
||||
this._bridge = genesisHeadCommInterfaceBridgeComponent;
|
||||
log.Debug("RadioService created with GciBridge= " + genesisHeadCommInterfaceBridgeComponent + "");
|
||||
}
|
||||
|
||||
public string ReadRequest_PCB(ref GenesisSmartReader iHead)
|
||||
{
|
||||
if (!serialDriver.IsOpen())
|
||||
if (_bridge?.GciExternalInterface?.IsConnected == false)
|
||||
{
|
||||
serialDriver.Open();
|
||||
_bridge?.GciExternalInterface?.ConnectOneMeter(iHead.GetSlotNr);
|
||||
}
|
||||
|
||||
var request = new IperlHatFrameBuilder()
|
||||
.RequestResponse(true)
|
||||
.AddCommand(ProtocolCommand.ViewFactoryId)
|
||||
.BuildBytes();
|
||||
|
||||
|
||||
byte[] rawData = serialDriver.SendAndWait(request, 10000);
|
||||
if (rawData == null)
|
||||
return null;
|
||||
|
||||
// parse rawData
|
||||
var parser = new IperlHatFrameParser();
|
||||
IperlHatResponse decoded = parser.Parse(rawData);
|
||||
if (decoded.IsOk)
|
||||
//Request PCB Number
|
||||
string pcbId = _bridge?.GciExternalInterface?.GetPcbId(iHead.GetSlotNr);
|
||||
if (!string.IsNullOrEmpty(pcbId))
|
||||
{
|
||||
string asciiPayload = decoded.GetAsciiPayload();
|
||||
if (iHead.ConfigStruct != null) // store mechanism
|
||||
{
|
||||
iHead.ConfigStruct.PCBNumberString = asciiPayload;
|
||||
iHead.ConfigStruct.PCBNumberString = pcbId;
|
||||
}
|
||||
return asciiPayload;
|
||||
return pcbId;
|
||||
}
|
||||
|
||||
return null;
|
||||
@ -63,56 +48,47 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
|
||||
|
||||
public ProtocolStatuses GetActivityStatusMode(GenesisSmartReader iHead)
|
||||
{
|
||||
if (!serialDriver.IsOpen())
|
||||
serialDriver.Open();
|
||||
if (_bridge?.GciExternalInterface?.IsConnected == false)
|
||||
{
|
||||
_bridge?.GciExternalInterface?.ConnectOneMeter(iHead.GetSlotNr);
|
||||
}
|
||||
|
||||
var request = new IperlHatFrameBuilder()
|
||||
.RequestResponse(true)
|
||||
.AddCommand(ProtocolCommand.ViewState)
|
||||
.BuildBytes();
|
||||
|
||||
byte[] rawData = serialDriver.SendAndWait(request, 10000);
|
||||
if (rawData == null)
|
||||
return ProtocolStatuses.Unknown;
|
||||
|
||||
var parser = new IperlHatFrameParser();
|
||||
IperlHatResponse decoded = parser.Parse(rawData);
|
||||
|
||||
if (!decoded.IsOk)
|
||||
return ProtocolStatuses.Unknown;
|
||||
//Request Activity Status Mode
|
||||
string pcbId = _bridge?.GciExternalInterface?.GetPcbId(iHead.GetSlotNr);
|
||||
if (!string.IsNullOrEmpty(pcbId))
|
||||
{
|
||||
if (iHead.ConfigStruct != null) // store mechanism
|
||||
{
|
||||
iHead.ConfigStruct.PCBNumberString = pcbId;
|
||||
}
|
||||
return ProtocolStatuses.Active;
|
||||
}
|
||||
|
||||
ProtocolStatuses statusMode = decoded.GetResponse<ProtocolStatuses>(out bool isOK);
|
||||
|
||||
if (!isOK)
|
||||
return ProtocolStatuses.Unknown; // wrong payload
|
||||
|
||||
return statusMode;
|
||||
return ProtocolStatuses.Unknown;
|
||||
}
|
||||
|
||||
public DiagnosticLedState SetOptoStatusMode(GenesisSmartReader iHead, DiagnosticLedState opthoStatusMode)
|
||||
{
|
||||
if (!serialDriver.IsOpen())
|
||||
serialDriver.Open();
|
||||
if (_bridge?.GciExternalInterface?.IsConnected == false)
|
||||
{
|
||||
_bridge?.GciExternalInterface?.ConnectOneMeter(iHead.GetSlotNr);
|
||||
}
|
||||
|
||||
var request = new IperlHatFrameBuilder()
|
||||
.RequestResponse(true)
|
||||
.AddDeviceCommand(ProtocolDeviceSubCommand.SetDiagnosticLEDState)
|
||||
.AddPayload(opthoStatusMode)
|
||||
.BuildBytes();
|
||||
//SetDiagnosticLEDState
|
||||
|
||||
byte[] rawData = serialDriver.SendAndWait(request, 10000);
|
||||
if (rawData == null)
|
||||
return DiagnosticLedState.StatusUnknown;
|
||||
|
||||
var parser = new IperlHatFrameParser();
|
||||
IperlHatResponse decoded = parser.Parse(rawData);
|
||||
|
||||
log.Debug("SetOptoStatusMode isOK: " + decoded.IsOk);
|
||||
// if is response ok - it set it correctly
|
||||
if (!decoded.IsOk)
|
||||
return DiagnosticLedState.StatusUnknown;
|
||||
|
||||
return opthoStatusMode;
|
||||
string pcbId = _bridge?.GciExternalInterface?.GetPcbId(iHead.GetSlotNr);
|
||||
if (!string.IsNullOrEmpty(pcbId))
|
||||
{
|
||||
if (iHead.ConfigStruct != null) // store mechanism
|
||||
{
|
||||
iHead.ConfigStruct.PCBNumberString = pcbId;
|
||||
}
|
||||
return DiagnosticLedState.State1;
|
||||
}
|
||||
|
||||
return DiagnosticLedState.StatusUnknown;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -127,124 +103,86 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
|
||||
|
||||
public string GetVersion(GenesisSmartReader iHead)
|
||||
{
|
||||
if (!serialDriver.IsOpen())
|
||||
if (_bridge?.GciExternalInterface?.IsConnected == false)
|
||||
{
|
||||
serialDriver.Open();
|
||||
_bridge?.GciExternalInterface?.ConnectOneMeter(iHead.GetSlotNr);
|
||||
}
|
||||
|
||||
byte[] request = new IperlHatFrameBuilder()
|
||||
.RequestResponse(true)
|
||||
.AddCommand(ProtocolCommand.Question)
|
||||
.AddPayload(IperlHatProtocolConstants.Version)
|
||||
.BuildBytes();
|
||||
|
||||
|
||||
byte[] rawData = serialDriver.SendAndWait(request, 10000);
|
||||
if (rawData == null)
|
||||
return "";
|
||||
|
||||
// parse rawData
|
||||
var parser = new IperlHatFrameParser();
|
||||
IperlHatResponse decoded = parser.Parse(rawData);
|
||||
log.Debug("GetVersion isOK: " + decoded.IsOk);
|
||||
if (decoded.IsOk)
|
||||
string version = _bridge?.GciExternalInterface?.GetPcbId(iHead.GetSlotNr);
|
||||
if (!string.IsNullOrEmpty(version))
|
||||
{
|
||||
return decoded.GetAsciiPayload();
|
||||
if (iHead.ConfigStruct != null) // store mechanism
|
||||
{
|
||||
iHead.ConfigStruct.Version = version;
|
||||
}
|
||||
return version;
|
||||
}
|
||||
|
||||
return "";
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
|
||||
public bool SetActivityMode_Active(GenesisSmartReader iHead)
|
||||
{
|
||||
if (!serialDriver.IsOpen())
|
||||
if (_bridge?.GciExternalInterface?.IsConnected == false)
|
||||
{
|
||||
serialDriver.Open();
|
||||
_bridge?.GciExternalInterface?.ConnectOneMeter(iHead.GetSlotNr);
|
||||
}
|
||||
|
||||
//Set LED to state 4
|
||||
byte[] request = new IperlHatFrameBuilder()
|
||||
.RequestResponse(true)
|
||||
.AddCommand(ProtocolCommand.SetState)
|
||||
.AddSubCommand(ProtocolStatuses.Active) // Active
|
||||
.BuildBytes();
|
||||
|
||||
byte[] rawData = serialDriver.SendAndWait(request, 5000);
|
||||
if (rawData == null)
|
||||
return false;
|
||||
|
||||
|
||||
// parse rawData
|
||||
var parser = new IperlHatFrameParser();
|
||||
IperlHatResponse decoded = parser.Parse(rawData);
|
||||
log.Debug("SetActivityMode_Active isOK: " + decoded.IsOk);
|
||||
if (decoded.IsOk && iHead.ConfigStruct != null)
|
||||
string version = _bridge?.GciExternalInterface?.GetPcbId(iHead.GetSlotNr);
|
||||
if (!string.IsNullOrEmpty(version))
|
||||
{
|
||||
iHead.ConfigStruct.StatusMode = ProtocolStatuses.Active;
|
||||
if (iHead.ConfigStruct != null) // store mechanism
|
||||
{
|
||||
iHead.ConfigStruct.Version = version;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return decoded.IsOk;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool SetActivityMode_Idle(GenesisSmartReader iHead)
|
||||
{
|
||||
if (!serialDriver.IsOpen())
|
||||
if (_bridge?.GciExternalInterface?.IsConnected == false)
|
||||
{
|
||||
serialDriver.Open();
|
||||
_bridge?.GciExternalInterface?.ConnectOneMeter(iHead.GetSlotNr);
|
||||
}
|
||||
|
||||
//Set Activity State Idle
|
||||
byte[] request = new IperlHatFrameBuilder()
|
||||
.RequestResponse(true)
|
||||
.AddCommand(ProtocolCommand.SetState)
|
||||
.AddSubCommand(ProtocolStatuses.Idle)
|
||||
.BuildBytes();
|
||||
|
||||
byte[] rawData = serialDriver.SendAndWait(request, 5000);
|
||||
if (rawData == null)
|
||||
return false;
|
||||
|
||||
|
||||
// parse rawData
|
||||
var parser = new IperlHatFrameParser();
|
||||
IperlHatResponse decoded = parser.Parse(rawData);
|
||||
log.Debug("SetActivityMode_Idle isOK: " + decoded.IsOk);
|
||||
if (decoded.IsOk && iHead.ConfigStruct != null)
|
||||
string version = _bridge?.GciExternalInterface?.GetPcbId(iHead.GetSlotNr);
|
||||
if (!string.IsNullOrEmpty(version))
|
||||
{
|
||||
iHead.ConfigStruct.StatusMode = ProtocolStatuses.Idle;
|
||||
if (iHead.ConfigStruct != null) // store mechanism
|
||||
{
|
||||
iHead.ConfigStruct.Version = version;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return decoded.IsOk;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool SetOptTestMode(GenesisSmartReader iHead)
|
||||
{
|
||||
if (!serialDriver.IsOpen())
|
||||
if (_bridge?.GciExternalInterface?.IsConnected == false)
|
||||
{
|
||||
serialDriver.Open();
|
||||
_bridge?.GciExternalInterface?.ConnectOneMeter(iHead.GetSlotNr);
|
||||
}
|
||||
|
||||
//Set LED to state 4
|
||||
var request = new IperlHatFrameBuilder()
|
||||
.RequestResponse(true)
|
||||
.AddDeviceCommand(ProtocolDeviceSubCommand.SetDiagnosticLEDState)
|
||||
.AddPayload(DiagnosticLedState.State4)
|
||||
.BuildBytes();
|
||||
|
||||
byte[] rawData = serialDriver.SendAndWait(request, 5000);
|
||||
if (rawData == null)
|
||||
return false;
|
||||
|
||||
|
||||
// parse rawData
|
||||
var parser = new IperlHatFrameParser();
|
||||
IperlHatResponse decoded = parser.Parse(rawData);
|
||||
bool isOk = decoded.IsOk;
|
||||
log.Debug("SetOptTestMode isOK: " + isOk);
|
||||
if (decoded.IsOk && iHead.ConfigStruct != null)
|
||||
string version = _bridge?.GciExternalInterface?.GetPcbId(iHead.GetSlotNr);
|
||||
if (!string.IsNullOrEmpty(version))
|
||||
{
|
||||
iHead.ConfigStruct.OpthoStatusMode = DiagnosticLedState.State4;
|
||||
if (iHead.ConfigStruct != null) // store mechanism
|
||||
{
|
||||
iHead.ConfigStruct.Version = version;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return isOk;
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
@ -255,65 +193,43 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
|
||||
/// <returns></returns>
|
||||
public bool SetOptActiveMode(GenesisSmartReader iHead)
|
||||
{
|
||||
if (!serialDriver.IsOpen())
|
||||
if (_bridge?.GciExternalInterface?.IsConnected == false)
|
||||
{
|
||||
serialDriver.Open();
|
||||
_bridge?.GciExternalInterface?.ConnectOneMeter(iHead.GetSlotNr);
|
||||
}
|
||||
|
||||
//Set LED to state 1
|
||||
var request = new IperlHatFrameBuilder()
|
||||
.RequestResponse(true)
|
||||
.AddDeviceCommand(ProtocolDeviceSubCommand.SetDiagnosticLEDState)
|
||||
.AddPayload(DiagnosticLedState.StateOFF)
|
||||
.BuildBytes();
|
||||
|
||||
byte[] rawData = serialDriver.SendAndWait(request, 5000);
|
||||
if (rawData == null)
|
||||
return false;
|
||||
|
||||
|
||||
// parse rawData
|
||||
var parser = new IperlHatFrameParser();
|
||||
IperlHatResponse decoded = parser.Parse(rawData);
|
||||
log.Debug("SetOptActiveMode isOK: " + decoded.IsOk);
|
||||
if (decoded.IsOk && iHead.ConfigStruct != null)
|
||||
string version = _bridge?.GciExternalInterface?.GetPcbId(iHead.GetSlotNr);
|
||||
if (!string.IsNullOrEmpty(version))
|
||||
{
|
||||
iHead.ConfigStruct.OpthoStatusMode = DiagnosticLedState.StateOFF;
|
||||
if (iHead.ConfigStruct != null) // store mechanism
|
||||
{
|
||||
iHead.ConfigStruct.Version = version;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return decoded.IsOk;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public string GetUnit(GenesisSmartReader iperlHead)
|
||||
{
|
||||
if (!serialDriver.IsOpen())
|
||||
if (_bridge?.GciExternalInterface?.IsConnected == false)
|
||||
{
|
||||
serialDriver.Open();
|
||||
_bridge?.GciExternalInterface?.ConnectOneMeter(iperlHead.GetSlotNr);
|
||||
}
|
||||
|
||||
var request = new IperlHatFrameBuilder()
|
||||
.RequestResponse(true)
|
||||
.AddCommand(ProtocolCommand.ViewFactoryId)
|
||||
.BuildBytes();
|
||||
|
||||
|
||||
byte[] rawData = serialDriver.SendAndWait(request, 10000);
|
||||
if (rawData == null)
|
||||
return null;
|
||||
|
||||
// parse rawData
|
||||
var parser = new IperlHatFrameParser();
|
||||
IperlHatResponse decoded = parser.Parse(rawData);
|
||||
if (decoded.IsOk)
|
||||
string version = _bridge?.GciExternalInterface?.GetPcbId(iperlHead.GetSlotNr);
|
||||
if (!string.IsNullOrEmpty(version))
|
||||
{
|
||||
string asciiPayload = decoded.GetAsciiPayload();
|
||||
if (iperlHead.ConfigStruct != null) // store mechanism
|
||||
{
|
||||
iperlHead.ConfigStruct.Unit = asciiPayload;
|
||||
iperlHead.ConfigStruct.Version = version;
|
||||
}
|
||||
return asciiPayload;
|
||||
return version;
|
||||
}
|
||||
|
||||
return null;
|
||||
return string.Empty;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -135,7 +135,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.implementations
|
||||
{
|
||||
get
|
||||
{
|
||||
return CommInterfaceBridge.GetComponent(null) as TBF.Rig.BridgeComponents.GciBridge.GciBridge;
|
||||
return CommInterfaceBridge.DummyComponent() as TBF.Rig.BridgeComponents.GciBridge.GciBridge;
|
||||
}
|
||||
}
|
||||
|
||||
@ -3960,6 +3960,8 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.implementations
|
||||
public double Q3Calib_Ch1Value { get => q3CalibCh[0]; }
|
||||
public double Q3Calib_Ch2Value { get => q3CalibCh[1]; }
|
||||
public double Q3Calib_Ch3Value { get => q3CalibCh[2]; }
|
||||
|
||||
public int GetSlotNr { get => genesisHeadCfg?.SlotNr ?? -1; }
|
||||
|
||||
void SetQ3Calibration(double[] q3CalibInitial) { this.q3CalibInitial = q3CalibInitial; }
|
||||
|
||||
|
||||
@ -79,7 +79,7 @@ namespace TBFTests.Rig.RegisterReaders.GenesisRegReader.implementations
|
||||
cfg.RfidComPortNr = 8;
|
||||
cfg.MuxBoardNr = 1;
|
||||
cfg.Group = 1;
|
||||
cfg.CommunicationInterface = CommunicationInterface.RFID;
|
||||
cfg.CommunicationInterfaceBridge = string.Empty;
|
||||
|
||||
if (cfg.ProcParams != null)
|
||||
{
|
||||
|
||||
Loading…
Reference in New Issue
Block a user