using System;
using System.Collections.Generic;
using System.Xml;
//using MonoBrick.EV3;//use this to run the example on the EV3
//using MonoBrick.NXT;//use this to run the example on the NXT
namespace Application
{
public static class Program
{
public static ConsoleKeyInfo cki;
private static BrickManager brickManager;
///
///
///
///
static void Main(string[] args)
{
brickManager = BrickManager.getInstance();
do
{
Console.WriteLine("");
Console.WriteLine("*** MAIN MENU: Refresh list, Connect brick, Test brick, Quit");
cki = Console.ReadKey(true); //press a key
switch (cki.Key)
{
case ConsoleKey.R:
refreshBrickList();
break;
case ConsoleKey.C:
connectToABrick();
break;
case ConsoleKey.T:
testBrickWithConsole();
break;
}
} while (cki.Key != ConsoleKey.Q);
}
///
///
///
private static void refreshBrickList()
{
Console.WriteLine("");
Console.WriteLine("-- List of known bricks:");
List brickList = brickManager.getListOfAttachedBricks();
foreach (string brick in brickList)
Console.WriteLine(brick);
}
///
///
///
private static void connectToABrick()
{
Console.WriteLine("");
Console.WriteLine("-- Choose a brick: # to choose, or Back");
List brickList = brickManager.getListOfAttachedBricks();
int listSize = brickList.Count;
for (int i = 0; i < listSize; i++)
{
string thisBrick = brickList[i];
if (!thisBrick.Contains("["))
Console.WriteLine("Hit '" + i + "' for " + thisBrick);
}
cki = Console.ReadKey(true); //press a key
bool bNumberHit = false;
int hitNumber = -1;
switch (cki.Key)
{
case ConsoleKey.D0:
bNumberHit = true;
hitNumber = 0;
break;
case ConsoleKey.D1:
bNumberHit = true;
hitNumber = 1;
break;
case ConsoleKey.D2:
bNumberHit = true;
hitNumber = 2;
break;
case ConsoleKey.D3:
bNumberHit = true;
hitNumber = 3;
break;
case ConsoleKey.D4:
bNumberHit = true;
hitNumber = 4;
break;
case ConsoleKey.D5:
bNumberHit = true;
hitNumber = 5;
break;
case ConsoleKey.D6:
bNumberHit = true;
hitNumber = 6;
break;
case ConsoleKey.D7:
bNumberHit = true;
hitNumber = 7;
break;
case ConsoleKey.D8:
bNumberHit = true;
hitNumber = 8;
break;
case ConsoleKey.D9:
bNumberHit = true;
hitNumber = 9;
break;
}
if (bNumberHit)
{
string selectedBrick = brickList[hitNumber];
if (!selectedBrick.Contains("["))
{
bool isEv3 = true;
Console.WriteLine("...Is this an EV3? Yes, No");
cki = Console.ReadKey(true); //press a key
switch (cki.Key)
{
case ConsoleKey.N:
isEv3 = false;
break;
}
GenericBrick newBrick = brickManager.getBrickByName(selectedBrick, isEv3);
if (newBrick != null)
Console.WriteLine("~ Connection status = " + newBrick.getStateName());
}
}
}
public static void testBrickWithConsole()
{
Console.WriteLine("");
Console.WriteLine("-- Choose a brick: # to choose, or Back");
List brickList = brickManager.getListOfAttachedBricks();
int listSize = brickList.Count;
for (int i = 0; i < listSize; i++)
{
string thisBrick = brickList[i];
if (thisBrick.Contains("["))
Console.WriteLine("Hit '" + i + "' for " + thisBrick);
}
cki = Console.ReadKey(true); //press a key
bool bNumberHit = false;
int hitNumber = -1;
switch (cki.Key)
{
case ConsoleKey.D0:
bNumberHit = true;
hitNumber = 0;
break;
case ConsoleKey.D1:
bNumberHit = true;
hitNumber = 1;
break;
case ConsoleKey.D2:
bNumberHit = true;
hitNumber = 2;
break;
case ConsoleKey.D3:
bNumberHit = true;
hitNumber = 3;
break;
case ConsoleKey.D4:
bNumberHit = true;
hitNumber = 4;
break;
case ConsoleKey.D5:
bNumberHit = true;
hitNumber = 5;
break;
case ConsoleKey.D6:
bNumberHit = true;
hitNumber = 6;
break;
case ConsoleKey.D7:
bNumberHit = true;
hitNumber = 7;
break;
case ConsoleKey.D8:
bNumberHit = true;
hitNumber = 8;
break;
case ConsoleKey.D9:
bNumberHit = true;
hitNumber = 9;
break;
}
string selectedBrick = brickList[hitNumber];
if (bNumberHit && selectedBrick.Contains("["))
{
string selectedBrickName = selectedBrick.Split(' ')[0];
GenericBrick genBrick = brickManager.getBrickByName(selectedBrickName);
sbyte speed = 0;
Console.WriteLine("");
Console.WriteLine("~~~ ^ up, v down, Stop motors, Halt programs, Reset broken connection, Back");
do
{
int state = GenericBrick.STATE_NEW;
cki = Console.ReadKey(true); //press a key
switch (cki.Key)
{
case ConsoleKey.UpArrow:
if (speed < 100)
speed = (sbyte)(speed + 10);
state = genBrick.setMotor(GenericBrick.MOTOR_A, speed);
Console.WriteLine("Motor A speed set to " + speed + " [" + GenericBrick.getStateName(state) + "]");
break;
case ConsoleKey.DownArrow:
if (speed > -100)
speed = (sbyte)(speed - 10);
state = genBrick.setMotor(GenericBrick.MOTOR_A, speed);
Console.WriteLine("Motor A speed set to " + speed + " [" + GenericBrick.getStateName(state) + "]");
break;
case ConsoleKey.S:
state = genBrick.stopAllMotors();
speed = 0;
Console.WriteLine("Stop all motors! [" + GenericBrick.getStateName(state) + "]");
break;
case ConsoleKey.H:
state = genBrick.stopAllPrograms();
Console.WriteLine("Stop all programs! [" + GenericBrick.getStateName(state) + "]");
break;
case ConsoleKey.R:
state = genBrick.resetBrokenState();
Console.WriteLine("Resetting broken state... [" + GenericBrick.getStateName(state) + "]");
break;
}
} while (cki.Key != ConsoleKey.B);
}
}
}
}