diff --git a/MapoSDK/Enums.cs b/MapoSDK/Enums.cs index 350927ef..97f46058 100644 --- a/MapoSDK/Enums.cs +++ b/MapoSDK/Enums.cs @@ -49,6 +49,16 @@ /// String } + /// + /// Finestra temporale di aggregazione dati VC + /// + public enum timeWindow + { + hour, + day, + week, + month + } /// /// Elenco task ammessi (x IOB-WIN da eseguire...) diff --git a/MapoSDK/Objects.cs b/MapoSDK/Objects.cs index f10e7a6d..10d3b753 100644 --- a/MapoSDK/Objects.cs +++ b/MapoSDK/Objects.cs @@ -215,6 +215,100 @@ namespace MapoSDK public Dictionary mMapRead = new Dictionary(); } + + + /// + /// Classe oggetto base TimeSeries + /// + public class tsData + { + /// + /// Nome della Var Casuale + /// + public string vcName { get; set; } = ""; + /// + /// Data-Ora riferimento campione + /// + public DateTime timeStamp { get; set; } = DateTime.Now; + /// + /// Tipo di valore gestito + /// + [JsonConverter(typeof(StringEnumConverter))] + public plcDataType vcType { get; set; } = plcDataType.Int; + /// + /// Valore in formato stringa (che può venire customizzato) + /// + public string strValue { get; set; } = ""; + /// + /// In base al tipo di oggetto restituisce il valore cona deguata conversione...... + /// + public object actValue + { + get + { + object answ = null; + bool currBool = false; + int currInt = 0; + double currDouble = 0; + switch (vcType) + { + case plcDataType.Boolean: + bool.TryParse(strValue, out currBool); + answ = currBool; + break; + case plcDataType.Int: + case plcDataType.DInt: + int.TryParse(strValue, out currInt); + answ = currInt; + break; + case plcDataType.Real: + double.TryParse(strValue, out currDouble); + answ = currDouble; + break; + case plcDataType.String: + default: + answ = strValue; + break; + } + return answ; + } + } + /// + /// Valore intero + /// + public int intVal { get; set; } = 0; + /// + /// Valore float + /// + public float floatVal { get; set; } = 0; + } + /// + /// Aggregazione dati VC + /// + public class tsGrouped + { + /// + /// Nome della Var Casuale + /// + public string vcName { get; set; } = ""; + /// + /// Data-Ora riferimento campione + /// + public DateTime timeStamp { get; set; } = DateTime.Now; + /// + /// Valore medio (NON definito) + /// + public object avgValue { get; set; } = null; + /// + /// Periodo di aggregazione di riferimento + /// + public timeWindow period { get; set; } = timeWindow.hour; + /// + /// Campioni effettivi nel periodo + /// + public List samples { get; set; } + } + #endregion