-1

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

    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());
        }
    }
}
4

1 回答 1

1

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

这种方法的问题是,如果你的方法processData做一些繁重的事情,它会阻塞serialEvent.

另一种方法是单独thread处理该数据,您可以将其与concurrent.BlockingQueue. 所以在里面serialEvent你只需将数据推送到队列并继续而不等待processData完成。

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

于 2013-02-20T22:08:43.820 回答