Increment assembly version to 3.9.3128.0, enhance thread handling for iPerlCommunicationForm with improved delay logic and UI checks, and replace ReadRegisterAsync with ReadRegisterWithRetryAsync for more robust Genesis register operations.

This commit is contained in:
Michal Buzik 2026-06-04 08:16:13 +02:00
parent c991d530d5
commit 4173512ecc
4 changed files with 31 additions and 13 deletions

View File

@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// Build Number
// Revision
//
[assembly: AssemblyVersion("3.9.3126.0")]
[assembly: AssemblyFileVersion("3.9.3126.0")]
[assembly: AssemblyVersion("3.9.3128.0")]
[assembly: AssemblyFileVersion("3.9.3128.0")]

View File

@ -2192,16 +2192,16 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
UInt16 valueTrigerIdle = 0;
log.Debug( $"CheckMeterPrepare_Async( Slot: {genesisSmartReader.GetSlotNr}) - Start - Will Set TriggerIdle: {valueTrigerIdle}");
var TriggerIdleAsyncResult = await gciBridge.ReadRegisterAsync(genesisSmartReader.GetSlotNr, RadioService.TriggerIdle);
var TriggerIdleAsyncResult = await gciBridge.ReadRegisterWithRetryAsync(genesisSmartReader.GetSlotNr, RadioService.TriggerIdle);
if (TriggerIdleAsyncResult == null || !TriggerIdleAsyncResult.Success)
{
log.Error( $"CheckMeterPrepare_Async( Slot: {genesisSmartReader.GetSlotNr}) - CheckMeterPrepare failed. Result: {TriggerIdleAsyncResult}");
return "Failed to disable Led Mode";
//return "Failed to disable Led Mode";
}
try
{
UInt32 int32 = ParseRawHexToUInt32(TriggerIdleAsyncResult.RawHex);
UInt32 int32 = ParseRawHexToUInt32(TriggerIdleAsyncResult?.Result?.RawHex);
if (int32 == 0)
{
log.Debug("Already set ");
@ -2217,7 +2217,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
if (CalFactor2AsyncResult == null || !CalFactor2AsyncResult.Success)
{
log.Error( $"CheckMeterPrepare_Async( Slot: {genesisSmartReader.GetSlotNr}) - CalFactor2AsyncResult failed. Result: {CalFactor2AsyncResult}");
return "Failed to disable Led Mode";
return $"Failed to set register {RadioService.TriggerIdle} to {valueTrigerIdle}";
}

View File

@ -421,8 +421,8 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
//Get Activity Status
GenesisCordonelInterface.API.PublicModels.RegisterReadResult registerReadResult =
await _bridge.ReadRegisterAsync(iHead.GetSlotNr,LedMode, token);
var registerReadResult =
await _bridge.ReadRegisterWithRetryAsync(iHead.GetSlotNr,LedMode, token);
if (registerReadResult == null || !registerReadResult.Success)
{
@ -431,7 +431,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
log.Debug($"GetActivityStatusMode() Read Register OK Response: {registerReadResult}");
try
{
byte[] bytes = HexFormatter.HexStringToByteArray(registerReadResult.RawHex);
byte[] bytes = HexFormatter.HexStringToByteArray(registerReadResult.Result.RawHex);
//Convert byte array to int
if (bytes == null || bytes.Length < 4)
{

View File

@ -1751,10 +1751,28 @@ namespace TBF.Rig.TestMethods.iPerlCommunication
}
else
{
log.Debug("Wait for finish workerThreads 2seconds");
/// Wait until all threads are finished
workerThreads[data.ThreadId].Join(2000);
NormalClose();
log.Debug("Wait for finish workerThreads 4 seconds");
Thread lastThread = workerThreads[data.ThreadId];
Task.Run(() =>
{
lastThread.Join(2000);
if (!CanUseUi()) return;
BeginInvoke(new Action(async () =>
{
if (!CanUseUi()) return;
// nechaj výsledky/chyby čitateľné 4 sekundy
await Task.Delay(4000);
if (!CanUseUi() || forcedClose) return;
NormalClose();
}));
});
}
}
catch (Exception e)