java for GPS

今天在伊莉看到有人在求问可以读取GPS接收器的讯号(NMEA)的JAVA程式,刚好看到陈钟诚的网站上有一篇如何以 Java 取得卫星定位资讯 ?,我觉得重点是这个gps.zip,它包了javax.comm 这个不在标准 JDK 中的函式库,你要先这样安装:

* 将 win32com.dll 档案复制到 {JDK}\bin 的目录下。
* 将 javax.comm.properties 档案复制到 {JDK}\lib 的目录下。

这样编译执行:

javac -classpath comm.jar;. Gps.java
java -classpath comm.jar;. Gps COM4

程式码是这样的:

import java.io.*;
import javax.comm.*;

public class Gps {
  public static void main( String[] args) throws Exception {
     receive(args[0]);    // 接收来自指定的 COM port 的卫星讯号。
  }

  // 以下是卫星接收的主要程式。
  public static void receive(String port) throws Exception {
    // 开启 COM port (在 Java 中称为 Serial Port)。
    SerialPort serialPort = ( SerialPort ) CommPortIdentifier.getPortIdentifier( port ).open( "GPS", 60 );
    // 设定接收参数,包含频率为 4800bps, 8个资料位元后接着一个停止位元,没有同位位元(parity bit)等。
    serialPort.setSerialPortParams( 4800, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE );
    // 将该 Serial Port 当成档案一样开启,然后不断读取即可。
    BufferedReader in = new BufferedReader( new InputStreamReader(serialPort.getInputStream()) );
    while (true ) {
      String msg = in.readLine();
      System.out.println(msg);
    }
  }
}

太好用了,存起来一定会用到的!