| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- using System;
- using System.Collections.Generic;
- using System.IO.Ports;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Threading;
- namespace FietsSimulator
- {
- class FietsSimulator
- {
- private SerialPort comport;
- private Mode curmode;
- private int curvalue;
- private int _power;
- public int Power
- {
- get { return _power; }
- set
- {
- if (value >= 25 && value <= 400)
- _power = value;
- if (value < 25)
- _power = 25;
- if (value > 400)
- _power = 400;
- }
- }
- private enum Mode
- {
- NONE,
- CONSOLE,
- DISTANCE,
- TIME
- }
- public FietsSimulator(String addr)
- {
- this.comport = new SerialPort(addr, 9600);
- comport.DataReceived += new SerialDataReceivedEventHandler(ReceiveData);
- comport.Open();
- }
- private void ReceiveData(object sender, SerialDataReceivedEventArgs e)
- {
- string message = comport.ReadLine().Trim();
- Console.WriteLine(message);
- if (message == "RS")
- {
- curmode = Mode.NONE;
- curvalue = 0;
- Power = 25;
- SendData("ACK");
- }
- else if (message == "CU")
- {
- curmode = Mode.CONSOLE;
- SendData("ACK");
- }
- else if (message.Contains("PW"))
- {
- if (curmode != Mode.NONE && message.Split().Length == 2)
- {
- this.Power = Int32.Parse(message.Split(' ')[1]);
- }
- else
- {
- SendData("ERROR");
- }
- }
- else if (message == "ST")
- {
- SendData("0\t100\t10\t20\t" + Power.ToString() + "\t600\t0504\t200\r");
- // pulse rpm speed * 10 distance requested_power energy mm:ss actual_power
- }
- else
- {
- SendData("ERROR");
- }
- }
- private void SendData(string message)
- {
- this.comport.WriteLine(message);
- }
- }
- }
|