GPS関連の話題を掲載していきます。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
今日も、前回の続きです。とりあえず、GPSロガーからデータ取得することはできました。あとはこのデータをどうにかして、緯度、経度、高度、速さに分解してやるのですが、GPSロガーから得たデータはNMEA-0183形式で、とにかく、GPSから得られるデータがカンマ区切りで提供されてます。ですので、CSVを扱うように必要データだけ抽出すればいいのですが、緯度と経度はDMM形式からdegree形式に変えてやります。そうでないと、Google Mapで利用できないためです。
データはどうにか抽出できたので、VBからHTTPでデータをアップロードし、データベースに保管させるため、Apache、PHP、Postgresをインストールすることにした。とりあえず、PostgresはフリーのWindows版もここ何年かでできたようなので、こいつをインストールしようと、Postgresのホームページに行ってみると、EnterpriseDBなるものを発見どうやら、ApacheもPHPも含まれており、簡単にインストールできるようだ、ためしにやってみると、えらく簡単にインストールできた、設定も定番のphp.iniとhttpd.confをチョロット修正するだけで利用できる。cygwinを利用していた時が懐かしく思える。さて、設定もできたので、付属のpgAdminIIIでDBを作成し、データ保管用のテーブルも作成した。
次に、PHPでデータの受け皿をコーディングする。まあ、ここは簡単に、送られてくる変数を単純にテーブルにインサートするだけの処理なのでなんら問題なくできた。
あとはVBにHTTPの処理を実装するだけである。ここは、ロガーから抽出したデータをタイマをつかって、一定間隔で抽出し、アップロードさせるようにするが、HTTP応答がないと、停止状態になって、タイマとの競合を起こすので、HTTPによるデータのアップロード処理も、デリゲートさせることにした。尚、HTTP処理も、APIのソケット関数使ってもよかったが、せっかくなので、HttpWebRequest、HttpWebResponseのペアを利用し、フルにフレームワークに頼ることにした。
まあ、どうにかこうにかたたき台のVBができたので、以下に絵を貼り付けておきます。
正直、デザイン一切こだわってません。
ここでは概要しかいいませんが、以下の機能は実装しました。
1. GPSロガーのシリアル設定(ポートや通信速度)
2. HTTP設定(アップロードサイクルや送信先URL)
3. 地図設定(これはお遊びでつけた、現在位置を簡単に確認するため、ブラウザを立ち上げ、現在座標をGoogle Mapに表示させる。)
4. GPSパラメータの表示(方向だけは、矢印画像にして、向きによって回転させるようにした。実はこのPGがたいへんだった、どうでもいいとこほど、気合がはいります・・・)
設定さえできれば、接続ボタンを押せば、GPSから吐き出される、データを一定間隔で取得しサーバーにデータを渡します。
とりあえず、詳細はまた今度、サーバー側のGoogle Mapの処理だけ作ってしまいます。
データはどうにか抽出できたので、VBからHTTPでデータをアップロードし、データベースに保管させるため、Apache、PHP、Postgresをインストールすることにした。とりあえず、PostgresはフリーのWindows版もここ何年かでできたようなので、こいつをインストールしようと、Postgresのホームページに行ってみると、EnterpriseDBなるものを発見どうやら、ApacheもPHPも含まれており、簡単にインストールできるようだ、ためしにやってみると、えらく簡単にインストールできた、設定も定番のphp.iniとhttpd.confをチョロット修正するだけで利用できる。cygwinを利用していた時が懐かしく思える。さて、設定もできたので、付属のpgAdminIIIでDBを作成し、データ保管用のテーブルも作成した。
次に、PHPでデータの受け皿をコーディングする。まあ、ここは簡単に、送られてくる変数を単純にテーブルにインサートするだけの処理なのでなんら問題なくできた。
あとはVBにHTTPの処理を実装するだけである。ここは、ロガーから抽出したデータをタイマをつかって、一定間隔で抽出し、アップロードさせるようにするが、HTTP応答がないと、停止状態になって、タイマとの競合を起こすので、HTTPによるデータのアップロード処理も、デリゲートさせることにした。尚、HTTP処理も、APIのソケット関数使ってもよかったが、せっかくなので、HttpWebRequest、HttpWebResponseのペアを利用し、フルにフレームワークに頼ることにした。
まあ、どうにかこうにかたたき台のVBができたので、以下に絵を貼り付けておきます。
正直、デザイン一切こだわってません。
ここでは概要しかいいませんが、以下の機能は実装しました。
1. GPSロガーのシリアル設定(ポートや通信速度)
2. HTTP設定(アップロードサイクルや送信先URL)
3. 地図設定(これはお遊びでつけた、現在位置を簡単に確認するため、ブラウザを立ち上げ、現在座標をGoogle Mapに表示させる。)
4. GPSパラメータの表示(方向だけは、矢印画像にして、向きによって回転させるようにした。実はこのPGがたいへんだった、どうでもいいとこほど、気合がはいります・・・)
設定さえできれば、接続ボタンを押せば、GPSから吐き出される、データを一定間隔で取得しサーバーにデータを渡します。
とりあえず、詳細はまた今度、サーバー側のGoogle Mapの処理だけ作ってしまいます。
PR
前回「GPSロガーGT-730F/Lで何かやってみる其の1」でお話した、自分勝手なGPSロガーを利用した、リアルタイムトラッキングプロジェクトを少しずつ始めようと思い、とりあえず、フリーで利用できるVB2008 Express Editionをダウンロードしてみた、正直、VB6以外あまりVB触ってなかったので少々あせった。まったく使い方がわからない、どうにかこうにかいろいろ触って、なんとなく原理はわかってきた。しかし、画面のデザインも補助機能とかあって、結構お手軽にできた。
ともかく、まずは、GPSロガーの吐き出すデータを取得するところから始めねばならない。
というわけで、APIを組もうかと思ったら、ツールボックスにSerialPortなるものを発見、APIより簡単にできるんでは?と思いいろいろみていると、DataReceivedイベントというのがあった、ひょっとすると、別にスレッドにしなくても、データが取れるんでは?と思い、ためしに、VBにテキストボックスを貼り付けDataReceivedイベントで取得したデータを表示させようとした、しかしながら、どういうわけかエラーがでた。
とりあえずぐぐってみたら、「DataReceivedイベントハンドラはセカンダリスレッドから呼び出される。」らしい、どうやら、テキストボックス等にアクセスするDelegateを作成して、DataReceivedイベント時にそのDelegateのインスタンスをInvokeしてデータを渡してやるようだ。なるほどー奥が深い。とりあえず、言われた通りにやってみたら、GPSロガーから取得したデータを問題なく、表示できたこころなしか、API利用するより安定しているような気はする。
次は、取得したデータをサーバーに配信する部分でも作ってみるか。
ともかく、まずは、GPSロガーの吐き出すデータを取得するところから始めねばならない。
というわけで、APIを組もうかと思ったら、ツールボックスにSerialPortなるものを発見、APIより簡単にできるんでは?と思いいろいろみていると、DataReceivedイベントというのがあった、ひょっとすると、別にスレッドにしなくても、データが取れるんでは?と思い、ためしに、VBにテキストボックスを貼り付けDataReceivedイベントで取得したデータを表示させようとした、しかしながら、どういうわけかエラーがでた。
とりあえずぐぐってみたら、「DataReceivedイベントハンドラはセカンダリスレッドから呼び出される。」らしい、どうやら、テキストボックス等にアクセスするDelegateを作成して、DataReceivedイベント時にそのDelegateのインスタンスをInvokeしてデータを渡してやるようだ。なるほどー奥が深い。とりあえず、言われた通りにやってみたら、GPSロガーから取得したデータを問題なく、表示できたこころなしか、API利用するより安定しているような気はする。
次は、取得したデータをサーバーに配信する部分でも作ってみるか。
前回「はじめに」でお話したGPSロガーのGT-730F/Lは位置を捕捉し内部メモリにその位置データ等をロギングできるが、PCに接続すれば、シリアルで捕捉した位置データを吐き出してくれる。なるほどー、インターネットとNet PCを組み合わせられれば、位置データをwebで飛ばしてサーバーにデータ蓄積しリアルタイムトラッキングみたいなことができそうだ。
というわけで、まず、何をするかの構想を立ててみた。
とりあえず、ロガーから吐き出されるデータを受け取りwebにアップロードするので簡単にできそうな言語のVBを採用することにした。といっても、最近、PHPや組み込みのC言語ばかりで、意外と簡単にいかないかもしれない・・。VBで行わせる処理は以下の通り。
1. スレッドで、ロガーから吐き出されるデータを取得する。
2. 取得したデータから緯度、経度、高度、速度を抽出する。
3. 指定のURLに上記データをパラメータ渡しする。
次に、サーバー側の処理になるが本当はサーバーを別途立てるべきだが、金がかかるので、VBを稼動させる端末と同じ端末にApache,PHP,データベース(postgres)をインストールして、VBから送信されてくる、緯度、経度、高度、速度をPHPで取得し、データベースに保管する。
位置の閲覧には、PHPで、データベースから位置データを抽出し、google mapに最新の位置をプロットさせる。
言うのは簡単だが、なんかめんどくさそうだ、ともかく今回の構想を図式化してみた。
というわけで、まず、何をするかの構想を立ててみた。
とりあえず、ロガーから吐き出されるデータを受け取りwebにアップロードするので簡単にできそうな言語のVBを採用することにした。といっても、最近、PHPや組み込みのC言語ばかりで、意外と簡単にいかないかもしれない・・。VBで行わせる処理は以下の通り。
1. スレッドで、ロガーから吐き出されるデータを取得する。
2. 取得したデータから緯度、経度、高度、速度を抽出する。
3. 指定のURLに上記データをパラメータ渡しする。
次に、サーバー側の処理になるが本当はサーバーを別途立てるべきだが、金がかかるので、VBを稼動させる端末と同じ端末にApache,PHP,データベース(postgres)をインストールして、VBから送信されてくる、緯度、経度、高度、速度をPHPで取得し、データベースに保管する。
位置の閲覧には、PHPで、データベースから位置データを抽出し、google mapに最新の位置をプロットさせる。
言うのは簡単だが、なんかめんどくさそうだ、ともかく今回の構想を図式化してみた。
実際はサーバーもNet PCもいっしょにしてしまっているが、上記のようなイメージ。実際にデータをHTTPに引き渡すタイミングはタイマーにしている。これは、HTTP経由でデータを上げるので、連続してあげないようにする対策です。もっとも、ロガーのサイクルを遅くすればいいのだけど、まあ、よしとしよう。
とりあえず今日はここまで・・・。
とりあえず今日はここまで・・・。
カレンダー
12 | 2025/01 | 02 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
カテゴリー
フリーエリア
最新コメント
最新記事
(01/29)
(01/06)
(11/23)
(11/21)
(10/10)
(10/10)
(09/12)
(08/04)
(08/03)
(07/31)
最新トラックバック
プロフィール
HN:
Slit
性別:
非公開
ブログ内検索
最古記事
(05/12)
(05/13)
(05/14)
(05/14)
(05/14)
(05/16)
(05/16)
(05/18)
(05/18)
(05/19)
アクセス解析