今回はNMEAフォーマットについて。
元は船舶情報向けの規格なんだそうですが、Maker的にはGPSの規格として著名です。
構造としては、ブロードキャスト配信のようです。
実際のところ
たとえば、秋月のGPS受信キットですと
$GPZDA,024316.000,14.01,2016,,*55
ですとか
$GPGGA,024317.000,3541.9435,N,13946.1690,E,1,4,3,4...
といったパケットが返ってきます。
これだけだと、GPGGA等々が何のことだか全く分かりませんが……有志が解読したパケット構造のリストがあります。
www.gpsinformation.org
ZDAは時刻、GGAは位置情報である事がわかります。
基本的に「関連情報全部送るから、ユーザの方で勝手に取捨選択してくれ」というアプローチのようです。
Wikipediaによると、パケット自体の構造は以下の通り
- 全部ASCII文字
- シリアル通信
- それぞれのメッセージの開始文字はドル記号。
- 次の5文字はトーカ(2文字)とメッセージ(3文字)を識別。
- 全ての後続するデータフィールドはコンマ区切り。
- データが利用できない場合、対応するフィールドはナル文字を入れる(例えば"123,,456"では第二フィールドは利用不可)。
- 最終データフィールド文字が直後に続く最初の文字はアスタリスク。
- アスタリスクは16進数で表す2桁のチェックサムが直後に続く。チェックサムは$と*間の全文字の排他的論理和。公式な仕様によれば、チェックサムはほとんどのデータセンテンスにとっては任意的なものであるが、RMA、RMB、RMC(とくに)では強制的である。
はメッセージの終了。
ポートさえ開いていれば、あとはシェルコマンドでもソートできそうな内容ですね。