1

rs232 経由でデバイスに接続するプログラムを作成しました。接続を閉じて、同じアプリケーションから再度開き直そうとするまで、すべて問題なく動作します。次の例外が発生します。

javax.comm.PortInUseException: Port currently owned by controller.Application
        at javax.comm.CommPortIdentifier.open(CommPortIdentifier.java:310)
        at controller.Application.connect(Application.java:30)
        at controller.Application.send(Application.java:63)

アプリケーションを完全に閉じて再起動すると、ポートに再び接続できます。しかし、アプリケーション全体を閉じることなく、そのポートを再度使用する必要があります。以下に示すようにポートを閉じようとしましたが、思いどおりに機能しません。

public void disconnect() {
        if (serialPort != null) {
            try {
                in.close();
                out.close();
                serialPort.removeEventListener();
                serialPort.close();
                commPort.close();
            } catch (Exception ex) {
                System.out.println("When closing: " + ex);
            }
        }

    }

この例外を回避するには、どのようにポートを閉じる必要がありますか?

4

1 に答える 1