Su página web es http://rxtx.qbang.org/
La instalación es muy simple os bajais la librería en la que os viene:
- RXTXcomm.jar (librería que implementa la especificación de Java Comunication API)
- Directorio con drivers para Linux
- Directorio con drivers para Solaris
- Directorio con drivers para Mac_OS_X
- Directorio con drivers para Windows
Añadis RXTXcomm.jar como librería a vuestro proyecto java y el driver lo meteis en la instalación del jre\bin
Ahora la implementación de una conexión al puerto serie.
public class EjemploRXTX {
static CommPortIdentifier portId;
static CommPortIdentifier saveportId;
static Enumeration portList;
static InputStream inputStream;
static OutputStream outputStream;
static BufferedInputStream bufferedInputStream;
static SerialPort serialPort;
public static void main(String[] args){
boolean gotPort = false;
String port;
portList = CommPortIdentifier.getPortIdentifiers();
while (portList.hasMoreElements()) {
portId = (CommPortIdentifier) portList.nextElement(); //get next port to check
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
if ( portId.getName().equals("COM4") ) {
port = portId.getName();
gotPort = true;
}
if (gotPort == true) {
try {
serialPort = (SerialPort)portId.open("SMSSender", 2000);
} catch (PortInUseException ex) {
ex.printStackTrace();
}
try {
outputStream = serialPort.getOutputStream();
} catch (IOException ex) {
ex.printStackTrace();
}
try {
serialPort.setSerialPortParams(19200,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_2,
SerialPort.PARITY_NONE
);
} catch (UnsupportedCommOperationException ex) {
ex.printStackTrace();
}
try {
inputStream = serialPort.getInputStream();
bufferedInputStream = new BufferedInputStream(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
serialPort.notifyOnDataAvailable(true);
}
}
}
//Escribir en el puerto serie
try {
if (!(outputStream == null))
outputStream.write("array de váis que queremos enviar");
byte[] readBuffer = new byte[1];
boolean read = false;
while(!read) {
try {
String getInfo = "";
Thread.sleep(100);
while (bufferedInputStream.available() > 0) {
int numBytes = bufferedInputStream.read(readBuffer);
getInfo += new String(readBuffer);
read = true;
}
feedback += getInfo;
int length = getInfo.length();
} catch (Exception e){
e.printStackTrace();
}
}
} catch (IOException e){
e.printStackTrace();
}
}
En este ejemplo se usa por debajo una plataforma windows como podéis ver en el nombre del puerto "COM4" en un linux por ejemplo este sería algo como "/dev/ttyS0".
Tambíen para cada caso teneis que tener en cuenta que los datos de conexión con el dispositivo son particulares a cada dispositivo:
serialPort.setSerialPortParams(19200,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_2,
SerialPort.PARITY_NONE
);
El dispositivo de este ejemplo trabajaba a 19200 baudios, tamaño de mensaje 8 bits, sin paridad y con el bit de parada 2.
Si ajustais estas cosas ya os debe funcionar para cualquier dispositivo.