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); } } } }