1

これは、デバイスの列挙のために実装しているコードです。接続されているすべてのシリアル デバイスを検出して表示できますが、別のデバイスを接続してからこの関数を呼び出そうとすると、コードの最初の実行時に接続されているデバイスが常に表示されます。

コード スニペット:

public void Listports() {

    Enumeration ports = null;
    ports  = CommPortIdentifier.getPortIdentifiers();
    CommPortIdentifier portId = null;

    {
        while (ports.hasMoreElements()) {

             portId = (CommPortIdentifier) ports.nextElement();

            if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL){                    

                System.out.println(portId.getName());

            }
        }
    }
}

つまり、たとえば、関数の最初の呼び出しでは、COM1 と COM3 が表示されます。

ここで、接続されたシリアル デバイスが COM27 にロードされているとします。したがって、コードを再実行すると、COM1 と COM3 のみが表示され、COM27 は表示されません。

別のシナリオとして、コードを最初に実行する前に、シリアル デバイスが COM27 にロードされています。最初の実行では、COM1、COM3、COM27 が表示されます。ここで、COM27 デバイスを取り外して、上記のコードを再実行します。それでも、COM27 が接続されていることが示されます。

この点に関するヘルプは大歓迎です。

ありがとう、アビ

4

1 に答える 1

0

通信ポート API

通信ポートのリストを取得するだけで、たとえば、ポートが isCurrentlyOwned() を使用して一部のアプリケーションによって使用されているかどうかを試すことができます

基本的に、リストを反復するだけでは、さらにテストするまでリストの内容はわかりません。

于 2013-03-18T12:11:23.237 に答える