Compare commits

...
17 changed files with 195 additions and 8 deletions
+18
View File
@@ -5153,6 +5153,15 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Save Communication.
/// </summary>
internal static string SaveCommunication {
get {
return ResourceManager.GetString("SaveCommunication", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Saving all results.
/// </summary>
@@ -5549,6 +5558,15 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Show Dialog.
/// </summary>
internal static string ShowDialog {
get {
return ResourceManager.GetString("ShowDialog", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Shut down computer after exiting Test Bench Framework.
/// </summary>
+3
View File
@@ -1755,4 +1755,7 @@
<data name="Project_number" xml:space="preserve">
<value>Projtové číslo</value>
</data>
<data name="ShowDialog" xml:space="preserve">
<value>Zobraz Okno</value>
</data>
</root>
+3
View File
@@ -2220,4 +2220,7 @@
<data name="Project_number" xml:space="preserve">
<value>Projektnummer</value>
</data>
<data name="ShowDialog" xml:space="preserve">
<value>Dialog anzeigen</value>
</data>
</root>
+3
View File
@@ -123,4 +123,7 @@
<data name="Project_number" xml:space="preserve">
<value>Número de proyecto</value>
</data>
<data name="ShowDialog" xml:space="preserve">
<value>Mostrar diálogo</value>
</data>
</root>
+3
View File
@@ -2019,4 +2019,7 @@
<data name="Project_number" xml:space="preserve">
<value>Numéro de projet</value>
</data>
<data name="ShowDialog" xml:space="preserve">
<value>Afficher la boîte de dialogue</value>
</data>
</root>
+3
View File
@@ -1788,4 +1788,7 @@
<data name="Project_number" xml:space="preserve">
<value>Numero del progetto</value>
</data>
<data name="ShowDialog" xml:space="preserve">
<value>Mostra dialogo</value>
</data>
</root>
+7
View File
@@ -2467,4 +2467,11 @@
<data name="Voltage" xml:space="preserve">
<value>Voltage</value>
</data>
<data name="ShowDialog" xml:space="preserve">
<value>Show Dialog</value>
</data>
<data name="SaveCommunication" xml:space="preserve">
<value>Save Communication</value>
</data>
</root>
+3
View File
@@ -840,4 +840,7 @@
<data name="Project_number" xml:space="preserve">
<value>Numărul proiectului</value>
</data>
<data name="SaveCommunication" xml:space="preserve">
<value>Save Communication</value>
</data>
</root>
+6
View File
@@ -244,4 +244,10 @@
<data name="Project_number" xml:space="preserve">
<value>Číslo projektu</value>
</data>
<data name="ShowDialog" xml:space="preserve">
<value>Zobraz dialóg</value>
</data>
<data name="SaveCommunication" xml:space="preserve">
<value>Ulož komunikáciu</value>
</data>
</root>
+14 -1
View File
@@ -292,7 +292,17 @@ namespace TBF.Rig.DataEntry.PoseidonCmd
currentOp = CurrentOp.None;
}
public bool ShowForm { get; set; }
public bool ShowForm
{
get { return entryFormCfg == null ? false : entryFormCfg.ShowDialog; }
set {} // only for read - svia dilalog
}
public bool CliLogging
{
get { return entryFormCfg == null ? false : entryFormCfg.SaveCommunication;}
}
public bool ReadAndSetDataToMeters()
{
bool bOperationSuccess = false;
@@ -307,6 +317,8 @@ namespace TBF.Rig.DataEntry.PoseidonCmd
if (iRegReader is PoseidonReader)
{
PoseidonReader poseidonReader = (iRegReader as PoseidonReader);
poseidonReader.SetCliLogging(CliLogging);
if (poseidonReader.CurrentOp == PoseidonReader.CurrentPoseidonOp.SendStartDataStream_Done
|| poseidonReader.CurrentOp == PoseidonReader.CurrentPoseidonOp.SendStartDataStream_Runing)
{
@@ -348,6 +360,7 @@ namespace TBF.Rig.DataEntry.PoseidonCmd
PoseidonReader poseidonReader = (iRegReader as PoseidonReader);
if(poseidonReader == null)
continue;
poseidonReader.SetCliLogging(CliLogging);
if (!(poseidonReader.CurrentOp == PoseidonReader.CurrentPoseidonOp.ReadDatastream_Done
|| poseidonReader.CurrentOp == PoseidonReader.CurrentPoseidonOp.ReadDatastream_Running))
{
+41 -1
View File
@@ -68,6 +68,8 @@ namespace TBF.Rig.DataEntry.PoseidonCmd
///
public Direction Direction;
public Orders Orders;
public bool ShowDialog;
public bool SaveCommunication;
/// Private parameterless constructor invoked by all other (public) constructors
EntryFormCfg() { }
@@ -87,12 +89,16 @@ namespace TBF.Rig.DataEntry.PoseidonCmd
{
Direction = Direction.Forward_RL;
Orders = Orders.Arbitrary;
ShowDialog = false;
SaveCommunication = false;
}
string[] paramNames = new string[]
{
Strings.Direction,
Strings.Orders,
Strings.ShowDialog,
Strings.SaveCommunication,
};
public string ParamName(int i) { return paramNames[i]; }
public int ParamsCount() { return paramNames.Length; }
@@ -108,6 +114,14 @@ namespace TBF.Rig.DataEntry.PoseidonCmd
case 1:
for (Orders o = 0; o < Orders.Count; o++) list.Add(o.ToDescription());
return list;
case 2:
list.Add("True");
list.Add("False");
return list;
case 3:
list.Add("True");
list.Add("False");
return list;
default:
return null;
}
@@ -120,8 +134,10 @@ namespace TBF.Rig.DataEntry.PoseidonCmd
{
case 0: return Direction.ToDescription();
case 1: return Orders.ToDescription();
case 2: return ShowDialog.ToString();
case 3: return SaveCommunication.ToString();
default:
return string.Format("Name={0}, Direction={1}, Orders={2}", Name, Direction, Orders);
return string.Format("Name={0}, Direction={1}, Orders={2}, ShowDialog={3}, StoreCommunication={4}", Name, Direction, Orders, ShowDialog, SaveCommunication);
}
}
@@ -146,6 +162,24 @@ namespace TBF.Rig.DataEntry.PoseidonCmd
return CfgUpdateFlags.RestartRqrd;
}
break;
case 2:
{
bool lastSetting = ShowDialog;
if (str == "True") ShowDialog = true;
else ShowDialog = false;
if (lastSetting != ShowDialog)
return CfgUpdateFlags.RestartRqrd;
}
break;
case 3:
{
bool lastSetting = SaveCommunication;
if (str == "True") SaveCommunication = true;
else SaveCommunication = false;
if (lastSetting != SaveCommunication)
return CfgUpdateFlags.RestartRqrd;
}
break;
}
return CfgUpdateFlags.None;
@@ -161,6 +195,10 @@ namespace TBF.Rig.DataEntry.PoseidonCmd
case 1:
if (ParamValues(i).Contains(str)) return true;
break;
case 2:
case 3:
if (str == "True" || str == "False") return true;
break;
default:
message = "Invalid index";
return false;
@@ -174,6 +212,8 @@ namespace TBF.Rig.DataEntry.PoseidonCmd
{
prms.Direction = this.Direction;
prms.Orders = this.Orders;
prms.ShowDialog = this.ShowDialog;
prms.SaveCommunication = this.SaveCommunication;
}
public IParamsProvider Clone()
@@ -1,11 +1,13 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using log4net;
using log4net.Config;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using SharedDatabase;
@@ -14,7 +16,8 @@ namespace TBF.Rig.RegisterReaders.PoseidonCmdStartStop
{
public class CliRunner
{
static readonly ILog log = LogManager.GetLogger(typeof(CliRunner));
//static readonly ILog log = LogManager.GetLogger(typeof(CliRunner));
private readonly ILog log;
private List<Task> taskPool = new List<Task>();
private long startTime;
@@ -44,9 +47,16 @@ namespace TBF.Rig.RegisterReaders.PoseidonCmdStartStop
return (DateTime.Now.Ticks - startTime) > timeout;
}
public CliRunner()
public CliRunner(bool isCliLogging)
{
startTime = DateTime.Now.Ticks;
if (isCliLogging)
{
log = new ScopedLoggerFactory().CreateLogger<CliRunner>(
@"C:\TBF\Logs\CliRunner.txt"
);
}
}
/// <summary>
@@ -96,7 +106,7 @@ namespace TBF.Rig.RegisterReaders.PoseidonCmdStartStop
// Now all outputs are available
string allOutput = sb.ToString();
log?.Debug(allOutput);
return allOutput;
}
@@ -135,6 +145,7 @@ namespace TBF.Rig.RegisterReaders.PoseidonCmdStartStop
// Now sb contains all output text
string allOutput = sb.ToString();
log?.Debug(allOutput);
// Extract JSON part
string json = ExtractJson(allOutput);
@@ -36,7 +36,9 @@ namespace TBF.Rig.RegisterReaders.PoseidonCmdStartStop
{
get
{
return (_cliRunner != null ? _cliRunner : (_cliRunner = new CliRunner()));
return (_cliRunner != null ?
_cliRunner :
(_cliRunner = new CliRunner(GetCliLogging())));
}
}
@@ -56,6 +58,7 @@ namespace TBF.Rig.RegisterReaders.PoseidonCmdStartStop
CurrentPoseidonOp _currentOp;
private bool _isReadingStart = true;
private bool? _isCliLogging;
public CurrentPoseidonOp CurrentOp
{
@@ -66,6 +69,16 @@ namespace TBF.Rig.RegisterReaders.PoseidonCmdStartStop
{
_currentOp = operation ;
}
public bool GetCliLogging()
{
return _isCliLogging.HasValue ? _isCliLogging.Value : true;
}
public void SetCliLogging(bool isCliLogging)
{
_isCliLogging = isCliLogging;
}
public int Position
{
@@ -310,6 +323,10 @@ namespace TBF.Rig.RegisterReaders.PoseidonCmdStartStop
{
}
/// <summary>
/// for debug purposes what time will consume answer
/// </summary>
private long startTimeInMilis, fullTimeInMilis;
private static long SafetyTimeOut = 30 * 1000; /// 30 seconds
/// <summary>Run this operation</summary>
@@ -338,6 +355,7 @@ namespace TBF.Rig.RegisterReaders.PoseidonCmdStartStop
else if (_currentOp == CurrentPoseidonOp.ReadDataStream_Start
|| _currentOp == CurrentPoseidonOp.ReadDataStream_End)
{
startTimeInMilis = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;
_isReadingStart = (_currentOp == CurrentPoseidonOp.ReadDataStream_Start);
CliRunner.AddRunAndCaptureJsonAsync<JsonDataFromPoseidon>(serialPort, SerialPortData.EMeterArg.AllParams);
_currentOp = CurrentPoseidonOp.ReadDatastream_Running;
@@ -353,6 +371,8 @@ namespace TBF.Rig.RegisterReaders.PoseidonCmdStartStop
}
else if (_currentOp == CurrentPoseidonOp.ReadDatastream_Done)
{
fullTimeInMilis = (DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond) - startTimeInMilis;
log.Debug($"PoseidonReader.Run() Name= {Cfg.Name} fullTimeInMilis = {fullTimeInMilis} ");
JsonDataFromPoseidon data = null;
var first = CliRunner.TaskPool.FindLast(t => t is Task<JsonDataFromPoseidon>);
if (first != null && first is Task<JsonDataFromPoseidon>)
@@ -446,6 +466,7 @@ namespace TBF.Rig.RegisterReaders.PoseidonCmdStartStop
else
{
//TODO BUMI start session - CMD send data to Poseidon
CliRunner.AddSendAsync(serialPort, SerialPortData.EMeterArg.DeviceId);
CliRunner.WaitAll();
foreach (Task task in CliRunner.TaskPool)
@@ -0,0 +1,38 @@
using log4net;
using log4net.Appender;
using log4net.Core;
using log4net.Layout;
using log4net.Repository.Hierarchy;
namespace TBF.Rig.RegisterReaders.PoseidonCmdStartStop
{
public class ScopedLoggerFactory
{
public ILog CreateLogger<T>(string logFile, Level level = null)
{
var layout = new PatternLayout("%date %-5level %logger - %message%newline");
layout.ActivateOptions();
var appender = new RollingFileAppender
{
Name = typeof(T).Name + "Appender",
File = logFile,
AppendToFile = true,
RollingStyle = RollingFileAppender.RollingMode.Date,
LockingModel = new FileAppender.MinimalLock(),
Layout = layout
};
appender.ActivateOptions();
var hierarchy = (Hierarchy)LogManager.GetRepository();
var logger = (log4net.Repository.Hierarchy.Logger)hierarchy.GetLogger(typeof(T).FullName);
logger.RemoveAllAppenders(); // isolate this logger
logger.AddAppender(appender);
logger.Level = level ?? Level.Debug;
logger.Hierarchy.Configured = true;
return LogManager.GetLogger(typeof(T));
}
}
}
@@ -469,7 +469,8 @@ namespace TBF.Rig.TestMethods.StandingStart
(dataEntryCmpnt as GenericDevices.IDataEntryForCamera).StartImages = startImages;
}
long readStartTime = StateMachine.Time;
Bridge.OnActivity(this, Strings.Enter_water_meter_data);
State.Create(string.Format("{0}({1}) : Entering begin-state", test.Method, test.Name))
.AddOperation(checkUiOp)
@@ -482,6 +483,11 @@ namespace TBF.Rig.TestMethods.StandingStart
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
while (!e.Contains(Event.ModelessFormClosed));
long readEndTime = StateMachine.Time;
var elapsed = TimeSpan.FromTicks((readEndTime - readStartTime));
log.Debug($"Read poseidon Begin operation (with dialog) - took:{elapsed.TotalSeconds} => {elapsed:mm\\:ss}");
if (heatMetersTestParams != null)
{
@@ -703,7 +709,8 @@ namespace TBF.Rig.TestMethods.StandingStart
(dataEntryCmpnt as GenericDevices.IDataEntryForCamera).EndImages = endImages;
}
long readStartTime = DateTime.Now.Ticks;
Bridge.OnActivity(this, Strings.Enter_water_meter_data);
State state = State.Create(string.Format("{0}({1}) : Entering the end-state", test.Method, test.Name));
if (heatMetersTestParams != null && dataEntryCmpnt is GenericDevices.IHasHeatMtrStatesForm)
@@ -726,6 +733,9 @@ namespace TBF.Rig.TestMethods.StandingStart
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
while (!e.Contains(Event.ModelessFormClosed));
long readEndTime = DateTime.Now.Ticks;
var elapsed = TimeSpan.FromTicks((readEndTime - readStartTime));
log.Debug($"Read poseidon End operation (with dialog) - took:{elapsed.TotalSeconds} => {elapsed:mm\\:ss}");
if (heatMetersTestParams != null)
@@ -555,6 +555,7 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection
Bridge.OnActivity(this, Strings.Enter_water_meter_data);
long readStartTime = StateMachine.Time;
State.Create(string.Format("{0}({1}) : Enter start states of water meters", test.Method, test.Name))
.AddOperation(checkUiOp)
.AddOperations(readTempPressOps)
@@ -568,6 +569,9 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
while (!e.Contains(Event.ModelessFormClosed));
long readEndTime = StateMachine.Time;
log.Debug("Read poseidon - took:" + (readEndTime - readStartTime));
if (heatMetersTestParams != null)
{
+1
View File
@@ -1209,6 +1209,7 @@
<Compile Include="Rig\RegisterReaders\PoseidonCmdStartStop\PoseidonCfg.cs" />
<Compile Include="Rig\RegisterReaders\PoseidonCmdStartStop\PoseidonProcParams.cs" />
<Compile Include="Rig\RegisterReaders\PoseidonCmdStartStop\PoseidonReader.cs" />
<Compile Include="Rig\RegisterReaders\PoseidonCmdStartStop\ScopedLoggerFactory.cs" />
<Compile Include="Rig\RegisterReaders\PoseidonCmdStartStop\SerialPortData.cs" />
<Compile Include="Rig\RegisterReaders\PulsesFromUniCB\Factory.cs" />
<Compile Include="Rig\RegisterReaders\PulsesFromUniCB\RegisterReader.cs" />