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非対応アプリのためにインストールしておきましょう。
あっという間にインストールできました。
コントロールパネル>ハードウェアとサウンド>位置情報の設定で
Windows 位置情報プラットフォームを有効にするにチェックがついている必要があります。(デフォルトでついているはず)
そうすると地図アプリで自分の場所を押せば移動するはずです。
Sensor API 対応ドライバをもたないGPSモジュールの場合
古いドライバしかないとか、USB-シリアル変換を通したドライバがないGPSモジュールなどでは、別解として 次のドライバを使いましょう。
GPSDirect NMEA Sensor Driver for Windows 7.
このモジュールは シリアルポート接続(USBやBluetoothシリアルを含みます)のGPSで NMEAセンテンスを返すモジュールを Sensor APIに対応させる UMDFドライバです。
インストールをしたら、GPS Sensor 7というプログラムで
- COMポートを選択
- ボーレートを選択
- Installボタンを押す
これはインストール後の画面で NMEAセンテンスが送られてきており、位置が安定している状態です。
私の持っている FV-17 という 4800bps TTLレベルシリアル + PL2303 USBシリアル変換アダプタ + GPSアンテナの組み合わせを認識させるとこうなります。
これで、Sensor APIに対応できるようになりました。
その2では、実際に使ってみるとどうなるか?を示そうと思います。
Windows8では地図アプリがあるのでそれを使うところから始めます。
場合によっては アプリケーションを書いてみるかもしれません。
パーソナルファイアウォールとLAN/ポータブルルータとの干渉
自宅で無線で レッツノート S10 (Windows7 SP1 64bit)を使おうとするとき、妙な現象に悩まされてました。
現象
無線APに接続しているのに DHCPサーバーからIPアドレスが発給されないため通信できなくなる
原因
調べたところで、次のことがわかりました。
- 無線アクセスポイントには何の障害もなく他のノートPCから通信できる
- ESET Smart Security (現在 6.0)のパーソナルファイヤーウォールがオフだと問題は生じず、オンの場合にだけ発生する
- 自宅のAPに接続中に、WiMAXルーターが起動している、またはWiMAX使用後に自宅APに接続した場合に起きる
- 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ごとに違うフィルタルールを適用したい場合にも使えます。
試したら更新します。
はじめまして
zigsowって 物欲SNSで活動している はにゃと申します。
物欲を中心としたコミュニケーションを図る場で快適に過ごしていますが、日記がSNSメンバーに閉じているので、情報として書きたいこととなどはこちらに書くことにしました。
仕事でWindows/Linux, 趣味で BSD/OS X などつかっていますが、なかなかこの分野は飽きがこないですね。
ちょっとした Tips とかかけたらいいと思ってますので、よろしくお願いします。
はにゃ
twitter: http://twitter.com/hannya99/
zigsow: http://zigsow.jp/portal/member/106593/