這是我爲設備枚舉實現的代碼。我能夠檢測並顯示連接的所有串口設備。但假設我連接了另一臺設備,然後嘗試調用此功能,它始終顯示在第一次運行代碼期間連接的設備。使用Javax.comm重新枚舉Java中的所有串行設備
一小段代碼片段:
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());
}
}
}
}
即,例如,在函數的第一個呼叫,COM 1和COM被顯示。
現在假設連接的串行設備已加載到COM27上。所以如果我們重新運行代碼,它只顯示COM1和COM3,而不顯示COM27。
另一種情況,在我第一次運行代碼之前,串口設備在COM27上運行。現在第一次運行它顯示COM1,COM3,COM27。現在移除COM27設備並重新運行上面的一段代碼,它仍然顯示COM27已連接。
在這方面的任何幫助都非常讚賞。
感謝, ABHI
你沒有發佈任何實際測試端口是否連接的代碼,你只需要使用可用端口 – Peter 2013-03-18 06:53:19
你能否詳細解釋我,我猜(portId.getPortType()== CommPortIdentifier.PORT_SERIAL)實際上是測試if一個串行設備連接,我錯過了什麼? – Abhi4ever 2013-03-18 07:01:53