GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Problemas com comunicacao serial


#1

Boa tarde a todos!

estou tentando desenvolver um aplicativo que comunique serialmente com algum dispositivo (PC -> dispositivo serial).
Estou utilizando o rxtxlib. Eu conseguir fazer essa comunicacao a algum tempo atras, mas quando tento dinovo o console imprime o seguinte alera.

RXTX Warning: Removing stale lock file. /var/lock/LCK..ttyUSB0.

O codigo que utilizei foi o seguinte

[i]import gnu.io.CommPort;
import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class ComunicacaoSerial {

public ComunicacaoSerial() {
    super();
}

void connect(String portName) throws Exception {
    CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier(portName);
    if (portIdentifier.isCurrentlyOwned()) {
        System.out.println("Error: Port is currently in use");
    } else {
        CommPort commPort = portIdentifier.open(this.getClass().getName(), 2000);

        if (commPort instanceof SerialPort) {
            SerialPort serialPort = (SerialPort) commPort;
            serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);

            InputStream in = serialPort.getInputStream();
            OutputStream out = serialPort.getOutputStream();

            (new Thread(new SerialReader(in))).start();
            (new Thread(new SerialWriter(out))).start();

        } else {
            System.out.println("Error: Only serial ports are handled by this example.");
        }
    }
}

/** */
public static class SerialReader implements Runnable {

    InputStream in;

    public SerialReader(InputStream in) {
        this.in = in;
    }

    @Override
    public void run() {
        byte[] buffer = new byte[1024];
        int len = -1;
        try {
            while ((len = this.in.read(buffer)) > -1) {
                System.out.print(new String(buffer, 0, len));
            }
        } catch (IOException e) {
        }
    }
}

/** */
public static class SerialWriter implements Runnable {

    OutputStream out;

    public SerialWriter(OutputStream out) {
        this.out = out;
    }

    @Override
    public void run() {
        try {
            int c = 0;
            while ((c = System.in.read()) > -1) {
                this.out.write(c);
            }
        } catch (IOException e) {
        }
    }
}

public static void main(String[] args) {

    try {
        (new ComunicacaoSerial()).connect("/dev/ttyUSB0");

    } catch (Exception e) {
        // TODO Auto-generated catch block
    }
}

}[/i][b]


#2