2013-04-11 14 views
5

Buduję prostą aplikację, która komunikuje się przez port szeregowy przy użyciu interfejsu Java Communication API javax.comm.CommPortIdentifier.getPortIdentifiers jest pusty

Oto kod w moim java głównej metody napisałem:

CommPortIdentifier cpi = null; 
     Enumeration e = CommPortIdentifier.getPortIdentifiers(); 
     while (e.hasMoreElements()) { 
      try { 
       cpi = (CommPortIdentifier) e.nextElement(); 
      } catch (NoSuchElementException n) { 

      } 
      System.out.println(cpi.getName()); 
     } 

Wyliczanie e jest zawsze pusty, chociaż jestem podłączony do portu COM 4, kiedy to działa.

również działa ten kod:

portRead = CommPortIdentifier.getPortIdentifier("COM8"); 

przyczyną rzucie NoSuchPortException

Chyba zrobili część instalacji i prawidłowo umieszczony plik właściwości, plik win32com.dll w odpowiednich miejscach .

Czy wiesz, jaki może być problem?

Thank You

Odpowiedz

3

upewnić, że win32com.dll (pochodzi z javax.com) znajduje się w katalogu jre \ bin. Upewnij się, że plik javax.comm.properties (dostarczany z javax.com) znajduje się w katalogu jdk \ lib.

-1

portu Wyszukiwanie w którym urządzenie pracuje (Spróbuj skorupę zasilania lub Hyper Terminal znaleźć wszystkie porty com spróbować link)

+2

Uwaga linkujące tylko odpowiedzi są zniechęceni, SO odpowiedzi powinny być końcowy punkt poszukiwania rozwiązania (w porównaniu z jeszcze jednym przystankiem odniesień, które mają tendencję do dostać nieświeże w czasie). Proszę rozważyć dodanie samodzielnego streszczenia tutaj, zachowując odnośnik jako odniesienie. – kleopatra

5

Pamiętaj zawsze trzeba dodać wszystkie rozpakowane pliki z javax.comm.zip do JRE

win32com.dll - jre/bin

comm.jar - jre/lib/eXT

java.comm.properties - jre/lib (po dodaniu tego znalazłem Problem rozwiązany wyjątek)