Java - Puerto comm

 
Vista:

Puerto comm

Publicado por Rowan (5 intervenciones) el 28/06/2007 11:45:23
Buenos Dias a Todos!

LLevo varios dias pegandome con la API javax.comm.

Mi problema es que no consigo detectar los puertos. No lo consigo con el programa de ejemplo de la API de detectar los puertos no lo consigo con el SimpleWrite. He pensado que podia ser que los puertos estubieran mal instalados, pero no, he hecho la prueba de conectar uno de los puertos al comm de un switch y comunicarme por hyperterminal y se comunican a las mil maravillas.

/////////////7Este es el codigo del SimpleWrite

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

/**
* Class declaration
*
*
* @author
* @version 1.10, 08/04/00
*/
public class ComPrest {
static Enumeration portList;
static CommPortIdentifier portId;
static String messageString = "Hello, world!";
static SerialPort serialPort;
static OutputStream outputStream;
static boolean outputBufferEmptyFlag = false;
/**
* Method declaration
*
*
* @param args
*
* @see
*/
public static void main(String[] args) {
boolean portFound = false;
String defaultPort = "/dev/term/a";

if (args.length > 0) {
defaultPort = args[0];
}

portList = CommPortIdentifier.getPortIdentifiers();

while (portList.hasMoreElements()) {
portId = (CommPortIdentifier) portList.nextElement();

if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {

if (portId.getName().equals(defaultPort)) {
System.out.println("Found port " + defaultPort);

portFound = true;

try {
serialPort =
(SerialPort) portId.open("SimpleWrite", 2000);
} catch (PortInUseException e) {
System.out.println("Port in use.");

continue;
}

try {
outputStream = serialPort.getOutputStream();
} catch (IOException e) {}

try {
serialPort.setSerialPortParams(9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
} catch (UnsupportedCommOperationException e) {}

try {
serialPort.notifyOnOutputEmpty(true);
} catch (Exception e) {
System.out.println("Error setting event notification");
System.out.println(e.toString());
System.exit(-1);
}

System.out.println(
"Writing \""+messageString+"\" to "
+serialPort.getName());

try {
outputStream.write(messageString.getBytes());
} catch (IOException e) {}

try {
Thread.sleep(2000); // Be sure data is xferred before closing
} catch (Exception e) {}
serialPort.close();
System.exit(1);
}
}
}

if (!portFound) {
System.out.println("port " + defaultPort + " not found.");
}
}

}

//////////////////////////////////////Y esto es lo que me devuelve:

port /dev/term/a not found.


////Que no se encuentran vaya.

Si alguien tiene alguna idea, algo que pueda probar...

Gracias por vuestro tiempo,

Un saludo

Rowan.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Puerto comm

Publicado por HOla (9 intervenciones) el 29/06/2007 15:03:30
Mira, si usas windows nunca te va a encontrar lo de "/dev/term/a".
Haz estos cambios:

String defaultPort = "/dev/term/a"; --> String defaultPort = "COM1";

donde pongo COM1 también es válido para COM2, ó 3. o el que tengas en tu pc.

Y estas líneas las quitas. Estas líneas hacen que lo que le pasas al método main debe ser el nombre del puerto que quieras usar.
Pero al cambiar la variable defaultPort por COM1 ya te busca esta.

if (args.length > 0) {
defaultPort = args[0];
}

Este programa no te va a buscar todos los puertos disponibles, sino que va a buscar si está o no el COM1.

Suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar