我的最终目标是从Adafruit Ultimate GPS(NMEA 0183标准)接收经度和纬度GPS信息到我的Java应用程序。我正在使用Java Marine API来完成这个任务。当前位置将与时间戳一起写入数据库。
到目前为止,我已经成功(我认为)配置了RXTX以通过USB端口进行通信。Java Marine API带有一些示例.java文件。下面的示例应该扫描所有现有的COM端口并寻找NMEA数据,但当我运行它时,我只得到输出:
扫描端口/dev/tty.Bluetooth-Incoming-Port
GPS已连接,当我通过终端访问它时,我可以看到它正在流式传输数据。
请原谅这个文本转储,我有点超出我的能力范围,并且不确定哪些部分是相关的。
到目前为止,我已经成功(我认为)配置了RXTX以通过USB端口进行通信。Java Marine API带有一些示例.java文件。下面的示例应该扫描所有现有的COM端口并寻找NMEA数据,但当我运行它时,我只得到输出:
扫描端口/dev/tty.Bluetooth-Incoming-Port
GPS已连接,当我通过终端访问它时,我可以看到它正在流式传输数据。
请原谅这个文本转储,我有点超出我的能力范围,并且不确定哪些部分是相关的。
public class SerialPortExample implements SentenceListener {
public SerialPortExample() {
init();}
public void readingPaused() {
System.out.println("-- Paused --");}
public void readingStarted() {
System.out.println("-- Started --");}
public void readingStopped() {
System.out.println("-- Stopped --");}
public void sentenceRead(SentenceEvent event) {
// here we receive each sentence read from the port
System.out.println(event.getSentence());}
private SerialPort getSerialPort() {
try {
Enumeration<?> e = CommPortIdentifier.getPortIdentifiers();
while (e.hasMoreElements()) {
CommPortIdentifier id = (CommPortIdentifier) e.nextElement();
if (id.getPortType() == CommPortIdentifier.PORT_SERIAL) {
SerialPort sp = (SerialPort) id.open("SerialExample", 30);
sp.setSerialPortParams(4800, SerialPort.DATABITS_8,
SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
InputStream is = sp.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader buf = new BufferedReader(isr);
System.out.println("Scanning port " + sp.getName());
// try each port few times before giving up
for (int i = 0; i < 5; i++) {
try {
String data = buf.readLine();
if (SentenceValidator.isValid(data)) {
System.out.println("NMEA data found!");
return sp;}
} catch (Exception ex) {
ex.printStackTrace();}}
is.close();
isr.close();
buf.close();}
}
System.out.println("NMEA data was not found..");
} catch (Exception e) {
e.printStackTrace();}
return null;}
private void init() {
try {SerialPort sp = getSerialPort();
if (sp != null) {
InputStream is = sp.getInputStream();
SentenceReader sr = new SentenceReader(is);
sr.addSentenceListener(this);
sr.start(); }
} catch (IOException e) {
e.printStackTrace();}}
public static void main(String[] args) {
new SerialPortExample();}}
我认为它被卡在了tty.Bluetooth-Incoming-Port上?我怎样才能让它查看tty.usbserial端口呢?
谢谢!
稳定库 本地库版本 = RXTX-2.1-7 Java库版本 = RXTX-2.1-7 /dev/tty.usbserial 正在扫描端口 /dev/tty.usbserial
。 - Ben Mayo