2012-11-14 5 views
1

내 Java 프로젝트에서 rxtx library을 사용하여 gps 칩에서 오는 직렬 데이터를 읽습니다. 자, 안드로이드 4.0.3 재고 ROM과 함께 내 안드로이드 장치, 뿌리는 갤럭시 넥서스로 이식하려고합니다.안드로이드에서 RXTX 직렬 포트 라이브러리

나는 이미 프로젝트를 만들고 내 수업을 안드로이드 버전으로 포팅했습니다. 그것은이 같은 rxtx library for android를 사용하여이 후

public void init() { 
    try { 
     Enumeration portIdentifiers = CommPortIdentifier.getPortIdentifiers(); 
     ///See what ports are available. and latch on desired port 
     while (portIdentifiers.hasMoreElements()) { 
      CommPortIdentifier pid = (CommPortIdentifier) portIdentifiers.nextElement(); 
      if (pid.getPortType() == CommPortIdentifier.PORT_SERIAL && pid.getName().equals(PORT)) { 
       portId = pid; 
       break; 
      } 
     } 
     serialPort = (SerialPort) portId.open("test", 5000); 
     in = serialPort.getInputStream(); 
     dis = new DataInputStream(in); 
     serialPort.addEventListener(this); 
     serialPort.setSerialPortParams(BAUDRATE, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, 
       SerialPort.PARITY_NONE); 
     serialPort.notifyOnDataAvailable(true); 
    } catch (PortInUseException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (TooManyListenersException e) { 
     e.printStackTrace(); 
    } catch (UnsupportedCommOperationException e) { 
     e.printStackTrace(); 
    } 

} 

내가 serialEvent(SerialPortEvent event) -method로 들어오는 데이터를 읽어보십시오.

그러나 라이브러리의 기본 구현에 대한 일부 문제로 인해 데이터를 읽지 않습니다. 이것은 내 logcat 출력입니다 :

11-14 11:24:49.793: I/GNU.IO(15496): JNI_OnLoad called. 
11-14 11:24:49.793: I/GNU.IO(15496): Testing the version. 
11-14 11:24:49.800: I/GNU.IO(15496): entering RXTXCommDriver:getDeviceDirectory 
11-14 11:24:49.800: I/GNU.IO(15496): TestREAD. 
11-14 11:24:49.808: I/GNU.IO(15496): /dev/ttyO0 
11-14 11:24:49.808: I/GNU.IO(15496): entering RXTXPort:testRead 
11-14 11:24:49.808: I/GNU.IO(15496): RXTX Warning: Removing stale lock file. /data/local/tmp/LCK..ttyO0 
11-14 11:24:49.816: I/GNU.IO(15496): leaving RXTXPort:testRead 
11-14 11:24:49.832: I/GNU.IO(15496): entering RXTXCommDriver:getDeviceDirectory 
11-14 11:24:49.840: I/GNU.IO(15496): TestREAD. 
11-14 11:24:49.847: I/GNU.IO(15496): /dev/ttyO0 
11-14 11:24:49.847: I/GNU.IO(15496): entering RXTXPort:testRead 
11-14 11:24:49.847: I/GNU.IO(15496): leaving RXTXPort:testRead 
11-14 11:24:49.871: I/GNU.IO(15496): entering RXTXPort:Initialize 
11-14 11:24:49.879: I/GNU.IO(15496): entering RXTXPort:open 
11-14 11:24:49.886: I/GNU.IO(15496): leaving RXTXPort:open 
11-14 11:24:49.886: I/GNU.IO(15496): entering eventLoop 
11-14 11:24:49.886: I/GNU.IO(15496): 
11-14 11:24:49.886: I/GNU.IO(15496): entering send_event 
11-14 11:24:49.886: I/GNU.IO(15496): send_event: !eventloop_interupted 
11-14 11:24:49.886: I/GNU.IO(15496): send_event: jclazz 
11-14 11:24:49.886: I/GNU.IO(15496): send_event: calling 
11-14 11:24:49.886: I/GNU.IO(15496): send_event: called 
11-14 11:24:49.886: I/GNU.IO(15496): leaving send_event 
11-14 11:24:49.886: I/GNU.IO(15496): entering check_tiocmget_changes 
11-14 11:24:49.886: I/GNU.IO(15496): leaving check_tiocmget_changes 
11-14 11:24:49.886: I/GNU.IO(15496): port_has_changed_fionread: change is 0 
11-14 11:24:49.886: I/GNU.IO(15496): entering send_event 
11-14 11:24:49.886: I/GNU.IO(15496): send_event: !eventloop_interupted 
11-14 11:24:49.886: I/GNU.IO(15496): send_event: jclazz 
11-14 11:24:49.886: I/GNU.IO(15496): send_event: calling 
11-14 11:24:49.886: I/GNU.IO(15496): send_event: called 
11-14 11:24:49.886: I/GNU.IO(15496): leaving send_event 
11-14 11:24:49.886: I/GNU.IO(15496): entering check_tiocmget_changes 
11-14 11:24:49.886: I/GNU.IO(15496): leaving check_tiocmget_changes 
11-14 11:24:49.886: I/GNU.IO(15496): port_has_changed_fionread: change is 0 
11-14 11:24:49.894: I/GNU.IO(15496): entering send_event 
11-14 11:24:49.894: I/GNU.IO(15496): send_event: !eventloop_interupted 
11-14 11:24:49.894: I/GNU.IO(15496): send_event: jclazz 
11-14 11:24:49.910: I/GNU.IO(15496): leaving RXTXPort:translate_speed 
11-14 11:24:49.910: I/GNU.IO(15496): entering RXTXPort:nativeSetSerialPortParams 
11-14 11:24:49.910: I/GNU.IO(15496): entering translate_date_bits 
11-14 11:24:49.910: I/GNU.IO(15496): entering translate_stop_bits 
11-14 11:24:49.910: I/GNU.IO(15496): leaving RXTXPort:translate_stop_bits 
11-14 11:24:49.910: I/GNU.IO(15496): entering translate_parity 
11-14 11:24:49.910: I/GNU.IO(15496): leaving translate_parity 
11-14 11:24:49.910: I/GNU.IO(15496): leaving RXTXPort:nativeSetSerialPortParams 
11-14 11:24:49.910: I/GNU.IO(15496): send_event: calling 
11-14 11:24:49.910: I/GNU.IO(15496): send_event: called 
11-14 11:24:49.910: I/GNU.IO(15496): leaving send_event 
11-14 11:24:49.910: I/GNU.IO(15496): entering check_tiocmget_changes 
11-14 11:24:49.910: I/GNU.IO(15496): leaving check_tiocmget_changes 
11-14 11:24:49.910: I/GNU.IO(15496): port_has_changed_fionread: change is 0 
11-14 11:24:49.910: I/GNU.IO(15496): entering send_event 
11-14 11:24:49.910: I/GNU.IO(15496): send_event: !eventloop_interupted 
11-14 11:24:49.910: I/GNU.IO(15496): send_event: jclazz 
11-14 11:24:49.910: I/GNU.IO(15496): send_event: calling 
11-14 11:24:49.910: I/GNU.IO(15496): send_event: called 
11-14 11:24:49.910: I/GNU.IO(15496): leaving send_event 
11-14 11:24:49.910: I/GNU.IO(15496): entering check_tiocmget_changes 
11-14 11:24:49.910: I/GNU.IO(15496): leaving check_tiocmget_changes 
11-14 11:24:49.910: I/GNU.IO(15496): port_has_changed_fionread: change is 0 
11-14 11:24:49.910: I/GNU.IO(15496): entering check_tiocmget_changes 
11-14 11:24:49.910: I/GNU.IO(15496): leaving check_tiocmget_changes 
11-14 11:24:49.910: I/GNU.IO(15496): port_has_changed_fionread: change is 0 
11-14 11:24:49.918: I/GNU.IO(15496): entering check_tiocmget_changes 
11-14 11:24:49.918: I/GNU.IO(15496): leaving check_tiocmget_changes 
11-14 11:24:49.918: I/GNU.IO(15496): port_has_changed_fionread: change is 0 
11-14 11:24:49.918: I/GNU.IO(15496): entering check_tiocmget_changes 
11-14 11:24:49.918: I/GNU.IO(15496): leaving check_tiocmget_changes 
11-14 11:24:49.918: I/GNU.IO(15496): port_has_changed_fionread: change is 0 

마지막 세 줄은 내 핸드셋에서 프로세스가 종료 될 때까지 반복됩니다. 사실 직렬 포트에 데이터가없는 것 같습니다. 초기화되지 않았기 때문입니다. 이것에 어떤 제안?

+0

내 안드로이드 프로젝트에서 rxtx 라이브러리를 사용하려고합니다. 그것을 설정하도록 도와 주시겠습니까? –

답변

0

Android에서 직렬 포트로 작업하려면 다음 라이브러리를 사용하는 것이 좋습니다 : Serial Port API. 나를 위해 일하고 나는 당신을 위해 유용하다고 믿습니다.