내 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
마지막 세 줄은 내 핸드셋에서 프로세스가 종료 될 때까지 반복됩니다. 사실 직렬 포트에 데이터가없는 것 같습니다. 초기화되지 않았기 때문입니다. 이것에 어떤 제안?
내 안드로이드 프로젝트에서 rxtx 라이브러리를 사용하려고합니다. 그것을 설정하도록 도와 주시겠습니까? –