Files

208 lines
5.4 KiB
C#

using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System;
using System.Collections.Generic;
namespace MapoSDK
{
/// <summary>
/// Raccolta dati di storici sintetici per Macchina e Variabile
/// </summary>
public class histData
{
#region Public Properties
/// <summary>
/// Data riferimento campione in formato YMD = yyyyMMdd
/// </summary>
public int dateYMD { get; set; } = 0;
/// <summary>
/// Macchina
/// </summary>
public string macName { get; set; } = "";
/// <summary>
/// Periodo di aggregazione di riferimento
/// </summary>
//[JsonConverter(typeof(StringEnumConverter))]
public timeWindow period { get; set; } = timeWindow.day;
/// <summary>
/// Statistiche raccolte nel periodo
/// </summary>
public List<varStats> stats { get; set; } = null;
/// <summary>
/// Tipo di valore registrato (internamente è string)
/// </summary>
//[JsonConverter(typeof(StringEnumConverter))]
public plcDataType varType { get; set; } = plcDataType.Int;
#endregion Public Properties
}
/// <summary>
/// Classe oggetto base TimeSeries
/// </summary>
public class tsData
{
#region Public Properties
/// <summary>
/// In base al tipo di oggetto restituisce il valore cona deguata conversione......
/// </summary>
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;
}
}
/// <summary>
/// Valore float
/// </summary>
public float floatVal { get; set; } = 0;
/// <summary>
/// Valore intero
/// </summary>
public int intVal { get; set; } = 0;
/// <summary>
/// Valore in formato stringa (che può venire customizzato)
/// </summary>
public string strValue { get; set; } = "";
/// <summary>
/// Data-Ora riferimento campione
/// </summary>
public DateTime timeStamp { get; set; } = DateTime.Now;
/// <summary>
/// Nome Macchina
/// </summary>
public string vcMachine { get; set; } = "";
/// <summary>
/// Nome della Var Casuale
/// </summary>
public string vcName { get; set; } = "";
/// <summary>
/// Tipo di valore gestito
/// </summary>
[JsonConverter(typeof(StringEnumConverter))]
public plcDataType vcType { get; set; } = plcDataType.Int;
#endregion Public Properties
}
/// <summary>
/// Aggregazione dati VC
/// </summary>
public class tsGrouped
{
#region Public Properties
/// <summary>
/// Valore medio (NON definito)
/// </summary>
public object avgValue { get; set; }
/// <summary>
/// Periodo di aggregazione di riferimento
/// </summary>
public timeWindow period { get; set; } = timeWindow.hour;
/// <summary>
/// Campioni effettivi nel periodo
/// </summary>
public List<tsData> samples { get; set; }
/// <summary>
/// Data-Ora riferimento campione
/// </summary>
public DateTime timeStamp { get; set; } = DateTime.Now;
/// <summary>
/// Unità di Misura
/// </summary>
public string UM { get; set; } = "#";
/// <summary>
/// Nome Macchina
/// </summary>
public string vcMachine { get; set; } = "";
/// <summary>
/// Nome della Var Casuale
/// </summary>
public string vcName { get; set; } = "";
#endregion Public Properties
}
/// <summary>
/// Classe oggetto statistiche sui dati
/// </summary>
public class varStats
{
#region Public Properties
/// <summary>
/// Valore medio/mediano
/// </summary>
public float avg { get; set; } = 0;
/// <summary>
/// Valore max
/// </summary>
public float max { get; set; } = 0;
/// <summary>
/// Valore min
/// </summary>
public float min { get; set; } = 0;
/// <summary>
/// Num record
/// </summary>
public int numRec { get; set; } = 0;
/// <summary>
/// Nome della Variabile tracciata
/// </summary>
public string varName { get; set; } = "";
#endregion Public Properties
}
}