Foros del Web » Programación para mayores de 30 ;) » Java »

Error de java.lang.NullPointerException

Estas en el tema de Error de java.lang.NullPointerException en el foro de Java en Foros del Web. Mirad, me da este error y no sé porque a ver si alguién me lo puede aclarar plz esk no se como tengo que poner ...
  #1 (permalink)  
Antiguo 28/05/2011, 10:01
 
Fecha de Ingreso: junio-2010
Mensajes: 353
Antigüedad: 13 años, 10 meses
Puntos: 6
Error de java.lang.NullPointerException

Mirad, me da este error y no sé porque a ver si alguién me lo puede aclarar plz esk no se como tengo que poner la exception esta de las narizes.

El archivo original(para abrir/cerrar/hablar i leer de puertos serie) es este;

Código:
package serialporttest;
import java.util.List;

import giovynet.nativelink.SerialPort;
import giovynet.serial.Baud;
import giovynet.serial.Com;
import giovynet.serial.Parameters;

public class Main {

	/**
	 * www.giovynet.com
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			SerialPort serialPort = new SerialPort();
			List<String> portsFree;
			portsFree = serialPort.getFreeSerialPort();
			/**** If there are free ports, use the first found. ****/
                        if (portsFree!=null&&portsFree.size()>0) {
				for (String free : portsFree) {
					System.out.println("Free port: "+free);
				}
				/****Open the port.****/
                                Parameters parameters = new Parameters();
				parameters.setPort(portsFree.get(0));
				parameters.setBaudRate(Baud._9600);
				System.out.println("Open port: "+portsFree.get(0));
				Com com = new Com(parameters);
                                /****Send data.****/
				String data = "Test Giovynet Driver.";
				System.out.println("<Send Data>");
				for (int i = 0; i < data.toCharArray().length; i++) {
					Thread.sleep(400);
					com.sendSingleData(data.toCharArray()[i]);
					System.out.print(data.toCharArray()[i]);
				}

                                /****Close the port.****/
				System.out.println("\n<End Send Data>");
				com.close();
			}else {
				System.out.println("No Free ports!!!");
			}
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

}
Tengo las siguientes clases;
EscombraRobot
Código:
String Estat;
MotorOrdres motors[] = new MotorOrdres[2];

public EscombraRobot(){

motors[1] = new MotorOrdres(1);
motors[0] = new MotorOrdres(0);
}
public void  Endevant()throws Throwable{
    
     Estat="Endevant";
motors[0].Avancar(Estat);
motors[1].Avancar(Estat);

}
MotorOrdres
Código:
Comunicacio Comunicacio;
     private static Com com;
int idMotor;

    MotorOrdres(int motor) {// Cada vez que hago motor.metodo -> paso el motor por aqui?
        idMotor=motor;
    }


    void Avancar(String Estat)throws Throwable {

        com =Comunicacio.AbrirPuerto();
        Comunicacio.EnviarSenyal(Estat,idMotor,com);

    }

Comunicacio

Código:
 private String Port;
    private Com com;

    public Comunicacio() {

        Port = "COM4";
    }

    public  Com AbrirPuerto() throws Throwable {
        try{Parameters Settings = new Parameters();
        Settings.setPort(Port);
        Settings.setBaudRate(Baud._9600);

        com = new Com(Settings);
        } catch (NoFreePorts error){
          System.out.println(error);
      }
        return com;
    }

    /**
     * Envia una String de ordre+mortorid al robotEscombra exemple-> endevant1
     */
    public void EnviarSenyal(String orden, int motor, Com com) throws Throwable {
        orden += motor;
        for (int i = 0; i < orden.toCharArray().length; i++) {
            //Thread.sleep(400);
            com.sendSingleData(orden.toCharArray()[i]);
        }
        CerrarPuerto(com);
    }
 public void CerrarPuerto(Com com) throws Throwable {
        com.close();
    }
Main que quiero que sea el controlador
Código:
   public class Main {
    private static Com com;

	/**
	 * www.giovynet.com
	 * @param args
	 */
	public static void main(String[] args) throws Throwable  {
           
try {
			/**** If there are free ports, use the first found. ****/
                	SerialPort serialPort = new SerialPort();
			List<String> portsFree;
			portsFree = serialPort.getFreeSerialPort();
                        if (portsFree!=null&&portsFree.size()>0) {
                            // Lista de Puertos disponibles
				for (String free : portsFree) {
					System.out.println("Free port: "+free);
				}
EscombraRobot e;
e= new EscombraRobot();
      e.Endevant();
      Comunicacio Comunicacio = new Comunicacio();

com=Comunicacio.AbrirPuerto();
      String SenyalRecibida=Comunicacio.LeerSenyal(com);
                                System.out.println("Senyal recibida de robot: "+SenyalRecibida);

				
			}else {
				System.out.println("No Free ports!!!");
			}
		} catch (NoFreePorts error){
          System.out.println(error);
      }

	}

    }
Se me olvidava xd, el error que me da es este;

Exception in thread "main" java.lang.NullPointerException
at ProjecteSintesi.Model.MotorOrdres.Avancar(MotorOrd res.java:27)
at ProjecteSintesi.Model.EscombraRobot.Endevant(Escom braRobot.java:37)
at ProjecteSintesi.Controlador.Main.main(Main.java:34 )



Explicación del código;
tengo la clase EscombraRobot que es la que representa el robot en si i tiene las ordenes para moverse, a la izquierda derecha etc.. sólo he puesta "endevant" que es adelante, entonces hago;
motors[0].Avancar(Estat);
motors[1].Avancar(Estat);
Para que se dirija hacia adelante el robot, i a la clase motorsOrdres(que representa los motores, tiene 2) tengo 3 opciones; adelante,atras i parado
Entonces esta habla con la clase "Comuncacio" que es la que envia la orden y el motor que tiene que moverse por el puerto serie.

Última edición por marcwolf; 28/05/2011 a las 10:10
  #2 (permalink)  
Antiguo 28/05/2011, 12:52
 
Fecha de Ingreso: junio-2010
Mensajes: 353
Antigüedad: 13 años, 10 meses
Puntos: 6
Respuesta: Error de java.lang.NullPointerException

Lo he solucionado me faltava new comunicacio en motorOrdres, lo que pasa ahora es que se queda pillado en el segundo motor osea el motor[1], porque? porque? porqué?
  #3 (permalink)  
Antiguo 28/05/2011, 12:56
 
Fecha de Ingreso: junio-2010
Mensajes: 353
Antigüedad: 13 años, 10 meses
Puntos: 6
Respuesta: Error de java.lang.NullPointerException

Me va muy bien este foro XD, no me contesta nadie y voy solucionando yo solo las cosas, el problema era que no le dava "\n" a la cadena enviada y por eso se me kedava pillado en while
  #4 (permalink)  
Antiguo 28/05/2011, 15:10
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Error de java.lang.NullPointerException

Plantéate una cosa, ¿qué hubiera pasado si los cuatro minutos de diferencia entre tu pregunta y auto-respuesta los hubieras dedicado a buscar la respuesta antes de hacer la pregunta?

Si buscas ayuda, haz preguntas concretas, si buscas alguien que audite tu código, no esperes una avalancha de respuestas.

¿Crees que es entretenido leer todas esas líneas de código o replicar tu proyecto para encontrar tus fallos?
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #5 (permalink)  
Antiguo 28/05/2011, 15:23
 
Fecha de Ingreso: junio-2010
Mensajes: 353
Antigüedad: 13 años, 10 meses
Puntos: 6
Respuesta: Error de java.lang.NullPointerException

No me quejo de nada eh! nomalinterpretes mis mensajes, este foro esta muy bien me ayudado a muchas cosas pero en esta no vi una solución clara y al intentar hacer algo grande pues me acabo desesperando y normalmente sólo tengo que relajarme y mirar el código.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 05:47.