-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から受け取ったデータを渡すことです。COMprocessData(new String(chunk));

このアプローチの問題は、メソッドprocessDataが何か重いことをすると、がブロックされることserialEventです。

別のアプローチは、threadそのデータを処理するための別個のものを用意することです。これは、の実装と通信できますconcurrent.BlockingQueue。したがって、内部serialEventではデータをキューにプッシュし、終了するのを待たずに続行しますprocessData

BlockingQueueでプロデューサー/コンシューマーパターンを検索するだけで、たくさんのコード例が見つかります。

于 2013-02-20T22:08:43.820 に答える