import java.io.IOException; import javax.microedition.midlet.MIDlet; import javax.microedition.lcdui.*; public class NxtMidlet extends MIDlet implements CommandListener { private static Command exitCommand = new Command("Exit", Command.ITEM, 10); private static Command exitComm2 = new Command("Exit", Command.ITEM, 10); private static Command connectCommand = new Command("Connect", Command.BACK, 10); //private static Command connectCommand = new Command("Connect", Command.BACK, 10); public static Display pantalla; static Form mainForm; static Form secondForm; static Form winForm; static List menuDisp; static int select; private NxtBrick nxtBrick; public class Logger { NxtMidlet owner; public Logger(NxtMidlet aOwner) { owner = aOwner; } public void line( String s ) { owner.mainForm.append( s + "\n" ); } } private Logger logger; public NxtMidlet() { logger = new Logger(this); mainForm = new Form("Blue Control NXT"); try { mainForm.append(Image.createImage("/bluecontrol2.jpg")); } catch (IOException ex) { ex.printStackTrace(); } mainForm.addCommand(exitCommand); mainForm.addCommand(connectCommand); mainForm.setCommandListener(this); winForm=new Form("Ventana de Comandos"); menuDisp = new List("Menú",List.IMPLICIT); menuDisp.setTicker(new Ticker("Escoja un dispositivo Bluetooth.")); menuDisp.addCommand(exitCommand); menuDisp.setCommandListener(this); nxtBrick = new NxtBrick(logger); logger.line( "Controlador de Dispositivos NXT" ); logger.line( "Use menú inferior para acciones de conexión." ); } protected void startApp() { pantalla=Display.getDisplay(this); pantalla.setCurrent(mainForm); } public void commandAction(Command c, Displayable s) { if (c == exitCommand) { destroyApp(false); notifyDestroyed(); } if (c == exitComm2) { destroyApp(false); notifyDestroyed(); } if (c == menuDisp.SELECT_COMMAND){ // Si selecciono int sizeList=menuDisp.size(); switch(menuDisp.getSelectedIndex()){ //opcion del menu case 0:{ select=((sizeList-1)-menuDisp.getSelectedIndex());// se insertan al revès!! //Por eso la conversión!! menuDisp.deleteAll(); NxtBluetooth.semmutex=1; pantalla.setCurrent(mainForm); break; } case 1:{ //logger.line( "Index seleccionado: 1" ); select=((sizeList-1)-menuDisp.getSelectedIndex()); menuDisp.deleteAll(); NxtBluetooth.semmutex=1; pantalla.setCurrent(mainForm); break; } case 2:{ //logger.line( "Index seleccionado: 2" ); select=((sizeList-1)-menuDisp.getSelectedIndex()); menuDisp.deleteAll(); NxtBluetooth.semmutex=1; pantalla.setCurrent(mainForm); break; } case 3:{ //logger.line( "Index seleccionado: 2" ); select=((sizeList-1)-menuDisp.getSelectedIndex()); menuDisp.deleteAll(); NxtBluetooth.semmutex=1; pantalla.setCurrent(mainForm); break; } case 4:{ //logger.line( "Index seleccionado: 2" ); select=((sizeList-1)-menuDisp.getSelectedIndex()); menuDisp.deleteAll(); NxtBluetooth.semmutex=1; pantalla.setCurrent(mainForm); break; } case 5:{ //logger.line( "Index seleccionado: 2" ); select=((sizeList-1)-menuDisp.getSelectedIndex()); menuDisp.deleteAll(); NxtBluetooth.semmutex=1; pantalla.setCurrent(mainForm); break; } case 6:{ //logger.line( "Index seleccionado: 2" ); select=((sizeList-1)-menuDisp.getSelectedIndex()); menuDisp.deleteAll(); NxtBluetooth.semmutex=1; pantalla.setCurrent(mainForm); break; } case 7:{ //logger.line( "Index seleccionado: 2" ); select=((sizeList-1)-menuDisp.getSelectedIndex()); menuDisp.deleteAll(); NxtBluetooth.semmutex=1; pantalla.setCurrent(mainForm); break; } case 8:{ //logger.line( "Index seleccionado: 2" ); select=((sizeList-1)-menuDisp.getSelectedIndex()); menuDisp.deleteAll(); NxtBluetooth.semmutex=1; pantalla.setCurrent(mainForm); break; } case 9:{ //logger.line( "Index seleccionado: 2" ); select=((sizeList-1)-menuDisp.getSelectedIndex()); menuDisp.deleteAll(); NxtBluetooth.semmutex=1; pantalla.setCurrent(mainForm); break; } case 10:{ //logger.line( "Index seleccionado: 2" ); select=((sizeList-1)-menuDisp.getSelectedIndex()); menuDisp.deleteAll(); NxtBluetooth.semmutex=1; pantalla.setCurrent(mainForm); break; } case 11:{ //logger.line( "Index seleccionado: 2" ); select=((sizeList-1)-menuDisp.getSelectedIndex()); menuDisp.deleteAll(); NxtBluetooth.semmutex=1; pantalla.setCurrent(mainForm); break; } case 12:{ //logger.line( "Index seleccionado: 2" ); select=((sizeList-1)-menuDisp.getSelectedIndex()); menuDisp.deleteAll(); NxtBluetooth.semmutex=1; pantalla.setCurrent(mainForm); break; } case 13:{ //logger.line( "Index seleccionado: 2" ); select=((sizeList-1)-menuDisp.getSelectedIndex()); menuDisp.deleteAll(); NxtBluetooth.semmutex=1; pantalla.setCurrent(mainForm); break; } case 14:{ //logger.line( "Index seleccionado: 2" ); select=((sizeList-1)-menuDisp.getSelectedIndex()); menuDisp.deleteAll(); NxtBluetooth.semmutex=1; pantalla.setCurrent(mainForm); break; } case 15:{ //logger.line( "Index seleccionado: 2" ); select=((sizeList-1)-menuDisp.getSelectedIndex()); menuDisp.deleteAll(); NxtBluetooth.semmutex=1; pantalla.setCurrent(mainForm); break; } case 16:{ //logger.line( "Index seleccionado: 2" ); select=((sizeList-1)-menuDisp.getSelectedIndex()); menuDisp.deleteAll(); NxtBluetooth.semmutex=1; pantalla.setCurrent(mainForm); break; } case 17:{ //logger.line( "Index seleccionado: 2" ); select=((sizeList-1)-menuDisp.getSelectedIndex()); menuDisp.deleteAll(); NxtBluetooth.semmutex=1; pantalla.setCurrent(mainForm); break; } case 18:{ //logger.line( "Index seleccionado: 2" ); select=((sizeList-1)-menuDisp.getSelectedIndex()); menuDisp.deleteAll(); NxtBluetooth.semmutex=1; pantalla.setCurrent(mainForm); break; } case 19:{ //logger.line( "Index seleccionado: 2" ); select=((sizeList-1)-menuDisp.getSelectedIndex()); menuDisp.deleteAll(); NxtBluetooth.semmutex=1; pantalla.setCurrent(mainForm); break; } } } if (c == connectCommand) { mainForm.removeCommand(connectCommand); mainForm.deleteAll(); final Display d = Display.getDisplay(this); Thread connector = new Thread() { public void run() { try { logger.line( "Conectando..." ); nxtBrick.connect(); logger.line( "Conectado" ); NxtCanvas canvas=new NxtCanvas(nxtBrick); d.setCurrent(canvas); } catch( Exception e ) { logger.line( e.getMessage() ); logger.line( "Intente nuevamente." ); mainForm.addCommand(connectCommand); } } }; connector.start(); } } protected void destroyApp(boolean unconditional) { } protected void pauseApp() { } }