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

una ayudita urgente

Estas en el tema de una ayudita urgente en el foro de Java en Foros del Web. hola a todos este programa lee datos desde el puerto serial. Lo que me gustaria es poder hacerlo en una clase sola osea algo asi. ...
  #1 (permalink)  
Antiguo 03/03/2006, 15:31
 
Fecha de Ingreso: diciembre-2005
Ubicación: Venezuela
Mensajes: 19
Antigüedad: 18 años, 4 meses
Puntos: 1
Pregunta una ayudita urgente

hola a todos este programa lee datos desde el puerto serial. Lo que me gustaria es poder hacerlo en una clase sola osea algo asi.
ya que e intentado relizarlo pero el programita no me corre.

les agradeceria mucho la uyuda y gracias de antemano.
class primera{
el programa de abajo
}
class otra{
public void serialEvent( SerialPortEvent _ev ) {
primera prueba = new primera();
}
}


/**
*
* @author
*/
import java.io.*;
import java.util.*;
import javax.comm.*;

class atenea1 extends Thread implements SerialPortEventListener {
static CommPortIdentifier idPuerto;
static Enumeration listaPuertos;
InputStream entrada;
SerialPort puertoSerie;
String nomesc = new String();
byte[] bufferLectura = new byte[1];
//Thread tLectura;

// se implementa un thread que es el que se encarga de
// que la aplicación se quede esperando en el puerto que se haya
// abierto a que se reciban datos.
// Primero abre el puerto y luego le fija los parámetros
public atenea1() {
// Si el puerto no está en uso, se intenta abrir
try {
puertoSerie = (SerialPort)idPuerto.open( "Atenea",2000 );
} catch( PortInUseException e ) {}
// Se obtiene un canal de entrada
try {
entrada = puertoSerie.getInputStream();
} catch( IOException e ) {}

// Añadimos un receptor de eventos para estar informados de lo
// que suceda en el puerto
try {
puertoSerie.addEventListener( this );
} catch( TooManyListenersException e ) {}

// Hacemos que se nos notifique cuando haya datos disponibles
// para lectura en el buffer de la puerta
puertoSerie.notifyOnDataAvailable( true );

// Se fijan los parámetros de comunicación del puerto
try {
puertoSerie.setSerialPortParams( 9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE );
} catch( UnsupportedCommOperationException e ) {}

// Se crea y lanza el thread que se va a encargar de quedarse
// esperando en la puerta a que haya datos disponibles
//tLectura = new Thread( this );
//tLectura.start();

}

public void run() {

try {
// En los threads, hay que procurar siempre que haya algún
// método de escape, para que no se queden continuamente
// bloqueados, en este caso, la comprobación de si hay datos
// o no disponibles en el buffer de la puerta, se hace
// intermitentemente
Thread.sleep(0);
} catch( InterruptedException e ) {}
}


public void serialEvent( SerialPortEvent _ev ) {
switch( _ev.getEventType() ) {
// La mayoría de los eventos no se trata, éstos son los
// que se producen por cambios en las líneas de control del
// puerto que se está monitorizando
case SerialPortEvent.BI:
case SerialPortEvent.OE:
case SerialPortEvent.FE:
case SerialPortEvent.PE:
case SerialPortEvent.CD:
case SerialPortEvent.CTS:
case SerialPortEvent.DSR:
case SerialPortEvent.RI:
case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
break;
// Cuando haya datos disponibles se leen y luego se
// imprime lo recibido en la consola
case SerialPortEvent.DATA_AVAILABLE:
byte[] bufferLectura = new byte[1];
try {
while( entrada.available() > 0 ) {
int nBytes = entrada.read( bufferLectura );
}
String datos = new String(bufferLectura);
nomesc = nomesc+datos;
//System.out.print( new String(bufferLectura) );
} catch( IOException e ) {}
break;
}





}

public static void main( String[] args ) {
String datos = new String();
// Lista de los puertos disponibles en la máquina. Se carga en el
// mimo momento en que se inicia la JVM de Java

listaPuertos = CommPortIdentifier.getPortIdentifiers();
//listaPuertos = CommPortIdentifier.getPortIdentifiers();

while( listaPuertos.hasMoreElements() ) {
idPuerto = (CommPortIdentifier)listaPuertos.nextElement();
if( idPuerto.getPortType() == CommPortIdentifier.PORT_SERIAL ){
// if( idPuerto.getName().equals("/dev/term/a") ) { // UNIX
if( idPuerto.getName().equals("COM1") ){ // WINDOWS
// Lector del puerto, se quedará esperando a que llegue algo
// al puerto

atenea1 lector = new atenea1();



}
}
}


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




La zona horaria es GMT -6. Ahora son las 04:21.