Parse ValueSet
This commit is contained in:
@@ -15,10 +15,16 @@ namespace ErgometerApplication
|
|||||||
public static ComPort ComPort { get; }
|
public static ComPort ComPort { get; }
|
||||||
public static TcpClient Doctor { get; }
|
public static TcpClient Doctor { get; }
|
||||||
public static List<Meting> Metingen { get; }
|
public static List<Meting> Metingen { get; }
|
||||||
|
public static List<ChatMessage> Chat { get; }
|
||||||
|
|
||||||
|
public static string Name;
|
||||||
|
|
||||||
public static int Session;
|
public static int Session;
|
||||||
public static bool Loggedin;
|
public static bool Loggedin;
|
||||||
|
|
||||||
|
private static Thread t;
|
||||||
|
private static bool running;
|
||||||
|
|
||||||
public static string HOST = "127.0.0.1";
|
public static string HOST = "127.0.0.1";
|
||||||
public static int PORT = 8888;
|
public static int PORT = 8888;
|
||||||
|
|
||||||
@@ -27,7 +33,11 @@ namespace ErgometerApplication
|
|||||||
ComPort = new ComPort();
|
ComPort = new ComPort();
|
||||||
Doctor = new TcpClient();
|
Doctor = new TcpClient();
|
||||||
Metingen = new List<Meting>();
|
Metingen = new List<Meting>();
|
||||||
|
Chat = new List<ChatMessage>();
|
||||||
|
|
||||||
|
t = new Thread(run);
|
||||||
|
|
||||||
|
Name = "Unknown";
|
||||||
Session = 0;
|
Session = 0;
|
||||||
Loggedin = false;
|
Loggedin = false;
|
||||||
}
|
}
|
||||||
@@ -37,12 +47,16 @@ namespace ErgometerApplication
|
|||||||
if (!Doctor.Connected)
|
if (!Doctor.Connected)
|
||||||
{
|
{
|
||||||
Doctor.Connect(HOST, PORT);
|
Doctor.Connect(HOST, PORT);
|
||||||
|
Name = name;
|
||||||
|
|
||||||
NetCommand net = NetHelper.ReadNetCommand(Doctor);
|
NetCommand net = NetHelper.ReadNetCommand(Doctor);
|
||||||
if (net.Type == NetCommand.CommandType.SESSION)
|
if (net.Type == NetCommand.CommandType.SESSION)
|
||||||
Session = net.Session;
|
Session = net.Session;
|
||||||
else
|
else
|
||||||
throw new Exception("Session not assigned");
|
throw new Exception("Session not assigned");
|
||||||
|
|
||||||
|
running = true;
|
||||||
|
t.Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(! Loggedin)
|
if(! Loggedin)
|
||||||
@@ -101,6 +115,7 @@ namespace ErgometerApplication
|
|||||||
NetHelper.SendNetCommand(Doctor, new NetCommand(NetCommand.CommandType.LOGOUT, Session));
|
NetHelper.SendNetCommand(Doctor, new NetCommand(NetCommand.CommandType.LOGOUT, Session));
|
||||||
Loggedin = false;
|
Loggedin = false;
|
||||||
Doctor.Close();
|
Doctor.Close();
|
||||||
|
running = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -115,5 +130,76 @@ namespace ErgometerApplication
|
|||||||
|
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void run()
|
||||||
|
{
|
||||||
|
while(running)
|
||||||
|
{
|
||||||
|
if(Doctor.Available > 0)
|
||||||
|
{
|
||||||
|
NetCommand command = NetHelper.ReadNetCommand(Doctor);
|
||||||
|
ParseCommand(command);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void ParseCommand(NetCommand command)
|
||||||
|
{
|
||||||
|
switch(command.Type)
|
||||||
|
{
|
||||||
|
case NetCommand.CommandType.VALUESET:
|
||||||
|
ParseValueSet(command);
|
||||||
|
break;
|
||||||
|
case NetCommand.CommandType.CHAT:
|
||||||
|
Chat.Add(new ChatMessage(Name, command.ChatMessage));
|
||||||
|
break;
|
||||||
|
case NetCommand.CommandType.RESPONSE:
|
||||||
|
Console.WriteLine(command.Response.ToString());
|
||||||
|
break;
|
||||||
|
case NetCommand.CommandType.SESSION:
|
||||||
|
Session = command.Session;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new FormatException("Error in Netcommand: Received command not recognized");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void ParseValueSet(NetCommand command)
|
||||||
|
{
|
||||||
|
switch(command.Value)
|
||||||
|
{
|
||||||
|
case NetCommand.ValueType.DISTANCE:
|
||||||
|
ComPort.Write("RS");
|
||||||
|
ComPort.Read();
|
||||||
|
Thread.Sleep(200);
|
||||||
|
ComPort.Write("PD " + command.SetValue.ToString());
|
||||||
|
ComPort.Read();
|
||||||
|
break;
|
||||||
|
case NetCommand.ValueType.ENERGY:
|
||||||
|
ComPort.Write("RS");
|
||||||
|
ComPort.Read();
|
||||||
|
Thread.Sleep(200);
|
||||||
|
ComPort.Write("PE " + command.SetValue.ToString());
|
||||||
|
ComPort.Read();
|
||||||
|
break;
|
||||||
|
case NetCommand.ValueType.POWER:
|
||||||
|
ComPort.Write("RS");
|
||||||
|
ComPort.Read();
|
||||||
|
Thread.Sleep(200);
|
||||||
|
ComPort.Write("PW " + command.SetValue.ToString());
|
||||||
|
ComPort.Read();
|
||||||
|
break;
|
||||||
|
case NetCommand.ValueType.TIME:
|
||||||
|
ComPort.Write("RS");
|
||||||
|
ComPort.Read();
|
||||||
|
Thread.Sleep(200);
|
||||||
|
string time = (command.SetValue / 60) + ":" + (command.SetValue % 60);
|
||||||
|
ComPort.Write("PT " + time);
|
||||||
|
ComPort.Read();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new FormatException("Error in NetCommand: ValueSet is not recognized");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user