AdTecGeneratorMockPMD.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using System;
  2. using System.Threading;
  3. using MECF.Framework.Simulator.Core.Driver;
  4. namespace Venus_Simulator.Devices
  5. {
  6. class AdTecGeneratorMockPMD : SerialPortDeviceSimulator
  7. {
  8. public enum GeneratorStatus
  9. {
  10. Unknown,
  11. OFF,
  12. ON,
  13. ERROR
  14. }
  15. public static GeneratorStatus _simGeneratorStatus;
  16. private const string EOF = "\r";
  17. private const char MSG_DELIMITER = '_';
  18. private const string MOCKUP_PORT = "COM49";
  19. public AdTecGeneratorMockPMD() : base(MOCKUP_PORT, -1, EOF, MSG_DELIMITER)
  20. {
  21. _simGeneratorStatus = GeneratorStatus.Unknown;
  22. }
  23. protected override void ProcessUnsplitMessage(string message)
  24. {
  25. if (string.IsNullOrEmpty(message))
  26. throw new ArgumentException("Hardware command message is invalid");
  27. string sRes = string.Empty;
  28. if (message.Contains(EOF))
  29. {
  30. message = message.Remove(message.Length - 1);
  31. }
  32. string[] msgs = message.Split('\r');
  33. foreach(string msg in msgs)
  34. {
  35. switch (msg)
  36. {
  37. case "Q":
  38. if (_simGeneratorStatus == GeneratorStatus.ON)
  39. {
  40. sRes = "2010000 12345 00900 00100 45678\r";
  41. }
  42. else if (_simGeneratorStatus == GeneratorStatus.OFF)
  43. {
  44. sRes = "2000000 12345 00000 00000 45678\r";
  45. }
  46. break;
  47. case "G":
  48. _simGeneratorStatus = GeneratorStatus.ON;
  49. sRes = "\r";
  50. break;
  51. case "S":
  52. _simGeneratorStatus = GeneratorStatus.OFF;
  53. sRes = "\r";
  54. break;
  55. default:
  56. break;
  57. }
  58. //string[] strs = message.Split(MSG_DELIMITER);
  59. //Thread.Sleep(2 * 1000);
  60. sRes += "\r";
  61. OnWriteMessage(sRes);
  62. }
  63. }
  64. }
  65. }