SetTankDiameterRequest.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace VeederRoot_ATG_Console.MessageEntity.Outgoing
  6. {
  7. /// <summary>
  8. /// i|I607
  9. /// </summary>
  10. public class SetTankDiameterRequest : OutgoingMessageBase
  11. {
  12. /// <summary>
  13. ///
  14. /// </summary>
  15. /// <param name="messageFormat"></param>
  16. /// <param name="tankNumber">0 indicates all tanks</param>
  17. /// <param name="diameterInches">by inches and hundredths</param>
  18. public SetTankDiameterRequest(MessageFormat messageFormat
  19. , int tankNumber, double diameterInches)
  20. : base(messageFormat, FuncCode.SetTankDiameter,
  21. tankNumber.ToString())
  22. {
  23. if (tankNumber < 0 || tankNumber > 99) throw new ArgumentOutOfRangeException("Valid tank number is range from 0 to 99");
  24. base.DataField = new List<byte>();
  25. if (messageFormat == MessageFormat.Computer)
  26. base.DataField.AddRange(
  27. Encoding.ASCII.GetBytes(
  28. Util.ConvertDoubleToIEEE4Bytes(diameterInches).Select(b => b.ToString("X2")).Aggregate((acc, n) => acc + n)));
  29. else
  30. base.DataField.AddRange(Encoding.ASCII.GetBytes(diameterInches.ToString()));
  31. }
  32. }
  33. }