2011-03-09 14 views
0

Java를 사용하여 직렬 포트와 통신하는 프로젝트를 진행 중입니다. 다음 코드를 테스트하려면 장치를 직렬 포트에 연결해야합니까?리눅스 플랫폼 용 직렬 포트 액세스 코드

Enumeration ports = CommPortIdentifier.getPortIdentifiers(); 
while (ports.hasMoreElements()) { 
    CommPortIdentifier port = (CommPortIdentifier) ports.nextElement(); 
    String type; 
    switch (port.getPortType()) { 
     case CommPortIdentifier.PORT_PARALLEL: 
      type = "Parallel"; 
      break; 
     case CommPortIdentifier.PORT_SERIAL: 
      type = "Serial"; 
      break; 
     default: /// Shouldn't happen 
      type = "Unknown"; 
      break; 
    } 
    System.out.println(port.getName() + ": " + type); 
} 

이 코드를 작성하는 데 필요한 모든 해결책. 현재 다음과 같이 나는

Exception in thread "main" java.lang.UnsatisfiedLinkError: com.sun.comm.SunrayInfo.isSessionActive()Z 
     at com.sun.comm.SunrayInfo.isSessionActive(Native Method) 
     at com.sun.comm.Portmapping.registerCommPorts(Portmapping.java:155) 
     at com.sun.comm.Portmapping.refreshPortDatabase(Portmapping.java:100) 
     at javax.comm.CommPortIdentifier.<clinit>(CommPortIdentifier.java:138) 
     at PortTest.main(PortTest.java:9) 
Java Result: 1 

. 직렬 포트에 어떤 장치를 연결하지 않고도 (. 오류를 받고 있어요 나는 JRE와 통신을 구성했습니다. 나는 그것을 할 this 블로그를 따랐습니다.

답변

0

약간의 고생 끝에 코드가 실행되었습니다. 내가 만든

하나의 실수는 그것은 libSeriallibParellal 파일의 2.2 버전과 2.1 RxTxComm jar 파일을 사용 페도라 (13)에 대한 RxTx 2.2 라이브러리를 사용했다. 내가 그것을 제거하고 사용한 RxTx2.1 다음과 같은 오류가 발생했습니다.

이 오류를 확인하면서 위의 문제에 대한 두 번째 실수를 발견했습니다. Java Comm API와 함께 RxTx 드라이버를 사용하고있었습니다. 사실 Java Comm API의 필수 클래스 파일은 이미 "gnu.io"패키지와 함께 RxTx 라이브러리에서 사용할 수 있습니다.

그래서 모든 javax.comm.* 패키지를 gnu.io.*으로 변경했습니다. 이제 오류없이 응용 프로그램을 실행할 수 있습니다.

2

당신에게 ' . 필요한 네이티브 라이브러리 누락 재 당신이 게시 오류 라인 위의 라인은 당신이 말하고있다

당신은 javax.comm의 확장자 설치해야합니다 -. 당신이 창을 사용하는 경우 http://www.oracle.com/technetwork/java/index-jsp-141752.html

를 더 이상 지원되지 않는 것 또는 avai Sun/Oracle으로부터 lable. 당신은 그물이나 그것을 이식하는 다른 누군가에게 이전 버전을 찾을 수있을 것입니다.

+0

http://www.agaveblue.org/howtos/Comm_How-To.shtml 시스템을 구성하려면이 게시물을 따르고 있습니다. – Joe

+0

나는 시리얼 포트에 대한 연결과 혼동을 느낍니다. 현재 시리얼 포트에 장치가 연결되어 있지 않습니다. 그 때문에 그것 때문입니다. 리눅스에 가상 직렬 포트를 만들 수 있습니까? 나는 fedora OS를 사용하고 있습니다. – Joe

+0

끔찍한 구식이지만 최신 리눅스 버전을 다운로드했다면 적어도 올바른 파일을 가지고있을 것입니다. 오류가 발생하면 java가'.so' (네이티브 라이브러리) 파일을 찾을 수 없다는 것을 의미합니다. 'System.out.println (System.getProperty ("java.library.path"));로''.so' 파일이 그 중 하나에 있어야합니다. –