119 lines
4.1 KiB
C#
119 lines
4.1 KiB
C#
using CordonelPreadjustmentUi.Processes.Itinerary;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using static CordonelPreadjustmentUi.PreAdjustmentControl;
|
|
|
|
namespace CordonelPreadjustmentUi.Processes.Actions
|
|
{
|
|
public class LoginProcess : BaseProcess
|
|
{
|
|
public LoginProcess(string processName, StatusPanelItems panelState, string performMessage, string failedMessage, int? expectedTimeS) : base(processName, panelState, performMessage, failedMessage, expectedTimeS)
|
|
{
|
|
}
|
|
public override List<Task> StartWork()
|
|
{
|
|
return Login(base.CurrentProcessProgress);
|
|
}
|
|
|
|
private List<Task> Login(ProcessProgress pp)
|
|
{
|
|
var MetersToProcess = MeterStateCtls.Where(e => e.IsEnabled).ToList();
|
|
MetersToProcess.ForEach(lf => lf.LoginFailed = false);
|
|
var listOfLoginTask = new List<Task>();
|
|
|
|
|
|
foreach (var tempmeterctl in TempMeterStateCtls)
|
|
{
|
|
|
|
listOfLoginTask.Add(new Task<bool>(() =>
|
|
{
|
|
|
|
|
|
if (pp.Setting.GetTempUseTempFlansh())
|
|
{
|
|
pp.DebugMessage($"Load Temp {tempmeterctl.Slot} with {MeterStateControl.TempMode.CalcTof}\n");
|
|
|
|
tempmeterctl.StartTempWatch(MeterStateControl.TempMode.CalcTof);
|
|
}
|
|
else
|
|
{
|
|
pp.DebugMessage($"Load Temp {tempmeterctl.Slot} with {MeterStateControl.TempMode.Hand}\n");
|
|
|
|
tempmeterctl.StartTempWatch();
|
|
}
|
|
|
|
tempmeterctl.SetTemperature(0);
|
|
tempmeterctl.DisableTemperatureinput(true);
|
|
return true;
|
|
}));
|
|
|
|
}
|
|
var delay = 1000;
|
|
foreach (var meterctl in MetersToProcess)
|
|
{
|
|
listOfLoginTask.Add(new Task<bool>(() =>
|
|
{
|
|
Thread.Sleep(delay * listOfLoginTask.Count);
|
|
var Result = false;
|
|
for (int i = 0; i < 3; i++)
|
|
{
|
|
pp.DebugMessage($"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($"Error on {ProcessName} procedure\n");
|
|
pp.DebugMessage($"Error {e.Message}\n");
|
|
}
|
|
}
|
|
if (meterctl.Meter!= null)
|
|
{
|
|
meterctl.Meter.SerialNumber = meterctl.Srn;
|
|
meterctl.Meter.CurrentActionText = "PreAdjustment";
|
|
}
|
|
|
|
|
|
|
|
var meterIndex = (meterctl.Slot).ToString(pp.Setting.Culture);
|
|
meterctl.LoginFailed = !Result;
|
|
meterctl.Failed = !Result;
|
|
if (!Result)
|
|
{
|
|
pp.DebugMessage($"{ProcessName} procedure failed", meterctl.Slot, "APP", meterctl.Meter.PcbId);
|
|
//pp.GenerateReturnNote(PredefinedMessages.LoginFailed(pp.Setting.Culture), meterctl);
|
|
}
|
|
else
|
|
{
|
|
pp.DebugMessage($"{ProcessName} procedure successful", meterctl.Slot, "APP", meterctl.Meter.PcbId);
|
|
}
|
|
Thread.Sleep(delay);
|
|
return Result;
|
|
|
|
}));
|
|
|
|
}
|
|
|
|
|
|
return listOfLoginTask;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|