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

comunicacion con puerto com

Estas en el tema de comunicacion con puerto com en el foro de Java en Foros del Web. Hola Necesito comunicarme con el puerto com de mi PC para controlar un automata. Todo esto en ubuntu. ¿Alguien me puede ayudar?...
  #1 (permalink)  
Antiguo 25/04/2007, 05:06
 
Fecha de Ingreso: febrero-2007
Mensajes: 1
Antigüedad: 17 años, 2 meses
Puntos: 0
comunicacion con puerto com

Hola
Necesito comunicarme con el puerto com de mi PC para controlar un automata.
Todo esto en ubuntu.
¿Alguien me puede ayudar?
  #2 (permalink)  
Antiguo 08/05/2007, 02:45
 
Fecha de Ingreso: abril-2007
Mensajes: 5
Antigüedad: 17 años
Puntos: 0
Re: comunicacion con puerto com

Yo he comprobado este codigo en windows2000 y funciona. creo que no deberia de dar problemas con ubuntu, lo único tendras que añadir el api de comunicaciones para linux. yo he usado el javacomm20-win32.


package proiektua;

import java.io.*;
import java.util.*;
import javax.comm.*;

public class proba2_serie implements Runnable,SerialPortEventListener {
static CommPortIdentifier idPuerto;
static Enumeration listaPuertos;
InputStream entrada;
SerialPort puertoSerie;
Thread tLectura;
static String h="";

// En este ejemplo 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 proba2_serie() {
// Si el puerto no está en uso, se intenta abrir
try {
puertoSerie = (SerialPort)idPuerto.open( "AplLectura",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( 2400,
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( 20000 );
} catch( InterruptedException e ) {}
}


public void serialEvent( SerialPortEvent _ev ) {

String[] datu_serie= new String[100];
int i=0;
System.out.println("evento bat gertatu da");
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[8];
try {
while( entrada.available() > 0 ) {


int nBytes = entrada.read( bufferLectura );
//byte c=(byte)entrada.read( bufferLectura );

}

} catch( IOException e ) {}
// System.out.println(bufferLectura[0]);
//System.out.print( new String(bufferLectura) );
h=h + new String(bufferLectura);
break;
}

datu_serie=StringtoArray(h,h);
System.out.println(datu_serie[2]);
//System.out.println(h);
}


public static void main( String[] args ) {
// 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();

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
proba2_serie lector = new proba2_serie();
}
}
}
}
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 23:47.