diff --git a/IOB-WIN-NEXT/IobOpcUaOmronIcoel.cs b/IOB-WIN-NEXT/IobOpcUaOmronIcoel.cs index 7fd8a32c..3afd1935 100644 --- a/IOB-WIN-NEXT/IobOpcUaOmronIcoel.cs +++ b/IOB-WIN-NEXT/IobOpcUaOmronIcoel.cs @@ -10,9 +10,16 @@ using System.Threading.Tasks; namespace IOB_WIN_NEXT { + public enum IcoelStatus + { + Allarme = 0, + Stop = 1, + Manuale = 2, + Automatico = 3 + } public class MesItemStatus { - public UInt16 Stato { get; set; } = 0; + public IcoelStatus Stato { get; set; } = 0; public UInt16 Velocita { get; set; } = 0; public bool Termico { get; set; } = false; public bool MagnetoTermico { get; set; } = false; @@ -20,7 +27,7 @@ namespace IOB_WIN_NEXT public MesItemStatus(byte[] rawData) { - Stato = BitConverter.ToUInt16(rawData, 0); + Stato = (IcoelStatus)BitConverter.ToUInt16(rawData, 0); Velocita = BitConverter.ToUInt16(rawData, 2); Termico = !rawData.Skip(4).Take(1).FirstOrDefault().Equals(0); MagnetoTermico = !rawData.Skip(5).Take(1).FirstOrDefault().Equals(0); @@ -34,7 +41,7 @@ namespace IOB_WIN_NEXT public byte[] serialize() { byte[] answ = new byte[7]; - Buffer.BlockCopy(BitConverter.GetBytes(Stato), 0, answ, 0, 2); + Buffer.BlockCopy(BitConverter.GetBytes((short)Stato), 0, answ, 0, 2); Buffer.BlockCopy(BitConverter.GetBytes(Velocita), 0, answ, 2, 2); Buffer.BlockCopy(BitConverter.GetBytes(Termico), 0, answ, 4, 1); Buffer.BlockCopy(BitConverter.GetBytes(MagnetoTermico), 0, answ, 5, 1); @@ -325,7 +332,7 @@ namespace IOB_WIN_NEXT testSendProperty(new Opc.Ua.Client.MonitoredItem() { DisplayName = $"{blockName}_AvariaInverter", NodeClass = NodeClass.Variable, StartNodeId = startNodeId }, $"{newBlock.AvariaInverter}", forceSend); } } - + /// /// Verifica ed invia variazioni DAL FORMATO RAW data (byte[]) --> esplode oggetti e li testa 1:1 @@ -339,7 +346,7 @@ namespace IOB_WIN_NEXT { if (NotifyValue != null && NotifyValue.Length > 0) { - + // verifico variazione "globale" if (!lastData.Equals(currData)) {