From f1d32a39ba713a700c50e165f50d33f5c3f4881e Mon Sep 17 00:00:00 2001 From: Michal Buzik Date: Thu, 13 Nov 2025 15:58:09 +0100 Subject: [PATCH] ver 3.9.2149.2 ReadPulses added in Run() Update AssemblyVersion to 3.9.2149.2 and enhance PoseidonReader with new timing and task-tracking functionality. --- TBF/Properties/AssemblyInfo.cs | 4 ++-- .../PoseidonCmdStartStop/CliRunner.cs | 8 ++++++++ .../PoseidonCmdStartStop/PoseidonReader.cs | 15 +++++++++++++++ 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/TBF/Properties/AssemblyInfo.cs b/TBF/Properties/AssemblyInfo.cs index ae2e61fb1..caedd1774 100644 --- a/TBF/Properties/AssemblyInfo.cs +++ b/TBF/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ using System.Runtime.InteropServices; // Build Number // Revision // -[assembly: AssemblyVersion("3.9.2149.1")] -[assembly: AssemblyFileVersion("3.9.2149.1")] +[assembly: AssemblyVersion("3.9.2149.2")] +[assembly: AssemblyFileVersion("3.9.2149.2")] diff --git a/TBF/Rig/RegisterReaders/PoseidonCmdStartStop/CliRunner.cs b/TBF/Rig/RegisterReaders/PoseidonCmdStartStop/CliRunner.cs index e8552623c..045dbeac8 100644 --- a/TBF/Rig/RegisterReaders/PoseidonCmdStartStop/CliRunner.cs +++ b/TBF/Rig/RegisterReaders/PoseidonCmdStartStop/CliRunner.cs @@ -17,6 +17,7 @@ namespace TBF.Rig.RegisterReaders.PoseidonCmdStartStop private readonly ILog log; private List taskPool = new List(); private long startTime; + private long incommingTime; public List TaskPool { get { return taskPool; } } public void AddTask(Task task) { taskPool.Add(task); } @@ -39,6 +40,11 @@ namespace TBF.Rig.RegisterReaders.PoseidonCmdStartStop get => startTime; } + public long IncommingTime + { + get => incommingTime; + } + public bool TimeOutReceived(long timeout) { return (DateTime.Now.Ticks - startTime) > timeout; @@ -121,6 +127,8 @@ namespace TBF.Rig.RegisterReaders.PoseidonCmdStartStop throw; } + //comming answer from serial port - good place for time stamp + incommingTime = DateTime.Now.Ticks; string allOutput = (stdOutTask.Result ?? "") + (stdErrTask.Result ?? ""); log?.Debug(allOutput); return allOutput; diff --git a/TBF/Rig/RegisterReaders/PoseidonCmdStartStop/PoseidonReader.cs b/TBF/Rig/RegisterReaders/PoseidonCmdStartStop/PoseidonReader.cs index 0c6fe9e67..09197e320 100644 --- a/TBF/Rig/RegisterReaders/PoseidonCmdStartStop/PoseidonReader.cs +++ b/TBF/Rig/RegisterReaders/PoseidonCmdStartStop/PoseidonReader.cs @@ -147,6 +147,8 @@ namespace TBF.Rig.RegisterReaders.PoseidonCmdStartStop int wmRefPulses; double wmTestTime; private string wmSerialNr; + + int timeFromStart; /// [s] Time from test start to determine when the test start sample should be taken public IOperation ReadDatastreamOp() @@ -328,15 +330,23 @@ namespace TBF.Rig.RegisterReaders.PoseidonCmdStartStop /// private long startTimeInMilis = -1, fullTimeInMilis = -1; private static long SafetyTimeOut = 30 * 1000; + private long incommingTime = -1; /// 30 seconds public long DeltaTime { get{return fullTimeInMilis;}} + public long IncommingTime { get{return incommingTime;}} /// Run this operation /// eventDone public Event Run() { + lock (this) + { + timeFromStart += StateMachine.Period; + ReadPulses(); + } + if (_currentOp == CurrentPoseidonOp.SendStartDataStream) { CliRunner.AddSendAsync(serialPort, SerialPortData.EMeterArg.AllParams); @@ -353,6 +363,8 @@ namespace TBF.Rig.RegisterReaders.PoseidonCmdStartStop } else if (_currentOp == CurrentPoseidonOp.SendStartDataStream_Done) { + var first = CliRunner.TaskPool.FindLast(t => t is Task); + _currentOp = CurrentPoseidonOp.Done; return Event.Done; } @@ -360,6 +372,7 @@ namespace TBF.Rig.RegisterReaders.PoseidonCmdStartStop || _currentOp == CurrentPoseidonOp.ReadDataStream_End) { startTimeInMilis = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond; + incommingTime = -1; _isReadingStart = (_currentOp == CurrentPoseidonOp.ReadDataStream_Start); CliRunner.AddRunAndCaptureJsonAsync(serialPort, SerialPortData.EMeterArg.AllParams); _currentOp = CurrentPoseidonOp.ReadDatastream_Running; @@ -370,6 +383,8 @@ namespace TBF.Rig.RegisterReaders.PoseidonCmdStartStop || CliRunner.TimeOutReceived(SafetyTimeOut)) { _currentOp = CurrentPoseidonOp.ReadDatastream_Done; + //set time stamp - end of reading + incommingTime = CliRunner.IncommingTime; } return Event.Busy; }