diff --git a/TBF/Properties/AssemblyInfo.cs b/TBF/Properties/AssemblyInfo.cs index 02cdb9bb1..ebcef350d 100644 --- a/TBF/Properties/AssemblyInfo.cs +++ b/TBF/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // Build Number // Revision // -[assembly: AssemblyVersion("3.9.3059.1")] -[assembly: AssemblyFileVersion("3.9.3059.1")] +[assembly: AssemblyVersion("3.9.3062.1")] +[assembly: AssemblyFileVersion("3.9.3062.1")] diff --git a/TBF/Rig/BridgeComponents/GciBridge/GciBridge.cs b/TBF/Rig/BridgeComponents/GciBridge/GciBridge.cs index ff73cc42d..bab81b8fa 100644 --- a/TBF/Rig/BridgeComponents/GciBridge/GciBridge.cs +++ b/TBF/Rig/BridgeComponents/GciBridge/GciBridge.cs @@ -43,7 +43,7 @@ namespace TBF.Rig.BridgeComponents.GciBridge public bool HasWriter { get { return writer != null; } } public bool IsGuiInitialized { get { return gciGUI != null; } } public bool IsExternalInitialized { get { return gciExternalInterface != null; } } - public ExternalInterfaceType GciExternalInterface { get { return gciExternalInterface; } } + public GciType GciExternalInterface { get { return gciExternalInterface; } } public GciBridgeCfg GciBridgeCfg { get { return gciBridgeCfg; } } public UdsReaderType GetReader() diff --git a/TBF/Rig/Input/DataStorage/UniDataStorageReader/Reader.cs b/TBF/Rig/Input/DataStorage/UniDataStorageReader/Reader.cs index 657780198..d4a5fcd83 100644 --- a/TBF/Rig/Input/DataStorage/UniDataStorageReader/Reader.cs +++ b/TBF/Rig/Input/DataStorage/UniDataStorageReader/Reader.cs @@ -77,17 +77,17 @@ namespace TBF.Rig.Input.DataStorage.UniDataStorageReader public void Initialize() { - throw new NotImplementedException(); + //throw new NotImplementedException(); } public void StartChangeHandler() { - throw new NotImplementedException(); + //throw new NotImplementedException(); } public void StopChangeHandler() { - throw new NotImplementedException(); + //throw new NotImplementedException(); } } } diff --git a/TBF/Rig/Output/DataStorage/UniDataStorageWriter/Writer.cs b/TBF/Rig/Output/DataStorage/UniDataStorageWriter/Writer.cs index 2d97dac8b..759bcf15d 100644 --- a/TBF/Rig/Output/DataStorage/UniDataStorageWriter/Writer.cs +++ b/TBF/Rig/Output/DataStorage/UniDataStorageWriter/Writer.cs @@ -150,17 +150,17 @@ namespace TBF.Rig.Output.DataStorage.UniDataStorageWriter public void Initialize() { - throw new NotImplementedException(); + // throw new NotImplementedException(); } public void StartChangeHandler() { - throw new NotImplementedException(); + //throw new NotImplementedException(); } public void StopChangeHandler() { - throw new NotImplementedException(); + // throw new NotImplementedException(); } private WriterDiagnosticResult ValidateCapabilities(IDataStorageWriter writer, DataWriteRequest request) diff --git a/TBF/Rig/RegisterReaders/GenesisRegReader/communication/OptoHeadTest.cs b/TBF/Rig/RegisterReaders/GenesisRegReader/communication/OptoHeadTest.cs index db5df7650..8b107afc2 100644 --- a/TBF/Rig/RegisterReaders/GenesisRegReader/communication/OptoHeadTest.cs +++ b/TBF/Rig/RegisterReaders/GenesisRegReader/communication/OptoHeadTest.cs @@ -1,5 +1,7 @@ using System; +using System.Threading.Tasks; using Common; +using GenesisCordonelInterface.API; using log4net; using TBF.Rig.BridgeComponents.GciBridge; using TBF.Rig.RegisterReaders.GenesisRegReader.implementations; @@ -18,18 +20,16 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication public void BuildConnection(GenesisSmartReader genesidHead) { - InitSlot(1, genesidHead.RfidComPortNr, genesidHead.RfidComPortNr); - genesidHead?.CommInterfaceBridgeComponent.ConnectExternal(); - - // return new SerialDriverBuilder() - // .WithPort($"COM{genesidHead.RfidComPortNr}") - // .WithBaudRate(9600) - // .WithDataBits(8) - // .WithParity(Parity.None) - // .WithStopBits(StopBits.One) - // .WithTimeouts(4000, 2000) - // .BuildAndConnect(); - + GciPublicModels.GciInitSlotRequest request = new GciPublicModels.GciInitSlotRequest + { + SlotId = genesidHead.GetSlotNr, + ConfigSource = GciPublicModels.GciConfigSource.InterfaceInputConfig, + PasswordSource = GciPublicModels.GciPasswordSource.InterfaceInputPassword, + RequestPort = new GciPublicModels.GciPortConfig{ PortName = $"COM{genesidHead.RfidComPortNr}"/*, Type = "COM"*/}, + StreamingPort = new GciPublicModels.GciPortConfig{ PortName = $"COM{genesidHead.OptoComPortNr}"/*, Type = "COM"*/} + }; + genesidHead?.CommInterfaceBridge.InitSlotAsync(request); + slotDefined = true; } public OptoHeadTest(GenesisSmartReader genesisHead) @@ -39,8 +39,9 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication public void CloseConnection() { - genesisHead?.CommInterfaceBridgeComponent?.DisconnectExternal(); - + genesisHead?.CommInterfaceBridge?.DisconnectAsync(genesisHead.GetSlotNr); + DisposeSlot(); + // if (serialDriver != null) // serialDriver.CloseConnection(); // serialDriver = null; @@ -48,117 +49,91 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication private bool slotDefined = false; - public bool SlotDefined { get => slotDefined; } - - /// - /// - /// - /// must be unique to one connection - /// - /// - public void InitSlot(int slotNr, int ComportNr, int OptoComPortNr ) - { - // init slot - - //create slot object - set pots, etc. - //bridge - call init slot - - //switch - slotDefined = true; - } + public bool IsSlotDefined { get => slotDefined; } + public void DisposeSlot() { slotDefined = false; } - public bool ReadSerialNr() + public async Task ReadSerialNrAsync() { - if (slotDefined) - { - InitSlot(1,1,1); - } - try { - if (genesisHead != null) - { - if (string.IsNullOrEmpty(genesisHead.CommInterface)) - { - return false; - } + if (genesisHead == null) + return false; - if (genesisHead.CommInterfaceBridge != null) - { - //we have bridge interface - - GciBridge gciBridge = genesisHead.CommInterfaceBridgeComponent; - gciBridge.GciBridgeCfg.EnableExternalAccess = true; - gciBridge.GciBridgeCfg.EnableGuiAccess = false; - gciBridge.Initialize(); - if (!gciBridge.GciExternalInterface.IsConnected) - { - gciBridge.ConnectExternal(); - //gciBridge.GciExternalInterface.InitOneMeterFromExtern(1, GenesisMeter.ConfigSource.ExternStorage, GenesisMeter.PasswordSource.ExternUniStorage, GenesisMeter.PasswordSource.ExternUniStorage); - - - if (gciBridge.GciExternalInterface?.IsConnected == null) - BuildConnection(genesisHead); - - gciBridge.DisconnectExternal(); - } - - } - - - - - // 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; - // } - } + if (string.IsNullOrEmpty(genesisHead.CommInterface)) + return false; + + if (genesisHead.CommInterfaceBridge == null) + return false; + + if (!IsSlotDefined) + BuildConnection(genesisHead); + + GciBridge gciBridge = genesisHead.CommInterfaceBridge; + + gciBridge.GciBridgeCfg.EnableExternalAccess = true; + gciBridge.GciBridgeCfg.EnableGuiAccess = false; + gciBridge.Initialize(); + + RadioService headService = new RadioService(gciBridge); + + string pcbId = await headService.ReadRequest_PCBAsync(genesisHead); + + return !string.IsNullOrEmpty(pcbId); } catch (Exception ex) { - log.Error($"ReadSerialNr(COM{genesisHead.RfidComPortNr}) - Exception:" + ex.Message); + log.Error($"ReadSerialNr(COM{genesisHead?.RfidComPortNr}) - Exception: {ex}"); + return false; } - - return false; } public string ReadRequest_PCB() { - if (genesisHead.DebugLevel == DebugMode.Simulate) - { - return "-OK Simulated response-"; - } + // if (genesisHead.DebugLevel == DebugMode.Simulate) + // { + // log.Debug("ReadRequest_PCB() - Simulated response"); + // return "-OK Simulated response-"; + // } try { - if (genesisHead != null) - { - if(genesisHead.RfidComPortNr != 0 && !genesisHead?.CommInterfaceBridgeComponent?.GciExternalInterface?.IsConnected == false) - BuildConnection(genesisHead); - - - RadioService headService = new RadioService(genesisHead?.CommInterfaceBridgeComponent); - string serialNo = headService.ReadRequest_PCB(ref genesisHead); - log.Info($"PCB Number: {serialNo} on COM{genesisHead.RfidComPortNr} SlotNr: {genesisHead.GetSlotNr} serialDriver: {genesisHead?.CommInterfaceBridgeComponent}"); - return serialNo; - } + log.Debug("ReadRequest_PCB called for iHead: " + genesisHead.ToString()); + if (genesisHead == null) + return string.Empty; + + if (string.IsNullOrEmpty(genesisHead.CommInterface)) + return string.Empty; + + if (genesisHead.CommInterfaceBridge == null) + return string.Empty; + + if (!IsSlotDefined) { BuildConnection(genesisHead); } + + GciBridge gciBridge = genesisHead.CommInterfaceBridge; + log.Debug("ReadRequest_PCB() - GciBridge created"); + + gciBridge.GciBridgeCfg.EnableExternalAccess = true; + gciBridge.GciBridgeCfg.EnableGuiAccess = false; + gciBridge.Initialize(); + log.Debug("ReadRequest_PCB() - GciBridge initialized"); + + + RadioService headService = new RadioService(gciBridge); + string serialNo = headService.ReadRequest_PCB(ref genesisHead); + log.Info( + $"PCB Number: {serialNo} on COM{genesisHead.RfidComPortNr} SlotNr: {genesisHead.GetSlotNr} serialDriver: {genesisHead?.CommInterfaceBridge}"); + return serialNo; } catch (Exception ex) { log.Error("ReadRequest_PCB() - Exception:" + ex.StackTrace); return (ex.Message.ToString()); } - - return ""; } /// @@ -168,6 +143,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication /// public bool SetTestMode() { + if (!IsSlotDefined) { BuildConnection(genesisHead); } log.Debug("SetTestMode called for iHead: " + genesisHead.ToString()); bool activityModeActive = SetActivityMode_Active(); bool optActiveMode = SetOptTestMode(); @@ -183,6 +159,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication /// public bool SetActiveMode() { + if (!IsSlotDefined) { BuildConnection(genesisHead); } log.Debug("SetActiveMode called for iHead: " + genesisHead.ToString()); bool optActiveMode = SetOptActiveMode(genesisHead); //bool activityModeIdle = SetActivityMode_Idle(); @@ -245,25 +222,25 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication return true; } - try - { - if (genesisHead != null) - { - 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; - return optTestMode; - } - } - catch (Exception ex) - { - log.Error("SetOptTestMode() - Exception:" + ex.StackTrace); - } + // try + // { + // if (genesisHead != null) + // { + // 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; + // return optTestMode; + // } + // } + // catch (Exception ex) + // { + // log.Error("SetOptTestMode() - Exception:" + ex.StackTrace); + // } return false; @@ -284,17 +261,19 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication return "-OK Simulated response-"; } - try - { - bool activeMode = SetActiveMode(); - isTestModeSuccessful = activeMode; - return activeMode ? "Set Active Mode - OK" : "Set Active Mode - FAILED"; - } - catch (Exception ex) - { - log.Error("SetActiveMode() - Exception:" + ex.StackTrace); - return "Set Active Mode - Exception"; - } + // try + // { + // bool activeMode = SetActiveMode(); + // isTestModeSuccessful = activeMode; + // return activeMode ? "Set Active Mode - OK" : "Set Active Mode - FAILED"; + // } + // catch (Exception ex) + // { + // log.Error("SetActiveMode() - Exception:" + ex.StackTrace); + // return "Set Active Mode - Exception"; + // } + + return "Set Active Mode - No Implemented Exception"; } /// /// Set Optical -> Active mode @@ -304,21 +283,21 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication /// private bool SetOptActiveMode(GenesisSmartReader iHead) { - try - { - if (iHead != null) - { - if(genesisHead.RfidComPortNr != 0 && !genesisHead?.CommInterfaceBridgeComponent?.GciExternalInterface?.IsConnected == false) - BuildConnection(genesisHead); - - RadioService headService = new RadioService(genesisHead?.CommInterfaceBridgeComponent); - return headService.SetOptActiveMode(iHead); - } - } - catch (Exception ex) - { - log.Error("SetOptActiveMode() - Exception:" + ex.StackTrace); - } + // try + // { + // if (iHead != null) + // { + // if(genesisHead.RfidComPortNr != 0 && !genesisHead?.CommInterfaceBridgeComponent?.GciExternalInterface?.IsConnected == false) + // BuildConnection(genesisHead); + // + // RadioService headService = new RadioService(genesisHead?.CommInterfaceBridgeComponent); + // return headService.SetOptActiveMode(iHead); + // } + // } + // catch (Exception ex) + // { + // log.Error("SetOptActiveMode() - Exception:" + ex.StackTrace); + // } return false; } @@ -331,23 +310,24 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication /// private bool SetActivityMode_Active() { - try - { - if (genesisHead != null) - { - if (genesisHead.RfidComPortNr != 0 && - !genesisHead?.CommInterfaceBridgeComponent?.GciExternalInterface?.IsConnected == false) - BuildConnection(genesisHead); - - log.Debug("SetActivityMode_Active called for iHead: " + genesisHead.ToString()); - RadioService headService = new RadioService(genesisHead?.CommInterfaceBridgeComponent); - return headService.SetActivityMode_Active(genesisHead); - } - } - catch (Exception ex) - { - log.Error("SetActivityMode_Active() - Exception:" + ex.StackTrace); - } + + // try + // { + // if (genesisHead != null) + // { + // if (genesisHead.RfidComPortNr != 0 && + // !genesisHead?.CommInterfaceBridgeComponent?.GciExternalInterface?.IsConnected == false) + // BuildConnection(genesisHead); + // + // log.Debug("SetActivityMode_Active called for iHead: " + genesisHead.ToString()); + // RadioService headService = new RadioService(genesisHead?.CommInterfaceBridgeComponent); + // return headService.SetActivityMode_Active(genesisHead); + // } + // } + // catch (Exception ex) + // { + // log.Error("SetActivityMode_Active() - Exception:" + ex.StackTrace); + // } return false; } @@ -360,24 +340,24 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication /// private bool SetActivityMode_Idle() { - try - { - if (genesisHead != null) - { - if (genesisHead.RfidComPortNr != 0 && - !genesisHead?.CommInterfaceBridgeComponent?.GciExternalInterface?.IsConnected == false) - BuildConnection(genesisHead); - - log.Debug("SetActivityMode_Idle called for iHead: " + genesisHead.ToString()); - - RadioService headService = new RadioService(genesisHead?.CommInterfaceBridgeComponent); - return headService.SetActivityMode_Idle(genesisHead); - } - } - catch (Exception ex) - { - log.Error("SetActivityMode_Idle() - Exception:" + ex.StackTrace); - } + // try + // { + // if (genesisHead != null) + // { + // if (genesisHead.RfidComPortNr != 0 && + // !genesisHead?.CommInterfaceBridgeComponent?.GciExternalInterface?.IsConnected == false) + // BuildConnection(genesisHead); + // + // log.Debug("SetActivityMode_Idle called for iHead: " + genesisHead.ToString()); + // + // RadioService headService = new RadioService(genesisHead?.CommInterfaceBridgeComponent); + // return headService.SetActivityMode_Idle(genesisHead); + // } + // } + // catch (Exception ex) + // { + // log.Error("SetActivityMode_Idle() - Exception:" + ex.StackTrace); + // } return false; } @@ -405,34 +385,34 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication try { - if (genesisHead != null) - { - genesisHead.ConfigStruct = new ConfigStruct(); - - if (genesisHead.RfidComPortNr != 0 && - !genesisHead?.CommInterfaceBridgeComponent?.GciExternalInterface?.IsConnected == false) - BuildConnection(genesisHead); - - 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); - - if (ledState != DiagnosticLedState.StatusUnknown) // do set - { - genesisHead.ConfigStruct.OpthoStatusMode = headService.SetOptoStatusMode(genesisHead, ledState); - } - else - { - genesisHead.ConfigStruct.OpthoStatusMode = DiagnosticLedState.StatusUnknown; - } - - genesisHead.ConfigStruct.Version = headService.GetVersion(genesisHead); - - return true; - } - - else + // if (genesisHead != null) + // { + // genesisHead.ConfigStruct = new ConfigStruct(); + // + // if (genesisHead.RfidComPortNr != 0 && + // !genesisHead?.CommInterfaceBridgeComponent?.GciExternalInterface?.IsConnected == false) + // BuildConnection(genesisHead); + // + // 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); + // + // if (ledState != DiagnosticLedState.StatusUnknown) // do set + // { + // genesisHead.ConfigStruct.OpthoStatusMode = headService.SetOptoStatusMode(genesisHead, ledState); + // } + // else + // { + // genesisHead.ConfigStruct.OpthoStatusMode = DiagnosticLedState.StatusUnknown; + // } + // + // genesisHead.ConfigStruct.Version = headService.GetVersion(genesisHead); + // + // return true; + // } + // + // else { return false; } diff --git a/TBF/Rig/RegisterReaders/GenesisRegReader/communication/RadioService.cs b/TBF/Rig/RegisterReaders/GenesisRegReader/communication/RadioService.cs index bdc8f894f..a48093247 100644 --- a/TBF/Rig/RegisterReaders/GenesisRegReader/communication/RadioService.cs +++ b/TBF/Rig/RegisterReaders/GenesisRegReader/communication/RadioService.cs @@ -1,10 +1,11 @@ +using System; +using System.Threading.Tasks; +using GenesisCordonelInterface.API; 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; using TBF.Rig.TestMethods.iPerlCommunication.communication.C4.protocolCommons; -using TBF.Rig.TestMethods.iPerlCommunication.communication.Utils; namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication @@ -24,68 +25,144 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication log.Debug("RadioService created with GciBridge= " + genesisHeadCommInterfaceBridgeComponent + ""); } - public string ReadRequest_PCB(ref GenesisSmartReader iHead) + public async Task ReadRequest_PCBAsync(GenesisSmartReader iHead) { - if (_bridge?.GciExternalInterface?.IsConnected == false) + if (iHead?.CommInterfaceBridge == null) + return null; + + var connectTask = iHead.CommInterfaceBridge.ConnectAsync(iHead.GetSlotNr); + + // Wait either for ConnectAsync or timeout + if (await Task.WhenAny(connectTask, Task.Delay(TimeSpan.FromMinutes(1))) != connectTask) { - _bridge?.GciExternalInterface?.ConnectOneMeter(iHead.GetSlotNr); + // Timed out + return null; } - - //Request PCB Number - string pcbId = _bridge?.GciExternalInterface?.GetPcbId(iHead.GetSlotNr); + var result = await connectTask; + + if (result == null || !result.Success || !result.IsLoggedOn) + return null; + + string pcbId = result.PcbId; + if (!string.IsNullOrEmpty(pcbId)) { - if (iHead.ConfigStruct != null) // store mechanism - { + if (iHead.ConfigStruct != null) iHead.ConfigStruct.PCBNumberString = pcbId; - } + return pcbId; } + + return null; + } + + + public string ReadRequest_PCB(ref GenesisSmartReader iHead) + { + log.Debug("ReadRequest_PCB called for iHead: " + iHead.ToString()); + if (iHead?.CommInterfaceBridge == null) + return null; + + var connectTask = iHead.CommInterfaceBridge.ConnectAsync(iHead.GetSlotNr); + log.Debug("ReadRequest_PCB() - ConnectAsync created, Now waiting for result"); + + var completedTask = Task.WhenAny( + connectTask, + Task.Delay(TimeSpan.FromMinutes(1)) + ).GetAwaiter().GetResult(); + log.Debug("ReadRequest_PCB() - CompletedTask: " + completedTask); + + // Timeout happened + if (completedTask != connectTask) + { + log.Debug("ReadRequest_PCB() - Timeout happened"); + return null; + } + + var result = connectTask.GetAwaiter().GetResult(); + log.Debug("ReadRequest_PCB() - ConnectAsync completed"); + + if (result == null || !result.Success || !result.IsLoggedOn) + return null; + log.Debug("ReadRequest_PCB() - result: " + result); + + string pcbId = result.PcbId; + log.Debug("ReadRequest_PCB() - pcbId: " + pcbId); + + if (!string.IsNullOrEmpty(pcbId)) + { + if (iHead.ConfigStruct != null) + { + iHead.ConfigStruct.PCBNumberString = pcbId; + log.Debug("ReadRequest_PCB() - iHead.ConfigStruct.PCBNumberString: " + iHead.ConfigStruct.PCBNumberString); + } + + return pcbId; + } + + log.Debug("ReadRequest_PCB() - pcbId is empty"); return null; } public ProtocolStatuses GetActivityStatusMode(GenesisSmartReader iHead) { - if (_bridge?.GciExternalInterface?.IsConnected == false) + if (iHead?.CommInterfaceBridge == null) + return ProtocolStatuses.Unknown; + + var connectResult = iHead.CommInterfaceBridge + .ConnectAsync(iHead.GetSlotNr) + .GetAwaiter() + .GetResult(); + + if (connectResult == null || !connectResult.Success || !connectResult.IsLoggedOn) + return ProtocolStatuses.Unknown; + + var pcbResult = iHead.CommInterfaceBridge + .GetPcbIdAsync(iHead.GetSlotNr) + .GetAwaiter() + .GetResult(); + + if (pcbResult == null || !pcbResult.Success || string.IsNullOrWhiteSpace(pcbResult.PcbId)) + return ProtocolStatuses.Unknown; + + if (iHead.ConfigStruct != null) { - _bridge?.GciExternalInterface?.ConnectOneMeter(iHead.GetSlotNr); + iHead.ConfigStruct.PCBNumberString = pcbResult.PcbId; } - - //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; - } - - return ProtocolStatuses.Unknown; + return ProtocolStatuses.Active; } public DiagnosticLedState SetOptoStatusMode(GenesisSmartReader iHead, DiagnosticLedState opthoStatusMode) { - if (_bridge?.GciExternalInterface?.IsConnected == false) - { - _bridge?.GciExternalInterface?.ConnectOneMeter(iHead.GetSlotNr); - } + if (iHead?.CommInterfaceBridge == null) + return DiagnosticLedState.StatusUnknown; + + var connectResult = iHead.CommInterfaceBridge + .ConnectAsync(iHead.GetSlotNr) + .GetAwaiter() + .GetResult(); + + if (connectResult == null || !connectResult.Success || !connectResult.IsLoggedOn) + return DiagnosticLedState.StatusUnknown; //SetDiagnosticLEDState - string pcbId = _bridge?.GciExternalInterface?.GetPcbId(iHead.GetSlotNr); - if (!string.IsNullOrEmpty(pcbId)) + var pcbResult = iHead.CommInterfaceBridge + .GetPcbIdAsync(iHead.GetSlotNr) + .GetAwaiter() + .GetResult(); + + if (pcbResult == null || !pcbResult.Success || string.IsNullOrWhiteSpace(pcbResult.PcbId)) + return DiagnosticLedState.StatusUnknown; + + if (iHead.ConfigStruct != null) { - if (iHead.ConfigStruct != null) // store mechanism - { - iHead.ConfigStruct.PCBNumberString = pcbId; - } - return DiagnosticLedState.State1; + iHead.ConfigStruct.PCBNumberString = pcbResult.PcbId; } + return DiagnosticLedState.StatusUnknown; @@ -103,20 +180,25 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication public string GetVersion(GenesisSmartReader iHead) { - if (_bridge?.GciExternalInterface?.IsConnected == false) - { - _bridge?.GciExternalInterface?.ConnectOneMeter(iHead.GetSlotNr); - } + if (iHead?.CommInterfaceBridge == null) + return string.Empty; - string version = _bridge?.GciExternalInterface?.GetPcbId(iHead.GetSlotNr); - if (!string.IsNullOrEmpty(version)) - { - if (iHead.ConfigStruct != null) // store mechanism - { - iHead.ConfigStruct.Version = version; - } - return version; - } + var connectResult = iHead.CommInterfaceBridge + .ConnectAsync(iHead.GetSlotNr) + .GetAwaiter() + .GetResult(); + + if (connectResult == null || !connectResult.Success || !connectResult.IsLoggedOn) + return string.Empty; + + // if (!string.IsNullOrEmpty(version)) + // { + // if (iHead.ConfigStruct != null) // store mechanism + // { + // iHead.ConfigStruct.Version = version; + // } + // return version; + // } return string.Empty; } @@ -124,63 +206,81 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication public bool SetActivityMode_Active(GenesisSmartReader iHead) { - if (_bridge?.GciExternalInterface?.IsConnected == false) - { - _bridge?.GciExternalInterface?.ConnectOneMeter(iHead.GetSlotNr); - } + if (iHead?.CommInterfaceBridge == null) + return false; + + var connectResult = iHead.CommInterfaceBridge + .ConnectAsync(iHead.GetSlotNr) + .GetAwaiter() + .GetResult(); + + if (connectResult == null || !connectResult.Success || !connectResult.IsLoggedOn) + return false; //Set LED to state 4 - string version = _bridge?.GciExternalInterface?.GetPcbId(iHead.GetSlotNr); - if (!string.IsNullOrEmpty(version)) - { - if (iHead.ConfigStruct != null) // store mechanism - { - iHead.ConfigStruct.Version = version; - } - return true; - } + // string version = _bridge?.GciExternalInterface?.GetPcbId(iHead.GetSlotNr); + // if (!string.IsNullOrEmpty(version)) + // { + // if (iHead.ConfigStruct != null) // store mechanism + // { + // iHead.ConfigStruct.Version = version; + // } + // return true; + // } return false; } public bool SetActivityMode_Idle(GenesisSmartReader iHead) { - if (_bridge?.GciExternalInterface?.IsConnected == false) - { - _bridge?.GciExternalInterface?.ConnectOneMeter(iHead.GetSlotNr); - } + if (iHead?.CommInterfaceBridge == null) + return false; + + var connectResult = iHead.CommInterfaceBridge + .ConnectAsync(iHead.GetSlotNr) + .GetAwaiter() + .GetResult(); + + if (connectResult == null || !connectResult.Success || !connectResult.IsLoggedOn) + return false; //Set Activity State Idle - string version = _bridge?.GciExternalInterface?.GetPcbId(iHead.GetSlotNr); - if (!string.IsNullOrEmpty(version)) - { - if (iHead.ConfigStruct != null) // store mechanism - { - iHead.ConfigStruct.Version = version; - } - return true; - } + // string version = _bridge?.GciExternalInterface?.GetPcbId(iHead.GetSlotNr); + // if (!string.IsNullOrEmpty(version)) + // { + // if (iHead.ConfigStruct != null) // store mechanism + // { + // iHead.ConfigStruct.Version = version; + // } + // return true; + // } return false; } public bool SetOptTestMode(GenesisSmartReader iHead) { - if (_bridge?.GciExternalInterface?.IsConnected == false) - { - _bridge?.GciExternalInterface?.ConnectOneMeter(iHead.GetSlotNr); - } + if (iHead?.CommInterfaceBridge == null) + return false; + + var connectResult = iHead.CommInterfaceBridge + .ConnectAsync(iHead.GetSlotNr) + .GetAwaiter() + .GetResult(); + + if (connectResult == null || !connectResult.Success || !connectResult.IsLoggedOn) + return false; //Set LED to state 4 - string version = _bridge?.GciExternalInterface?.GetPcbId(iHead.GetSlotNr); - if (!string.IsNullOrEmpty(version)) - { - if (iHead.ConfigStruct != null) // store mechanism - { - iHead.ConfigStruct.Version = version; - } - return true; - } + // string version = _bridge?.GciExternalInterface?.GetPcbId(iHead.GetSlotNr); + // if (!string.IsNullOrEmpty(version)) + // { + // if (iHead.ConfigStruct != null) // store mechanism + // { + // iHead.ConfigStruct.Version = version; + // } + // return true; + // } return false; @@ -193,41 +293,53 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication /// public bool SetOptActiveMode(GenesisSmartReader iHead) { - if (_bridge?.GciExternalInterface?.IsConnected == false) - { - _bridge?.GciExternalInterface?.ConnectOneMeter(iHead.GetSlotNr); - } + if (iHead?.CommInterfaceBridge == null) + return false; + + var connectResult = iHead.CommInterfaceBridge + .ConnectAsync(iHead.GetSlotNr) + .GetAwaiter() + .GetResult(); + + if (connectResult == null || !connectResult.Success || !connectResult.IsLoggedOn) + return false; //Set LED to state 1 - string version = _bridge?.GciExternalInterface?.GetPcbId(iHead.GetSlotNr); - if (!string.IsNullOrEmpty(version)) - { - if (iHead.ConfigStruct != null) // store mechanism - { - iHead.ConfigStruct.Version = version; - } - return true; - } + // string version = _bridge?.GciExternalInterface?.GetPcbId(iHead.GetSlotNr); + // if (!string.IsNullOrEmpty(version)) + // { + // if (iHead.ConfigStruct != null) // store mechanism + // { + // iHead.ConfigStruct.Version = version; + // } + // return true; + // } return false; } public string GetUnit(GenesisSmartReader iperlHead) { - if (_bridge?.GciExternalInterface?.IsConnected == false) - { - _bridge?.GciExternalInterface?.ConnectOneMeter(iperlHead.GetSlotNr); - } + if (iperlHead?.CommInterfaceBridge == null) + return string.Empty; - string version = _bridge?.GciExternalInterface?.GetPcbId(iperlHead.GetSlotNr); - if (!string.IsNullOrEmpty(version)) - { - if (iperlHead.ConfigStruct != null) // store mechanism - { - iperlHead.ConfigStruct.Version = version; - } - return version; - } + var connectResult = iperlHead.CommInterfaceBridge + .ConnectAsync(iperlHead.GetSlotNr) + .GetAwaiter() + .GetResult(); + + if (connectResult == null || !connectResult.Success || !connectResult.IsLoggedOn) + return string.Empty; + + // string version = _bridge?.GciExternalInterface?.GetPcbId(iperlHead.GetSlotNr); + // if (!string.IsNullOrEmpty(version)) + // { + // if (iperlHead.ConfigStruct != null) // store mechanism + // { + // iperlHead.ConfigStruct.Version = version; + // } + // return version; + // } return string.Empty; } diff --git a/TBF/Rig/RegisterReaders/GenesisRegReader/implementations/GenesisImplHeadTestCtrl.cs b/TBF/Rig/RegisterReaders/GenesisRegReader/implementations/GenesisImplHeadTestCtrl.cs index ef40809f4..a586c95a2 100644 --- a/TBF/Rig/RegisterReaders/GenesisRegReader/implementations/GenesisImplHeadTestCtrl.cs +++ b/TBF/Rig/RegisterReaders/GenesisRegReader/implementations/GenesisImplHeadTestCtrl.cs @@ -5,6 +5,7 @@ using System.Threading; using System.Web.UI.WebControls; using System.Windows.Forms; using Common; +using log4net; using TBF.Rig.Generic; using TBF.Rig.RegisterReaders.iPerlReaderUNI.common; using TBF.Rig.Uni.SharedDialogs.SmartMetersCommunication.common; @@ -13,6 +14,9 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.implementations { public class GenesisImplHeadTestCtrl : IUniHeadTestCtrl { + private static readonly ILog log = LogManager.GetLogger(typeof(GenesisSmartReader)); + private static readonly ILog logStream = LogManager.GetLogger("StreamData"); + Thread optoThread; //GenesisSmartReader _genesiHead; @@ -89,6 +93,8 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.implementations { a.RfidOutputListBox.Items.Clear(); + log.Debug($"CommandTestButtonClick called: {a?.RfidCommandComboBox?.SelectedValue}"); + using (Tools.LogChecker logChecker = new Tools.LogChecker("RfidData", log4net.Core.Level.Debug)) { ListItem rfidListItem = new ListItem(); diff --git a/TBF/Rig/RegisterReaders/GenesisRegReader/implementations/GenesisSmartReader.cs b/TBF/Rig/RegisterReaders/GenesisRegReader/implementations/GenesisSmartReader.cs index 2c64e5abb..c93461bb1 100644 --- a/TBF/Rig/RegisterReaders/GenesisRegReader/implementations/GenesisSmartReader.cs +++ b/TBF/Rig/RegisterReaders/GenesisRegReader/implementations/GenesisSmartReader.cs @@ -116,28 +116,21 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.implementations public string CommInterface => genesisHeadCfg?.CommunicationInterfaceBridge ?? default; - public TBF.Rig.BridgeComponents.GciBridge.Factory CommInterfaceBridge + public TBF.Rig.BridgeComponents.GciBridge.GciBridge CommInterfaceBridge { get { if (!string.IsNullOrEmpty((genesisHeadCfg?.CommunicationInterfaceBridge))) { IComponent findComponent = TbfComponents.FindComponent(genesisHeadCfg?.CommunicationInterfaceBridge); - BridgeComponents.GciBridge.Factory component = findComponent as TBF.Rig.BridgeComponents.GciBridge.Factory; + TBF.Rig.BridgeComponents.GciBridge.GciBridge component = findComponent as TBF.Rig.BridgeComponents.GciBridge.GciBridge; return component; } return null; } } - - public TBF.Rig.BridgeComponents.GciBridge.GciBridge CommInterfaceBridgeComponent - { - get - { - return CommInterfaceBridge.DummyComponent() as TBF.Rig.BridgeComponents.GciBridge.GciBridge; - } - } + public bool EnableShowChanels => genesisHeadCfg?.EnableShowChanels ?? false; @@ -3109,9 +3102,9 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.implementations { log.Debug($"Try get ReadSerialNr! COM: {this.RfidComPortNr}"); - if (OptoHeadTest.ReadSerialNr()) + SerialNr = OptoHeadTest.ReadRequest_PCB(); + if (string.IsNullOrEmpty(SerialNr)) { - SerialNr = this.ConfigStruct.PCBNumberString; log.Debug("ReadSerialNr successful"); } diff --git a/TBF/Rig/StateMachine.cs b/TBF/Rig/StateMachine.cs index dab3768ec..685b42a8c 100644 --- a/TBF/Rig/StateMachine.cs +++ b/TBF/Rig/StateMachine.cs @@ -309,6 +309,7 @@ namespace TBF.Rig BuiltIn.Valve.Valve plainValve = (cmpnt as BuiltIn.Valve.Valve); if ((plainValve != null) && plainValve.Inverted) valvesToInvert |= plainValve.Mask; + log.Debug( string.Format( "InitializeBoardEtc() ... {0} {1}", cmpnt.Name, cmpnt.ClassName ) ); cmpnt.StartChangeHandler(); /// Start handling parameter change events } diff --git a/TBF/TBF.csproj b/TBF/TBF.csproj index 652d0f750..4c721f8f7 100644 --- a/TBF/TBF.csproj +++ b/TBF/TBF.csproj @@ -1795,20 +1795,6 @@ TestMethodCfgCtrl.cs - - - - - - - - UserControl - - - - - - @@ -3767,7 +3753,6 @@ TestMethodCfgCtrl.cs - TestMethodCfgCtrl.cs