2012年8月5日 星期日

Mac : 讀寫 GH-625B 的資料

最近騎自行車都是利用 Android 手機加 Sports Tracker,好處是一機多用,缺點是耗電、搜尋衛星慢、誤差大,還可能會碰到有軌跡記錄了,最後資料卻在上載到網站後離奇不見的情形。其實家裡有一隻 GlobalSat (環天) 的 GH-625B,只因為覺得它的軟體不是那麼好用,而很少拿出來用。GH-625B 只提供 Windows 平臺的 driver 及軟體,研究了幾天,終於知道如何讓它可以在  Mac OS X 10.6.8 上連線,並讀出 GPS 記錄。
以下分成四個部份
  • PL-2303 USB-to-Serial 驅動程式
  • 資料擷取軟體
  • GPS 資料與圖資顯 

PL-2303 USB-to-Serial 驅動程式

GH-625B 附了一條 USB 的傳輸線,內建了 PL-2303 的晶片,骨子裡是採用 Serial 的傳方式在傳輸資料,因此才會那麼慢。我們如果只是把 USB 接頭插入 Mac ,因為沒有裝 PL-2303 USB to Serial 的驅動程式,所以無法和 GH-625B 連線。
因此首要之務是先把驅動程式的部份解決。只要到 GlobalSat (環天) 的網站或是 Prolific (旺玖科技) 的網站下載並安裝即可完成。
到 GlobalSat 網站後先點選「支援服務」中的「檔案下載」,「作業系統」點選「Mac」後按「Go」,這樣可以比較快找到。
如果是由旺玖的網站居然要先以帳號 guest、密碼 guest 登入後才能點選「技術支援」來下載「PL2303 USB to Serial Drivers」。
安裝完 PL2303 USB to Serial Drivers 會要求重新開機,開完機後,當我們把 GH-625B 的傳輸線插入 USB 接孔,手錶上就會出現是否要和電腦連線的對話了。

資料擷取軟體

在網路中找了半天,目前找到幾個和 GH-625B 連線讀取資料的方案:
視窗介面擷取軟體 : LoadMyTracks

LoadMyTracks 是 Mac 的 Native App,在 AppStore 中也找得到,不過,目前原始網站的版本比較新。因為它是視窗界面,使用起來會較直覺。
使用前要先到前述的網站中去將 LoadMyTracks 下載回來,然後就可以準備讀取 GH-625B 中的資料了。
連線讀取資料的操作程序如下:
  • 把 GH-625B 和 Mac 連接好,出現「CONNECT TO PC」選擇「YES」。或是直接由 GH-625B 的選單中選取「CONNECT TO PC」等待啟動軟體連線。
  • 啟動 LoadMyTracks 。
  • 並選擇 GPS 的種類「GH-615」。
  • 連接埠則選取「usbserial」。
  • 最後按「Aquire」鈕,指定要儲存的檔名及路徑,即可下載 GPS 上的資料。
上面有沒有發現一個很奇怪的問題,明明是 GH-625B ,為什麼是選「GH-615」?
因為如果選取「GH-625」就無法連線,選擇「GH-615」反而可以。「Lap」的功能只有 GH-625 才有,也因為如此,如果原始記錄是有分段計時的,下載回來的會全部合在一起,不含 LAP 的資訊。而不同次的記錄可能還要用別的工具來把它們分割成不同檔案,這個是它的一個缺點。
MacMaze 這個在 AppStore 中可以買到的軟體也滿好用的,不過要 11 塊美金。它比較人性化一點,會先顯示目前有哪些 Tracks 可以下載,這樣就不用花很多時間等待。在 usglobalsat 的這個討論串中也可以找到 MacMaze 舊版的程式來試用,不過,因為如果沒有註冊,無法輸出成 GPX 檔案。


文字介面擷取軟體

pykmaze、gh615 Project 和 tz_gh615 三個都是以 Python 開發的程式,由於是針對 GH-615 和 GH-625 而寫的,它們的功能較多。不過,這三支程式都必須在終端機中下以指令來操作,不論是安裝及使用,親和力較不足。

因為它們都是 Python 的程式,我們要先準備好以下的基本環境
Mac OS X 己經內建 Python (我的 OS X 10.6.8 中的是 Python 2.6.1) ,我們只要先把 pySerial 和 pytz 兩個 Python 的 package 下載回來,解壓縮並安裝即可。

以下載回來的 pyserial-2.6.tar.gz 為例,它的安裝程序如下:

tar zxvf pyserial-2.6.tar.gz
cd pyserial-2.6
python setup.py install

pytz 也是類似的步驟即可安裝完成。


pykmaze 、gh615 和 tz_gh615 三個各有優缺點,底下就我測試過的做一下筆記。


* pykmaze

pykmaze 其實是針對 Geonaute Keymaze 500/700 GPS watch 而設計的程式,據聞是相容於 GlobalSat GH-615 的,因此可以拿來讀取 GH-625B 中的資料。
不過,原始的 GH-615 firmware 是沒有分段計時功能的,以致於有 Lap 過的 Tracks , pykmaze   會出現「Multi-lap entries not supported」的訊息而無法繼續,即使把警告拿掉,強制它讀取資料,讀到的會只有第一段的資料。我追了一下這部份的程式碼,並對照了 GH-625 的通訊協定文件,主要是原作者有部份的資料未正確的解碼造成無法處理分段計時的 tracks。現在只要下載我修改過的程式,相信就可以順利的讀出 GH-625B 中的資料。下載處如下:


 下載回來的檔案只要先解壓縮即可開始使用

tar zxvf eblot-pykmaze.tgz

照上面的指令解開以後,所有的程式都放在 eblot-pykmaze/pykmaze 中,切換到該目錄中後,即可執行 pykmaze.py 這個主程式:

查詢有哪些參數可用:
./pykmaze.py -h

查詢裝置的訊息:

./pykmaze.py  -i


查詢目前有哪些 tracks

./pykmaze.py -c


下載第一個 track 並儲存為 GPX 格式

./pykmaze.py -t 01  -x test.gpx


下載第一個 track 並儲存為 KML 格式
./pykmaze.py -t 01 -k  test.kml

pykmaze 由 GH-625B 中讀取完資料後,會將資料儲存在目前帳號下的資料庫中 (  ~/Library/Application\ Support/Pykmaze/pykmaze.sqlite ),下次就直接從快取中讀取資料,提昇了資料讀取的時間。如果想強制它重新由 GH-625B 中讀取資料,我們只要在參數中加入「-f」,反之,電腦沒有連接 GH-625B ,我們可以在參數中加入「-o」讓它以 offline 的方式,由快取中讀取之前儲存過的資料。
以速度及穏定度來說,pykmaze 算是目前文字介面中最好用的。


*gh615 Project

gh615 是 code.google.com 中的一個 project ,它是特別針對 GH-615 和 GH-625 而設計,功能算是最齊全,在 unix like 的終端機下也設計了對話框的方式來選取所要的功能。不過,在我的 MBP 中不知是哪裡有問題,有時能用,有時不能用。底下簡單的介紹一下它的使用方法。
修改設定檔 config.ini:

設定檔中的 「comport」 可以讓我們指定連結埠,Mac 設為 「/dev/tty.usbserial」,其它作業系統可以參考裡面的說明設為適當的代號。
 comport: /dev/tty.usbserial
其它選項則可以不用更改。

接下來,我們就可以準備啟動程式囉!在終端機裡切換到 gh615 的目錄下,執行底下的指令:

python gh600_console.py

出現文字的對話框以後,就可以依自己的需求選取功能。

gh615 有個名為「exportTemplates」的目錄,裡面的檔案是輸出資料時的樣版,這個方便我們自訂輸出的檔案格式。


GPS 資料與圖資顯示

底下先列一下蒐集到的免費軟體。

下面的可以幫我們記錄分析蒐集的 GPS 資料
下面的則可以讀入 GPS 資料後,幫我們在相片中加入「位置」資訊。

相關連結




沒有留言:

張貼留言

 
© 2009. Design by Pocket