using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; namespace IOB_UT_NEXT { /// /// Classe di helper per metodi Euromap63 tramite File Exchange /// public class Eurom63 { #region Public Enums /// /// Elenco dei livelli di comunicazione attivi /// public enum ComLevel { /// /// Comunicazione NON attiva /// None = 0, /// /// COntrollo comunicazione col PLC /// IsConnected, /// /// Ricezione info preliminari macchina /// HasInfo, /// /// Impostato data-ora correnti /// TimeSet, /// /// Verificato il canale di comunicazione è OK, fatta pulizia con AbortAll, NON ci sono report attivi /// ChannelOk, /// /// Status data richiesti /// StatusRequested, /// /// Prod data richiesti /// ProdRequested } public enum FileOpr { Copy = 0, ReplaceAndCopy } public enum FileType { NA = 0, Dat, Job, Log, Req, Rsp } public enum JobType { NA = 0, AbortAll, GetId, GetInfo, GetParams, GetStatus, GetProduction, IsConnected, SetDateTime, SetParamOdl } #endregion Public Enums #region Public Classes /// /// Struttura per un file da processare /// public class FileTask { #region Public Properties public FileOpr OprReq { get; set; } = FileOpr.Copy; public string Path { get; set; } = @"EUR63_JOB\SESS9999.FILE"; #endregion Public Properties } public class ProtoConf { #region Public Fields /// /// Array delel sessioni attive /// public Dictionary ActiveSessions = new Dictionary(); #endregion Public Fields #region Public Properties /// /// Directory base scambio dati /// public string BaseDir { get; set; } = @"C:\EUROMAP63\"; /// /// array estensioni da eliminare in cleanup /// public List cleanupExt { get; set; } = new List(); /// /// array dati dinamici da acquisire /// public List DynData { get; set; } = new List(); /// /// Numero di pezzi/pallet per eventuaole moltiplica valore letto dalla macchina /// public int PzPallet { get; set; } = 1; /// /// Indica se sia possibile impostare i pezzi pallet dal server, ed in tal caso moltiplica i pezzi letti dalla macchina per il valore pzPallet (vedi sopra) /// public bool SetPzPalletFromSrv { get; set; } = false; #endregion Public Properties } /// /// Generic communication session /// public class Session { #region Public Properties /// /// Session currently active /// public bool Active { get; set; } = false; /// /// Indicates that must be repeated/restarted when not active /// public bool Cycle { get; set; } = false; /// /// Session Description /// public string Description { get; set; } = ""; /// /// Elenco dei file da processare /// public List FileList { get; set; } = new List(); /// /// Numero MAX di esecuzioni da mantenere in HIST prima di eliminare i + vecchi (fare folder HIST\SESSnnnn) /// public int Max2Keep { get; set; } = 50; /// /// Session check passed (= not to repeat) /// public bool Passed { get; set; } = false; /// /// TAG per risposta con errori /// public string RespKo { get; set; } = "ERROR"; /// /// Tag per risposta positiva /// public string RespOk { get; set; } = "PROCESSED"; /// /// Seconds before do a new retry (default = 0 --> no veto) /// public double RetrySec { get; set; } = 0; /// /// Veto for retry operation /// public DateTime RetryVeto { get; set; } = DateTime.Now; /// /// Session Name /// public string SessionName { get; set; } = "SESS0000"; /// /// Start of communication /// public DateTime SessionStarted { get; set; } = DateTime.Now.AddMinutes(-5); /// /// Session type /// public JobType SessionType { get; set; } = JobType.NA; /// /// Estimated Validity limit /// public DateTime SessionValidUntil { get; set; } = DateTime.Now.AddMinutes(-1); /// /// Set Step Order (=execution priority, 1...n) /// public int StepOrder { get; set; } = 999; /// /// Standard session validity time /// public double ValidityMinutes { get; set; } = 1; #endregion Public Properties } #endregion Public Classes } }