これは、デバイスの列挙のために実装しているコードです。接続されているすべてのシリアル デバイスを検出して表示できますが、別のデバイスを接続してからこの関数を呼び出そうとすると、コードの最初の実行時に接続されているデバイスが常に表示されます。
コード スニペット:
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 が接続されていることが示されます。
この点に関するヘルプは大歓迎です。
ありがとう、アビ