DiagnosticResponse.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using ProGauge_StartItaliana_Probe.MessageEntity.Outgoing;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Text;
  5. namespace ProGauge_StartItaliana_Probe.MessageEntity.Incoming
  6. {
  7. public class DiagnosticResponse
  8. {
  9. /// <summary>
  10. /// water in dmm for probes up to 5,5 mt.
  11. /// water in mm for probes above 5,5 mt
  12. /// </summary>
  13. public double WaterLevel { get; private set; }
  14. /// <summary>
  15. /// product in dmm for probes up to 5,5 mt.
  16. /// product in mm for probes above 5,5 mt
  17. /// </summary>
  18. public double ProductLevel { get; private set; }
  19. /// <summary>
  20. ///
  21. /// </summary>
  22. public double TotalLenghtInPulseValue { get; private set; }
  23. public double TemperatureCompensationFactor { get; private set; }
  24. public double OffestSignal { get; private set; }
  25. public double PulseSignal { get; private set; }
  26. public double PowerSupply { get; private set; }
  27. /// <summary>
  28. /// alarm set in dmm
  29. /// </summary>
  30. public double AlarmSet { get; private set; }
  31. public double AlarmStatus { get; private set; }
  32. public static DiagnosticResponse Parse(byte[] raw)
  33. {
  34. var response = new DiagnosticResponse();
  35. var msg = Encoding.ASCII.GetString(raw);
  36. var parts = msg.Split(' ');
  37. if (parts.Length != 9)
  38. throw new ArgumentException("msg must has 8 chars of ' '");
  39. response.WaterLevel = double.Parse(parts[0]);
  40. response.ProductLevel = double.Parse(parts[1]);
  41. response.TotalLenghtInPulseValue = double.Parse(parts[2]);
  42. response.TemperatureCompensationFactor = double.Parse(parts[3]);
  43. response.OffestSignal = double.Parse(parts[4]);
  44. response.PulseSignal = double.Parse(parts[5]);
  45. response.PowerSupply = double.Parse(parts[6]);
  46. response.AlarmSet = double.Parse(parts[7]);
  47. response.AlarmStatus = double.Parse(parts[8]);
  48. return response;
  49. }
  50. }
  51. }