MessageTemplateLookup.cs 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using Censtar_31064V105OrV106_Pump.MessageEntity.Incoming;
  2. using Edge.Core.Parser.BinaryParser;
  3. using Edge.Core.Parser.BinaryParser.MessageEntity;
  4. namespace Censtar_31064V105OrV106_Pump
  5. {
  6. /// <summary>
  7. /// </summary>
  8. public class MessageTemplateLookup : IMessageTemplateLookup
  9. {
  10. /// <summary>
  11. ///
  12. /// </summary>
  13. /// <param name="bytes">同步头: 3 Byte。 所有命令和应答均以 3 个 0FCH 为同步头。命令: 1 Byte</param>
  14. /// <returns></returns>
  15. public MessageTemplateBase GetMessageTemplateByRawBytes(byte[] bytes)
  16. {
  17. var cmd = bytes[3];
  18. switch (cmd)
  19. {
  20. case 0x00:
  21. return new GenericErrorAnswer();
  22. case 0x02:
  23. return new PresetAmountAnswer();
  24. case 0x03:
  25. return new ChangePriceAnswer();
  26. case 0x04:
  27. return new SetDensityAnswer();
  28. case 0x05:
  29. return new StopAnswer();
  30. case 0x06:
  31. return new StartAnswer();
  32. case 0x07:
  33. return new SetMonitoringModeAnswer();
  34. case 0x08:
  35. return new ReadTotalizerAnswer();
  36. case 0x09:
  37. return new CancelPresetAnswer();
  38. case 0x0E:
  39. return new ReadCoefficientOfFlowRateAnswer();
  40. case 0x10:
  41. return new ReadUnitOfMeasurementAnswer();
  42. case 0x12:
  43. return new SetDateAndTimeAnswer();
  44. case 0x13:
  45. return new ConsoleAllowDispenserForTrialAnswer();
  46. case 0x14:
  47. return new StopTrialAnswer();
  48. case 0x15:
  49. return new ReadVersionAnswer();
  50. case 0x17:
  51. return new InformToUnlockAnswer();
  52. case 0x31:
  53. return new SetPostFuelingLockTypeAnswer();
  54. case 0x32:
  55. return new RegistrationOfShiftTransferAnswer();
  56. case 0x33:
  57. return new SetAllowFuelingOrNotWhenOffDutyAnswer();
  58. case 0x34:
  59. return new ReadRealTimeFuelingDataInPumpFuelingStateAnswer();
  60. case 0x35:
  61. return new ReadRealTimeFuelingVolumeDataInPumpNonFuelingStateAnswer();
  62. case 0x36:
  63. return new ReadTransactionDataAndHasDataAnswer();
  64. case 0x38:
  65. return new ReadTransactionDataAndHasNoDataAnswer();
  66. //case 0x37:
  67. // return new ConsoleOnlyForReadAvailableTransactionDataAnswer();
  68. }
  69. return null;
  70. }
  71. }
  72. }