y-matsui::weblog

電子楽器、音楽、コンピュータ、プログラミング、雑感。面倒くさいオヤジの独り言

GPS Terminal出来た(パクリ)

#region Coad's CodeのSerialPort Terminalを拝借して、ちょっとだけカスタマイズ。
GPS受信機の出力から、日本時間、緯度経度(百分率)、精度情報、衛星捕獲数などを出力する。
gps_terminal.gif
→C#(Visual Studio 2008 ExpressEdition)のプロジェクトファイル
元となったSerialPortTerminalは、ログウィンドウがひとつだが、GPSTerminalは、上下2段構成。上段が受信した生データ。下段には、欲しい形に変換してカンマ区切りで出力。緯度経度は、貼り付けやすいように最新の情報をテキストボックスに書かれていて、さらにgooglemapへのURLを生成してURLテキストボックスに書く、ボタンでブラウザを起動して、地図を表示する。$GPRMCからは日付情報を、$GPGSAからはPDOP、HDOP、VDOP値を読み取り、PDOPの逆数に係数(20)をかけたものを”精度(0-10)”とした。衛星個数と精度は、Max値=10のプログレスバーで視覚的に分かるようにした。
ログにPDOP<=3以下→良好、3<PDOP<7→普通、7<=PDOP→悪いとして書き出す。
あとは、リッチテキストエリアを定期的にフラッシュする処理や、テキストログの書き出し、書き出しの際のフィルタリング設定(精度や衛星個数で不要データを除く)があれば、データロガーになるかな。

衛星から取得した時刻と緯度経度の情報が得られたら、次にやりたいことと言えば、動画カメラをキャプチャして、スナップショットに緯度経度を付加してEXIF保存する機能。
緯度経度情報を持つ動画フォーマットなんて出来たら面白いんだけど、とりあえずは時間的に連続した静止画として取得できれば、高速にぱらぱらめくりすることで、擬似的な動画+地図上でポイントをスクロールなんていうことが出来るんじゃないかと。
まぁ、今だってデータロガーとデジカメの時刻をあわせておけば、同じことが出来るのだが・・。
動画カメラ+GPS受信機を、ミニノートに搭載してGPS+録画システムが出来ないかな。
JPEG1枚が100kbだとして、1秒20フレームで2MB/sの転送速度と、1時間7.2GBのディスク容量。

■後日談
またまたちょっとだけ改造。変換した緯度経度情報と時刻はCSVファイルとして保存するようにした。また、(1時間ほど放置するなどして)表示エリアの行数が多い場合に、固まってしまう不具合を解消するため、表示行数が1000になったら一度フラッシュするようにした。
10時間以上連続動作させ、4万5千行を出力したがクラッシュすることも、固まることも無く、メモリ使用量は25M程度、CPU負荷も5%程度で安定動作。OK!