2013-03-18 23 views
1

這是我爲設備枚舉實現的代碼。我能夠檢測並顯示連接的所有串口設備。但假設我連接了另一臺設備,然後嘗試調用此功能,它始終顯示在第一次運行代碼期間連接的設備。使用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

+0

你沒有發佈任何實際測試端口是否連接的代碼,你只需要使用可用端口 – Peter 2013-03-18 06:53:19

+0

你能否詳細解釋我,我猜(portId.getPortType()== CommPortIdentifier.PORT_SERIAL)實際上是測試if一個串行設備連接,我錯過了什麼? – Abhi4ever 2013-03-18 07:01:53

回答

0

Comm port API

你只是得到一個列表OP通訊端口,您可以舉例)試試,如果端口與isCurrentlyOwned(擁有又名使用某些應用

基本上只是迭代一個列表,直到你進一步測試它纔會告訴你列表中的任何東西。

+0

同意,但這裏的問題是可用的comports列表本身不是更新,然後是端口是免費的還是被一些應用程序擁有的部分! – Abhi4ever 2013-03-19 05:39:41