这是方法,我想从这个方法中获取变量数据,以便在另一个方法中使用它。
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());
}
}
}
答案 0 :(得分:1)
这取决于您要实现的目标,最简单的方法是直接从processData
调用另一个方法(比如名称serialEvent
),并将您从COM
收到的数据传递给它{1}}端口例如processData(new String(chunk));
这种方法的问题在于,如果您的方法processData
做了很多事情,它会阻止serialEvent
。
替代方法是使用单独的thread
来处理该数据,您可以将这些数据传递给concurrent.BlockingQueue
的实现。因此,在serialEvent
内,您只需将数据推送到队列并继续,而无需等待processData
完成。
只需使用BlockingQueue搜索Producer / Consumer模式,您就会找到大量代码示例。