KettlerBikeComm.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.IO.Ports;
  7. using System.Threading;
  8. namespace Fietsclient
  9. {
  10. class KettlerBikeComm
  11. {
  12. private string _portname;
  13. private int baudrate = 9600;
  14. private string _bufferOut;
  15. private string[] _bufferIn;
  16. private SerialPort ComPort;
  17. public KettlerBikeComm(string port)
  18. {
  19. this._portname = port;
  20. }
  21. public void initComm()
  22. {
  23. ComPort = new SerialPort(_portname, this.baudrate);
  24. ComPort.Open();
  25. Console.WriteLine("test");
  26. ComPort.WriteLine("RS");
  27. Console.Write(ComPort.ReadLine());
  28. Console.WriteLine("end of message");
  29. ComPort.DataReceived += new SerialDataReceivedEventHandler(ComPort_DataReceived);
  30. while(true)
  31. {
  32. Thread.Sleep(1000);
  33. ComPort.WriteLine("ST");
  34. }
  35. }
  36. public void sendData(string data)
  37. {
  38. _bufferOut = data;
  39. ComPort.WriteLine(data);
  40. }
  41. private void ComPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
  42. {
  43. string buffer = ComPort.ReadLine();
  44. switch(buffer) //kijk wat er binnenkomt
  45. {
  46. case "ERROR": //wanneer "Error"
  47. if (_bufferOut == "RS") sendData("RS"); //gewoon nog een keer proberen...
  48. return;
  49. case "ACK": // ACK betekent acknowledged.
  50. return;
  51. default: // alle andere waarden.
  52. return;
  53. }
  54. buffer = buffer.TrimEnd('\r');
  55. Console.WriteLine(buffer);
  56. _bufferIn = buffer.Split('\t');
  57. }
  58. }
  59. }