86 lines
2.8 KiB
C#
86 lines
2.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics.Eventing.Reader;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using CordonelPreadjustmentUi.Processes.Itinerary;
|
|
using System.Threading;
|
|
using static CordonelPreadjustmentUi.PreAdjustmentControl;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace CordonelPreadjustmentUi.Processes.Actions
|
|
{
|
|
public class DemoProcess : BaseProcess
|
|
{
|
|
public DemoProcess(string processName, StatusPanelItems panelState, string performMessage, string failedMessage ) : base(processName, panelState, performMessage, failedMessage )
|
|
{
|
|
}
|
|
|
|
public override List<Task> StartWork()
|
|
{
|
|
return doWorkProcess(base.CurrentProcessProgress);
|
|
}
|
|
|
|
private List<Task> doWorkProcess(ProcessProgress pp)
|
|
{
|
|
var MetersToProcess = MeterStateCtls.Where(e => e.IsEnabled).ToList();
|
|
|
|
var listOfProcessTask = new List<Task>();
|
|
|
|
foreach (var meterctl in MetersToProcess)
|
|
{
|
|
listOfProcessTask.Add(new Task<bool>(() =>
|
|
{
|
|
var Result = false;
|
|
for (int i = 0; i < 3; i++)
|
|
{
|
|
pp.DebugMessage = $"\tCOMMAND CHANNEL: \t Performing {ProcessName} procedure\n";
|
|
|
|
try
|
|
{
|
|
Result = string.IsNullOrEmpty(meterctl.OverridePassword)
|
|
? meterctl.Meter.Login()
|
|
: meterctl.Meter.Login(meterctl.OverridePassword);
|
|
|
|
if (Result)
|
|
{
|
|
break;
|
|
}
|
|
Thread.Sleep(100);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
pp.DebugMessage = $"\tCOMMAND CHANNEL: \t Error on {ProcessName} procedure\n";
|
|
}
|
|
|
|
}
|
|
|
|
var meterIndex = (meterctl.Slot).ToString(pp.Setting.Culture);
|
|
meterctl.Failed = !Result;
|
|
if (!Result)
|
|
{
|
|
pp.DebugMessage = $"\tCOMMAND CHANNEL: \t {ProcessName} procedure failed at METER{meterIndex}\n";
|
|
}
|
|
else
|
|
{
|
|
pp.DebugMessage = $"\tCOMMAND CHANNEL: \t {ProcessName} procedure successful at METER{meterIndex}\n";
|
|
pp.GenerateReturnNote($"{meterctl.Slot}", meterctl.Meter.PcbId, PredefinedMessages.LoginFailed(pp.Setting.Culture));
|
|
}
|
|
|
|
return Result;
|
|
|
|
}));
|
|
|
|
}
|
|
|
|
|
|
return listOfProcessTask;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|