using AwInitilizer.Assist; using AwInitilizer.Interface; using AwInitilizer.Model; using MesAdaptor; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Collections.Specialized; using System.IO; using System.Linq; using System.Net.Sockets; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; namespace AwInitilizer.Procedure { public enum ProcedureStatus { IDLE,PASS,FAIL } public class ProcedureBase { public string Name { get; set; } public string Content { get; set; } public bool IsActivated { get; set; } = true; public ProcedureStatus Status { get; private set; } public string InfoLog { get; internal set; } public static UpdateData UpdateData { get; set; } public static IIogger Logger { get; set; } public ValueReportDatas MesLogData { get; private set; } = new ValueReportDatas(); public List ReportLog { get; private set; } = new List(); internal SerialPortocol serialPortocol { get; private set; } internal static string ServerIpAddress = "192.168.1.10"; //internal static string ServerIpAddress = "172.18.13.84"; public async Task DoWork() { if (!IsActivated) return false; InfoLog = ""; Logger.Print(Name + "Started"); var result = await Run(); Dispose(); Status = result ? ProcedureStatus.PASS : ProcedureStatus.FAIL; Logger.Print(Name + "Complete"); return result; } internal virtual async Task Run() { return true; } public void Reset() { Status = ProcedureStatus.IDLE; InfoLog = ""; } internal async Task CheckAndCreateSocket() { string ipAddress = null; if (!string.IsNullOrEmpty(UpdateData.IpAddress)) { ipAddress = UpdateData.IpAddress; } else { ipAddress = ServerIpAddress; } TcpSerializer socketConnection = null; if (socketConnection == null || socketConnection.ConnectStatus == ConnectStatus.ConnectionFail || socketConnection.ConnectStatus == ConnectStatus.DisConnected) { socketConnection = new Assist.TcpSerializer(ip: ipAddress); await socketConnection.OpenAsync(); if(socketConnection.ConnectStatus != ConnectStatus.Connected) { Logger.Print("EVSE tcp connection Failed,Check EVSE is connected", isError: true); return false; } Logger.Print("Connected"); serialPortocol = new SerialPortocol(socketConnection); return true; } return true; } public async Task ChekCsuBootCompelete() { var result = await EvApi.ChekCsuBootCompelete(); return result.Result; } public async Task CheckGetQueryAction() { var result = await EvApi.CheckGetQueryAction(); return result.Result; } private void Dispose() { if(serialPortocol!=null) { try { serialPortocol.Close(); }catch { } } } } }