今天在伊莉看到有人在求問可以讀取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);
}
}
}
太好用了,存起來一定會用到的!