diff --git a/TBF/Rig/RegisterReaders/GenesisRegReader/GenesisCfg.cs b/TBF/Rig/RegisterReaders/GenesisRegReader/GenesisCfg.cs index c952cb81e..535bed0ae 100644 --- a/TBF/Rig/RegisterReaders/GenesisRegReader/GenesisCfg.cs +++ b/TBF/Rig/RegisterReaders/GenesisRegReader/GenesisCfg.cs @@ -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}"; } } } \ No newline at end of file diff --git a/TBF/Rig/RegisterReaders/GenesisRegReader/GenesisCfgCtrl.cs b/TBF/Rig/RegisterReaders/GenesisRegReader/GenesisCfgCtrl.cs index ca131b255..ecb358ca6 100644 --- a/TBF/Rig/RegisterReaders/GenesisRegReader/GenesisCfgCtrl.cs +++ b/TBF/Rig/RegisterReaders/GenesisRegReader/GenesisCfgCtrl.cs @@ -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; } diff --git a/TBF/Rig/RegisterReaders/GenesisRegReader/GenesisCfgCtrl.designer.cs b/TBF/Rig/RegisterReaders/GenesisRegReader/GenesisCfgCtrl.designer.cs index b2ad2805a..9ae5fa75c 100644 --- a/TBF/Rig/RegisterReaders/GenesisRegReader/GenesisCfgCtrl.designer.cs +++ b/TBF/Rig/RegisterReaders/GenesisRegReader/GenesisCfgCtrl.designer.cs @@ -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; diff --git a/TBF/Rig/RegisterReaders/GenesisRegReader/communication/OptoHeadTest.cs b/TBF/Rig/RegisterReaders/GenesisRegReader/communication/OptoHeadTest.cs index bbf52cbfc..db5df7650 100644 --- a/TBF/Rig/RegisterReaders/GenesisRegReader/communication/OptoHeadTest.cs +++ b/TBF/Rig/RegisterReaders/GenesisRegReader/communication/OptoHeadTest.cs @@ -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 /// 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; + + } /// @@ -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); diff --git a/TBF/Rig/RegisterReaders/GenesisRegReader/communication/RadioService.cs b/TBF/Rig/RegisterReaders/GenesisRegReader/communication/RadioService.cs index 8d7c647ec..bdc8f894f 100644 --- a/TBF/Rig/RegisterReaders/GenesisRegReader/communication/RadioService.cs +++ b/TBF/Rig/RegisterReaders/GenesisRegReader/communication/RadioService.cs @@ -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(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 /// 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; } } } \ No newline at end of file diff --git a/TBF/Rig/RegisterReaders/GenesisRegReader/implementations/GenesisSmartReader.cs b/TBF/Rig/RegisterReaders/GenesisRegReader/implementations/GenesisSmartReader.cs index 494cc718e..2c64e5abb 100644 --- a/TBF/Rig/RegisterReaders/GenesisRegReader/implementations/GenesisSmartReader.cs +++ b/TBF/Rig/RegisterReaders/GenesisRegReader/implementations/GenesisSmartReader.cs @@ -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; } diff --git a/TBFTests/Rig/RegisterReaders/GenesisRegReader/implementations/GenesisSmartReaderChannelAveragingTests.cs b/TBFTests/Rig/RegisterReaders/GenesisRegReader/implementations/GenesisSmartReaderChannelAveragingTests.cs index 50e86ba40..6ae95fde3 100644 --- a/TBFTests/Rig/RegisterReaders/GenesisRegReader/implementations/GenesisSmartReaderChannelAveragingTests.cs +++ b/TBFTests/Rig/RegisterReaders/GenesisRegReader/implementations/GenesisSmartReaderChannelAveragingTests.cs @@ -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) {