はにゃぶろぐ はじめました

物欲情報とかTipsとかいろいろ載せていけたらいいなぁ

Windows7/8 で GPSセンサーを使う その1 前ふり~準備まで

前ふり

いまどきスマートフォン・タブレットでGPS内蔵していて、Google Mapsなど便利なサービスが構築されていますが、PCでもGPSモジュールを接続すると位置、移動速度、時刻を取得することができます。

Windows 7より Sensor and Location APIが提供されており、GPSモジュールや他の位置情報センサーとネットワークサービスから緯度・経度・高度や国・都道府県・市区町村・番地などの情報をアプリケーションに提供します。

 

Windows 7 では サイドバーのMSN ウェザーが対応しており、

Windows 8 では 地図、天気アプリなどが対応しています。

 

セットアップ

Windows7でも8でも変わりませんが、この項は Windows8で説明しています。

Sensor API 対応ドライバをもつGPSモジュールの場合

Sensor and Location API に 対応したドライバをもつ GPSモジュールならドライバをインストールするだけであっというまに終わります。

手持ちが ANTARIS4 GPSチップを使用したUSB GPSでしたので、

u-blox Windows8/7 USBドライバ (センサー, VCP対応)  2.0.0.5

http://www.u-blox.com/ja/drivers-a-middleware/usb-drivers/windows-7-driver.html

を使用しました。

VCPとは 仮想COMポートでこの場合必須ではありませんが、Location API非対応アプリのためにインストールしておきましょう。

f:id:hanya501:20130309050919p:plain

あっという間にインストールできました。

コントロールパネル>ハードウェアとサウンド>位置情報の設定で

Windows 位置情報プラットフォームを有効にするにチェックがついている必要があります。(デフォルトでついているはず)

そうすると地図アプリで自分の場所を押せば移動するはずです。

 

Sensor API 対応ドライバをもたないGPSモジュールの場合

古いドライバしかないとか、USB-シリアル変換を通したドライバがないGPSモジュールなどでは、別解として 次のドライバを使いましょう。

GPSDirect NMEA Sensor Driver for Windows 7.

http://www.turboirc.com/gps7/

このモジュールは シリアルポート接続(USBやBluetoothシリアルを含みます)のGPSで NMEAセンテンスを返すモジュールを Sensor APIに対応させる UMDFドライバです。

インストールをしたら、GPS Sensor 7というプログラムで

  • COMポートを選択
  • ボーレートを選択
  • Installボタンを押す

 これはインストール後の画面で NMEAセンテンスが送られてきており、位置が安定している状態です。

f:id:hanya501:20130309053146p:plain

 

私の持っている FV-17 という 4800bps TTLレベルシリアル + PL2303 USBシリアル変換アダプタ + GPSアンテナの組み合わせを認識させるとこうなります。

 

f:id:hanya501:20130309052252p:plain

 

これで、Sensor APIに対応できるようになりました。

 

その2では、実際に使ってみるとどうなるか?を示そうと思います。

Windows8では地図アプリがあるのでそれを使うところから始めます。

場合によっては アプリケーションを書いてみるかもしれません。

 

パーソナルファイアウォールとLAN/ポータブルルータとの干渉

自宅で無線で レッツノート S10 (Windows7 SP1 64bit)を使おうとするとき、妙な現象に悩まされてました。

 

現象

無線APに接続しているのに DHCPサーバーからIPアドレスが発給されないため通信できなくなる

 

原因

調べたところで、次のことがわかりました。

  1. 無線アクセスポイントには何の障害もなく他のノートPCから通信できる
  2. ESET Smart Security (現在 6.0)のパーソナルファイヤーウォールがオフだと問題は生じず、オンの場合にだけ発生する
  3. 自宅のAPに接続中に、WiMAXルーターが起動している、またはWiMAX使用後に自宅APに接続した場合に起きる
  4. WiMAXルーターも自宅のデフォルトルーター/DHCPサーバーもネットワーク 192.168.1/24で、ルーター/DHCPサーバアドレスが 192.168.1.1 だった

勘がいい人は、何がおきていたのか気づくでしょう。

ESET Smart Secuirty のパーソナルファイヤーウォールがWiMAXルーターのMACアドレスを学習していて、自宅LANのデフォルトサーバーのMACアドレスをフィルタリングしてしまったのです(またはその逆)

 

OSが DHCP DISCOVERYパケットを送信しても、DHCPサーバーからのDHCP OFFERパケットをフィルタリングしたため、DHCPによりIPアドレスがリースされず制限付きネットワークになってしまったのです。

 

この障害発生状況で、パーソナルファイヤーウォールを切り、APの再接続なり、ipconfig で renew すれば DHCP OFFER を受け取り、DHCP REQUEST, ACKと進んで無事アドレスを受け取れます。

この時点では問題なく通信できますが、 パーソナルファイヤーウォールをオンに戻すと、まだフィルタルールが生きてしまってて通信が再度途絶します。

まとめ

この問題は WiMAXルータだけの問題ではなく、無線別のネットワークとの間でも起きるものです。

簡単な回避策

WiMAXルーターと、違うネットワークアドレスに変更することで、属するネットワークが違うので、ネットワーク選択画面がでて問題が回避されます。 

別解

もう一つ解決策として、ESETの詳細設定→パーソナルファイアウォール→ルールとゾーンの、ルールとゾーンの設定の中で、ゾーンの認証方法を変更することで対処できるかもしれません。

無線接続の設定で無線SSIDが次の値の場合にこのゾーンであると判断させるわけです。

設定は面倒ですが、ちゃんと動けば IPアドレスを変更できない場合など便利ですし、

無線APごとに違うフィルタルールを適用したい場合にも使えます。

 

f:id:hanya501:20130307153119p:plain

 

試したら更新します。

 

はじめまして

zigsowって 物欲SNSで活動している はにゃと申します。

物欲を中心としたコミュニケーションを図る場で快適に過ごしていますが、日記がSNSメンバーに閉じているので、情報として書きたいこととなどはこちらに書くことにしました。

 

仕事でWindows/Linux, 趣味で BSD/OS X などつかっていますが、なかなかこの分野は飽きがこないですね。

 

ちょっとした Tips とかかけたらいいと思ってますので、よろしくお願いします。

 

はにゃ

twitter: http://twitter.com/hannya99/

zigsow: http://zigsow.jp/portal/member/106593/