VceSimulator.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using MECF.Framework.Simulator.Core.Driver;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Text.RegularExpressions;
  7. using System.Threading.Tasks;
  8. namespace Venus_Simulator.Devices
  9. {
  10. public class VceSimulator : SerialPortDeviceSimulator
  11. {
  12. private const string EOF = "\n\r";
  13. private const char MSG_DELIMITER = ' ';
  14. private const string VCE_Port = "COM161";
  15. private Regex _action_rule = new Regex(@"\d\d,A,.*");
  16. private Regex _read_rule = new Regex(@"\d\d,R,.*");
  17. private Regex _set_rule = new Regex(@"\d\d,S,.*");
  18. private Regex _curing_rule = new Regex(@"\d\d,P,.*");
  19. public VceSimulator() : base(VCE_Port, -1, EOF, MSG_DELIMITER)
  20. {
  21. }
  22. protected override void ProcessUnsplitMessage(string message)
  23. {
  24. if (string.IsNullOrEmpty(message))
  25. throw new ArgumentException("Hardware command message is invalid");
  26. if (message.Contains(EOF))
  27. {
  28. message = message.Trim();
  29. }
  30. if (_action_rule.IsMatch(message) || _set_rule.IsMatch(message) || _curing_rule.IsMatch(message))
  31. {
  32. OnWriteMessage("_RDY" + EOF);
  33. OnWriteMessage("_BKGRDY" + EOF);
  34. return;
  35. }
  36. if (_read_rule.IsMatch(message))
  37. {
  38. switch (message)
  39. {
  40. case "00,R,MI":
  41. OnWriteMessage("00,X,MI,1,0,A,3,0,0,0,0,0,0" + EOF);
  42. OnWriteMessage("_RDY" + EOF);
  43. return;
  44. default:
  45. return;
  46. }
  47. }
  48. //string[] strs = message.Split(MSG_DELIMITER);
  49. //Thread.Sleep(2 * 1000);
  50. }
  51. }
  52. }