Refactor RadioService to improve asynchronous handling, replace legacy code with CommInterfaceBridge, and standardize methods for GenesisHead communication. Remove unused GenesisCommunication components and increment assembly version to 3.9.3062.1.

This commit is contained in:
Michal Buzik 2026-04-28 16:26:26 +02:00
parent 5482d4ac96
commit 33a5e479a9
10 changed files with 434 additions and 357 deletions

View File

@ -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")]

View File

@ -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()

View File

@ -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();
}
}
}

View File

@ -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)

View File

@ -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; }
/// <summary>
///
/// </summary>
/// <param name="slotNr"> must be unique to one connection</param>
/// <param name="ComportNr"></param>
/// <param name="OptoComPortNr"></param>
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<bool> 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 "";
}
/// <summary>
@ -168,6 +143,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
/// <returns></returns>
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
/// <returns></returns>
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";
}
/// <summary>
/// Set Optical -> Active mode
@ -304,21 +283,21 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
/// <exception cref="Exception"></exception>
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
/// <exception cref="Exception"></exception>
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
/// <exception cref="Exception"></exception>
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;
}

View File

@ -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<string> 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
/// <returns></returns>
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;
}

View File

@ -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<OptoReceivedEventArgs>
{
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();

View File

@ -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");
}

View File

@ -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
}

View File

@ -1795,20 +1795,6 @@
<DependentUpon>TestMethodCfgCtrl.cs</DependentUpon>
</Compile>
<Compile Include="Rig\TestMethods\FlyingStartMassCollection\Single\TestParams.cs" />
<Compile Include="Rig\TestMethods\GenesisCommunication\GenesisHead\CalibrationStruct.cs" />
<Compile Include="Rig\TestMethods\GenesisCommunication\GenesisHead\ConfigStruct.cs" />
<Compile Include="Rig\TestMethods\GenesisCommunication\GenesisHead\Enums.cs" />
<Compile Include="Rig\TestMethods\GenesisCommunication\GenesisHead\Factory.cs" />
<Compile Include="Rig\TestMethods\GenesisCommunication\GenesisHead\GenesisHead.cs" />
<Compile Include="Rig\TestMethods\GenesisCommunication\GenesisHead\GenesisHeadCfg.cs" />
<Compile Include="Rig\TestMethods\GenesisCommunication\GenesisHead\GenesisHeadCfgCtrl.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Rig\TestMethods\GenesisCommunication\GenesisHead\GenesisHeadCfgCtrl.designer.cs" />
<Compile Include="Rig\TestMethods\GenesisCommunication\GenesisHead\OptoReceivedEventArgs.cs" />
<Compile Include="Rig\TestMethods\GenesisCommunication\GenesisHead\OptoTelegramRaw.cs" />
<Compile Include="Rig\TestMethods\GenesisCommunication\GenesisHead\ProcParams.cs" />
<Compile Include="Rig\TestMethods\GenesisCommunication\GenesisHead\StatusStruct.cs" />
<Compile Include="Rig\TestMethods\GenesisCommunication\Factory.cs" />
<Compile Include="Rig\TestMethods\GenesisCommunication\GenesisCommunicationSeq.cs" />
<Compile Include="Rig\TestMethods\GenesisCommunication\iPerlCommunicationParams.cs" />
@ -3767,7 +3753,6 @@
<EmbeddedResource Include="Rig\TestMethods\FlyingStartTankCollection\Single\TestMethodCfgCtrl.resx">
<DependentUpon>TestMethodCfgCtrl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Rig\TestMethods\GenesisCommunication\GenesisHead\GenesisHeadCfgCtrl.resx" />
<EmbeddedResource Include="Rig\TestMethods\GenesisCommunication\TestMethodCfgCtrl.resx">
<DependentUpon>TestMethodCfgCtrl.cs</DependentUpon>
</EmbeddedResource>