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
}
}