电子药箱通讯服务端
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

LocationRequestProtocol.cs 1.5KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace Rdh.SocketServer.Client.Models
  7. {
  8. public class LocationRequestProtocol : EleMedKitProtocol
  9. {
  10. public LocationRequestProtocol()
  11. {
  12. base.Command = EleMedKitCommand.RequestLocation;
  13. MinLines = base.MinLines + 1;
  14. }
  15. /// <summary>
  16. /// 获取或设置基站编号
  17. /// </summary>
  18. public string? StationCode { get; set; }
  19. /// <summary>
  20. /// 获取或设置药箱到基站的距离(厘米)
  21. /// </summary>
  22. public float? Distance { get; set; }
  23. public override string GetContent()
  24. {
  25. return base.GetContent()
  26. + AddLineContent(StationCode + AddBlockContent(Distance.ToString()))
  27. + AddLineContent(CountFlag);
  28. }
  29. public override bool ParseContent(string[] lines)
  30. {
  31. if (!base.ParseContent(lines)
  32. || lines.Length < MinLines)
  33. {
  34. return false;
  35. }
  36. string[] stationInfo = EleMedKitProtocolHelper.GetContentBlocks(lines[2]);
  37. if (stationInfo == null || stationInfo.Length < 2)
  38. {
  39. return false;
  40. }
  41. StationCode = stationInfo[0];
  42. float tempDistance;
  43. float.TryParse(stationInfo[1], out tempDistance);
  44. Distance = tempDistance;
  45. return true;
  46. }
  47. }
  48. }