using ProGauge_StartItaliana_Probe.MessageEntity.Outgoing; using System; using System.Collections.Generic; using System.Text; namespace ProGauge_StartItaliana_Probe.MessageEntity.Incoming { public class DiagnosticResponse { /// /// water in dmm for probes up to 5,5 mt. /// water in mm for probes above 5,5 mt /// public double WaterLevel { get; private set; } /// /// product in dmm for probes up to 5,5 mt. /// product in mm for probes above 5,5 mt /// public double ProductLevel { get; private set; } /// /// /// public double TotalLenghtInPulseValue { get; private set; } public double TemperatureCompensationFactor { get; private set; } public double OffestSignal { get; private set; } public double PulseSignal { get; private set; } public double PowerSupply { get; private set; } /// /// alarm set in dmm /// public double AlarmSet { get; private set; } public double AlarmStatus { get; private set; } public static DiagnosticResponse Parse(byte[] raw) { var response = new DiagnosticResponse(); var msg = Encoding.ASCII.GetString(raw); var parts = msg.Split(' '); if (parts.Length != 9) throw new ArgumentException("msg must has 8 chars of ' '"); response.WaterLevel = double.Parse(parts[0]); response.ProductLevel = double.Parse(parts[1]); response.TotalLenghtInPulseValue = double.Parse(parts[2]); response.TemperatureCompensationFactor = double.Parse(parts[3]); response.OffestSignal = double.Parse(parts[4]); response.PulseSignal = double.Parse(parts[5]); response.PowerSupply = double.Parse(parts[6]); response.AlarmSet = double.Parse(parts[7]); response.AlarmStatus = double.Parse(parts[8]); return response; } } }