Problema al Cargar Clases

ironblade
10 de Noviembre del 2005
Hola,El problema que tengo es que estoy uniendo 3 programas 1 es un server socket el otro maneja datos de escucha por serial(SimpleRead) y el ultimo envia datos al serial(SimpleWrite),
lo que pasa es k al momento de llamar al SimpleRead quien es el que llama a SimpleWrite me da nullpointer error en la variable outputStream, de lo que me di cuenta es que al momento de llamar a la clase SimpleRead no carga su funcion principal SimpleRead y solo ejecuta el run() que carga al SimpleWrite por lo que jamás se dio inicio al puerto serial, aqui les dejo un poco de codigo para ver si me pueden ayudar. :)

public class Marco1 extends JFrame implements Runnable{
....
//Construir el marco
//public Marco1(Bufer compartido) {
public Marco1() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
SimpleRead sw1 = new SimpleRead();
Thread thread = new Thread(sw1);
thread.setDaemon(true);
thread.start();
//****
ejecutarServidor();
//****
}
catch(Exception e) {
e.printStackTrace();
}

}
//Inicialización de componentes
private void jbInit() throws Exception { ....}

public void run()
{

System.out.println("ESCUCHANDO1...");
SimpleRead sw1 = new SimpleRead();
Thread thread = new Thread(sw1);
thread.setDaemon(true);
thread.start();

while (true) {
try {
Thread.sleep(2000);
}
catch (InterruptedException e) {
e.printStackTrace();

}
}

}

.......
} // fin Marco1

//***************
class SimpleRead implements Runnable, SerialPortEventListener{
............
............
public void SimpleRead(){

boolean portFound = false;

portList = CommPortIdentifier.getPortIdentifiers();
//ubicacionCompartida = compartido;
while (portList.hasMoreElements()) {
portId = (CommPortIdentifier) portList.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
if (portId.getName().equals(defaultPort)) {
System.out.println("Found port: "+defaultPort);
jTextArea1.append("Puerto Encontrado: "+defaultPort+"n");
portFound = true;
SimpleRead reader = new SimpleRead();
try {
serialPort = (SerialPort) portId.open("SimpleReadApp", 0);
} catch (PortInUseException e) {}

try {
inputStream = serialPort.getInputStream();
} catch (IOException e) {}

try {
serialPort.addEventListener(this);
} catch (TooManyListenersException e) {}

serialPort.notifyOnDataAvailable(true);

try {
serialPort.setSerialPortParams(9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
} catch (UnsupportedCommOperationException e) {}
System.out.println("FC. LEE ");
try
{
outputStream = serialPort.getOutputStream();
} catch (IOException e) {}
try {
inputStream = serialPort.getInputStream();
} catch (IOException e) {}
try {
serialPort.addEventListener(this);
} catch (TooManyListenersException e) {}
serialPort.notifyOnDataAvailable(true);

readThread = new Thread(this);
readThread.setDaemon(true);
readThread.start();


}
}
}
if (!portFound) {
System.out.println("port " + defaultPort + " not found.");
jTextArea1.append("Puerto " + defaultPort + " No Funciona.n");
}

}

// metodo run()
public void run()
{
System.out.println("ESCUCHANDO...");
SimpleWrite sw2= new SimpleWrite(outputStream,nOpcion);
while(true)
{
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
serialPort.close();
}
}
}

.......

ironblade
10 de Noviembre del 2005
class SimpleWrite implements Runnable
{
static String XMSJ = "";

static OutputStream outputStream;

Thread t;
public SimpleWrite(OutputStream outputStream,String nOpcion)
{
System.out.println("Listo Para Enviar MSJ");
this.outputStream=outputStream;
XMSJ = nOpcion;

t=new Thread(this);
t.run();
}
public void run()
{
System.out.println(XMSJ+"****");

try{
Thread.sleep(1000);
outputStream.write(XMSJ.getBytes());
}catch(IOException e) {System.out.println(e);}
catch(InterruptedException e) {}

}
}

//***************************************************
bueno una solucion mula es poner dentro del run() de SimpleRead la llamada SimpleRead(); pero no me soluciona el problema por k queda como loco cargando el puerto y necesito que simpre este escuchando por el puerto COM.

ironblade
10 de Noviembre del 2005
Hola ya arregle el problema pero me quedo la duda de por que en la Clase Marco1 la llamar a SimpleRead no entra a la Fc. SimpleRead() es como si pasara del run hacia abajo ...