从特定端口获取数据

时间:2013-02-20 21:55:58

标签: java methods serial-port

这是方法,我想从这个方法中获取变量数据,以便在另一个方法中使用它。

    public synchronized void serialEvent(SerialPortEvent oEvent) {
    if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
        try {
            int available = input.available();
            byte chunk[] = new byte[available];
            input.read(chunk, 0, available);

            // Displayed results are codepage dependent

            data =new String(chunk);

        } catch (Exception e) {
            System.err.println(e.toString());
        }
    }
}

1 个答案:

答案 0 :(得分:1)

这取决于您要实现的目标,最简单的方法是直接从processData调用另一个方法(比如名称serialEvent),并将您从COM收到的数据传递给它{1}}端口例如processData(new String(chunk));

这种方法的问题在于,如果您的方法processData做了很多事情,它会阻止serialEvent

替代方法是使用单独的thread来处理该数据,您可以将这些数据传递给concurrent.BlockingQueue的实现。因此,在serialEvent内,您只需将数据推送到队列并继续,而无需等待processData完成。

只需使用BlockingQueue搜索Producer / Consumer模式,您就会找到大量代码示例。