2013-03-18 5 views
1

다음은 Enumeration for devices에 대해 구현 한 코드입니다. 나는 모든 직렬 장치를 감지하고 표시 할 수 있습니다. 그러나 다른 장치를 연결 한 다음이 기능을 다시 호출하려고하면 코드를 처음 실행하는 동안 항상 연결된 장치가 표시됩니다.Javax.comm을 사용하여 java의 모든 직렬 장치를 다시 열거하십시오.

코드 Snipet :

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이 연결되어 있음을 보여줍니다.

이 점에 대한 도움은 크게 감사드립니다.

감사합니다, Abhi

+0

포트가 연결되어 있는지 실제로 테스트하는 코드를 게시하지 않았다면 사용 가능한 포트를 열거하십시오. – Peter

+0

자세히 설명해 주시겠습니까? (PortId.getPortType() == CommPortIdentifier.PORT_SERIAL) 실제로 테스트 중인지 여부 직렬 장치가 연결되어 있습니다, 나는 뭔가를 놓치고 있습니까 ?? – Abhi4ever

답변

0

Comm port API

당신은 단지 포트가 일명 isCurrentlyOwned (일부 응용 프로그램에서 사용 소유 한 경우, 당신은 다음 예를 들어

) 시도 할 수 있습니다 목록 연산 통신 포트를 얻을 수 기본적으로 목록을 반복하면 더 이상 테스트 할 때까지 목록에 아무 것도 표시되지 않습니다.

+0

동의하지만 여기서 문제는 사용 가능한 comports 목록 자체가 업데이트되지 않는다는 것입니다. 그런 다음 포트가 무료인지 또는 일부 응용 프로그램이 소유하고 있는지 여부에 따라 부분이옵니다! – Abhi4ever