Hi,
ich habe mir eine Bluetooth GPS-Maus (Royaltek rbt-2100) gekauft und wollte die Daten mit Java auslesen. Ich wollte die RXTX Api verwenden. Ich habe allerdings Probleme die Daten korrekt byteweise einzulesen. Zwischen den richtigen Daten befinden sich Sonderzeichen. Hier ein Bild dazu:
Und so sollte es korrekt aussehen (in Putty):
Vielleicht kann mir hier jemand helfen. Hier mein Quellcode:
Später möchte ich die einzelnen Daten zeilenweise als String auswerten können. Wenn jemand dafür eine Idee hat, könnte er diese bitte posten.
Mfg
scheidti
ich habe mir eine Bluetooth GPS-Maus (Royaltek rbt-2100) gekauft und wollte die Daten mit Java auslesen. Ich wollte die RXTX Api verwenden. Ich habe allerdings Probleme die Daten korrekt byteweise einzulesen. Zwischen den richtigen Daten befinden sich Sonderzeichen. Hier ein Bild dazu:
Und so sollte es korrekt aussehen (in Putty):
Vielleicht kann mir hier jemand helfen. Hier mein Quellcode:
Java:
import java.io.*;
import java.util.*;
import gnu.io.*;
public class Test implements SerialPortEventListener {
static CommPortIdentifier portId;
static Enumeration portList;
InputStream inputStream;
SerialPort serialPort;
public static void main(String[] args) {
boolean portFound = false;
String defaultPort = "";
String osName = System.getProperty("os.name","").toLowerCase();
if(osName.startsWith("windows")) defaultPort = "COM5";
else { System.out.println("Program only for MS Windows."); System.exit(0); }
System.out.println("Default Port: "+defaultPort);
portList = CommPortIdentifier.getPortIdentifiers();
while(portList.hasMoreElements()) {
portId = (CommPortIdentifier)portList.nextElement();
if(portId.getPortType()==CommPortIdentifier.PORT_SERIAL) {
if(portId.getName().equals(defaultPort)) {
System.out.println("Found Port:"+defaultPort);
portFound = true;
Test reader = new Test();
}
}
}
if(!portFound) System.out.println("Port "+defaultPort+" not found.");
}
public Test() {
try {
serialPort = (SerialPort)portId.open("Test", 2000);
} catch (PortInUseException e) { System.out.println("Port is used."); System.exit(0); }
try {
inputStream = serialPort.getInputStream();
} catch (IOException e) { System.out.println(e.toString()); System.exit(0); }
try {
serialPort.addEventListener(this);
} catch (TooManyListenersException e) { System.out.println(e.toString()); System.exit(0); }
serialPort.notifyOnDataAvailable(true);
try {
serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
} catch (UnsupportedCommOperationException e) { System.out.println(e.toString()); System.exit(0); }
}
public void serialEvent(SerialPortEvent event) {
String s = new String();
switch(event.getEventType()) {
case SerialPortEvent.BI:
case SerialPortEvent.OE:
case SerialPortEvent.FE:
case SerialPortEvent.PE:
case SerialPortEvent.CD:
case SerialPortEvent.CTS:
case SerialPortEvent.DSR:
case SerialPortEvent.RI:
case SerialPortEvent.OUTPUT_BUFFER_EMPTY: break;
case SerialPortEvent.DATA_AVAILABLE:
byte[] readBuffer = new byte[200];
try {
while(inputStream.available()>0) {
int numBytes = inputStream.read(readBuffer);
}
String result = new String(readBuffer);
System.out.println(result);
} catch (IOException e) { System.out.println(e.toString()); System.exit(0); }
break;
}
}
}
Später möchte ich die einzelnen Daten zeilenweise als String auswerten können. Wenn jemand dafür eine Idee hat, könnte er diese bitte posten.
Mfg
scheidti