电子药箱通讯服务端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

EleMedKitProtocolHelper.cs 3.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Windows.Shapes;
  7. namespace Rdh.SocketServer.Client.Models
  8. {
  9. public class EleMedKitProtocolHelper
  10. {
  11. private static readonly Char[] _lineSpiltor = new char[] { '\n' };
  12. private static readonly char[] _blockSpiltor = new char[] { '|' };
  13. /// <summary>
  14. /// 将数据按照行拆分
  15. /// </summary>
  16. /// <param name="body"></param>
  17. /// <returns>拆分后的所有行(行内容中去除了标识符)</returns>
  18. public static String[] GetContentLines(String body)
  19. {
  20. String[] lines = body.Split(_lineSpiltor, StringSplitOptions.RemoveEmptyEntries);
  21. for (int i = 0; i < lines.Length; i++)
  22. {
  23. lines[i] = GetLineContent(lines[i]);
  24. }
  25. return lines;
  26. }
  27. public static String[] GetContentBlocks(String line)
  28. {
  29. String[] blocks = line
  30. .Trim()
  31. .TrimStart(EleMedKitProtocolFlags.LineStart.First())
  32. //.Split(_blockSpiltor, StringSplitOptions.RemoveEmptyEntries);
  33. .Split(_blockSpiltor);
  34. for (int i = 0; i < blocks.Length; i++)
  35. {
  36. blocks[i] = blocks[i].Trim();
  37. }
  38. return blocks;
  39. }
  40. public static String GetLineContent(String line)
  41. {
  42. return line.Trim().TrimStart(EleMedKitProtocolFlags.LineStart.First());
  43. }
  44. public static DateTime? GetDateTimeByLineContent(String line)
  45. {
  46. line = GetLineContent(line);
  47. DateTime rlt;
  48. if(DateTime.TryParseExact(line,"yyyy|MM|dd|hh|mm|ss", null, System.Globalization.DateTimeStyles.AllowWhiteSpaces, out rlt))
  49. {
  50. return rlt;
  51. }
  52. return null;
  53. }
  54. public static String BuildLinePadContent(String? content)
  55. {
  56. return (content ?? String.Empty).PadLeft(EleMedKitProtocolFlags.LinePadTotalLenght, EleMedKitProtocolFlags.LinePad.First());
  57. }
  58. public static BaseEleMedKitProtocol GetRequestEleMedKitProtocol(String command)
  59. {
  60. switch (command)
  61. {
  62. case EleMedKitCommand.RequestLocation:
  63. return new LocationRequestProtocol();
  64. case EleMedKitCommand.RequestClock:
  65. return new ClockRequestProtocol();
  66. case EleMedKitCommand.RequestPatientOperation:
  67. return new RequestPatientOperationProtocol();
  68. case EleMedKitCommand.RequestPatientOperationUsage:
  69. return new RequestOperationUsageProtocol();
  70. case EleMedKitCommand.RequestReturnMedKit:
  71. return new RequestMedKitReturnProtocol();
  72. case EleMedKitCommand.RequestSupplyList:
  73. return new RequestSupplyDrugProtocol();
  74. case EleMedKitCommand.RequestDrugLend:
  75. return new RequestDrugLendProtocol();
  76. case EleMedKitCommand.RequestStartPatientOperation:
  77. return new RequestStartPatientOperationProtocol();
  78. default:
  79. return new UnSupportProtocol();
  80. }
  81. }
  82. }
  83. }