75 lines
2.5 KiB
C#
75 lines
2.5 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Collections.Generic;
|
|
|
|
namespace serial
|
|
{
|
|
class Serial
|
|
{
|
|
private static SerialCommands.Commands extractCommand(string inp){
|
|
int[] cmd = new int[4];
|
|
int newInt;
|
|
int counter = 0;
|
|
foreach (char c in inp.ToCharArray()){
|
|
try{
|
|
newInt = Int32.Parse(c.ToString());
|
|
cmd[counter] = newInt;
|
|
counter += 1;
|
|
}
|
|
catch (System.FormatException){
|
|
break;
|
|
}
|
|
catch (System.IndexOutOfRangeException){
|
|
return SerialCommands.Commands.UnknownCommand;
|
|
}
|
|
}
|
|
return (SerialCommands.Commands) cmd.Sum();
|
|
}
|
|
public static string[] extractArgs(string inp, int skip){
|
|
try{
|
|
inp = inp.Substring(skip);
|
|
}
|
|
catch(System.ArgumentOutOfRangeException){
|
|
return new string[0];
|
|
}
|
|
return inp.Split(' ');
|
|
}
|
|
|
|
static void Main(string[] cliArgs)
|
|
{
|
|
TextWriter errorWriter = Console.Error;
|
|
string input;
|
|
SerialCommands.Commands cmd;
|
|
string cmdAndArgs;
|
|
string[] args;
|
|
int cmdDigitCount;
|
|
|
|
while (true){
|
|
cmd = SerialCommands.Commands.UnknownCommand;
|
|
while (cmd == SerialCommands.Commands.UnknownCommand){
|
|
cmdAndArgs = Console.ReadLine();
|
|
if (cmdAndArgs == null){
|
|
cmd = SerialCommands.Commands.Exit;
|
|
break;
|
|
}
|
|
cmd = extractCommand(cmdAndArgs);
|
|
if (cmd == SerialCommands.Commands.Exit){return;}
|
|
else if (cmd == SerialCommands.Commands.UnknownCommand){break;}
|
|
cmdDigitCount = cmd.ToString().Length;
|
|
args = extractArgs(cmdAndArgs, cmdDigitCount);
|
|
}
|
|
switch(cmd){
|
|
case SerialCommands.Commands.Exit:
|
|
return;
|
|
default:
|
|
case SerialCommands.Commands.UnknownCommand:
|
|
errorWriter.Write("Unknown command");
|
|
break;
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|