FietsSimulator.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO.Ports;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Threading;
  8. namespace FietsSimulator
  9. {
  10. class FietsSimulator
  11. {
  12. private SerialPort comport;
  13. private Mode curmode;
  14. private int curvalue;
  15. private int _power;
  16. public int Power
  17. {
  18. get { return _power; }
  19. set
  20. {
  21. if (value >= 25 && value <= 400)
  22. _power = value;
  23. if (value < 25)
  24. _power = 25;
  25. if (value > 400)
  26. _power = 400;
  27. }
  28. }
  29. private enum Mode
  30. {
  31. NONE,
  32. CONSOLE,
  33. DISTANCE,
  34. TIME
  35. }
  36. public FietsSimulator(String addr)
  37. {
  38. this.comport = new SerialPort(addr, 9600);
  39. comport.DataReceived += new SerialDataReceivedEventHandler(ReceiveData);
  40. comport.Open();
  41. }
  42. private void ReceiveData(object sender, SerialDataReceivedEventArgs e)
  43. {
  44. string message = comport.ReadLine().Trim();
  45. Console.WriteLine(message);
  46. if (message == "RS")
  47. {
  48. curmode = Mode.NONE;
  49. curvalue = 0;
  50. Power = 25;
  51. SendData("ACK");
  52. }
  53. else if (message == "CU")
  54. {
  55. curmode = Mode.CONSOLE;
  56. SendData("ACK");
  57. }
  58. else if (message.Contains("PW"))
  59. {
  60. if (curmode != Mode.NONE && message.Split().Length == 2)
  61. {
  62. this.Power = Int32.Parse(message.Split(' ')[1]);
  63. }
  64. else
  65. {
  66. SendData("ERROR");
  67. }
  68. }
  69. else if (message == "ST")
  70. {
  71. SendData("0\t100\t10\t20\t" + Power.ToString() + "\t600\t0504\t200\r");
  72. // pulse rpm speed * 10 distance requested_power energy mm:ss actual_power
  73. }
  74. else
  75. {
  76. SendData("ERROR");
  77. }
  78. }
  79. private void SendData(string message)
  80. {
  81. this.comport.WriteLine(message);
  82. }
  83. }
  84. }