Windows Sensor and Location APIでGPSデバイスから座標を取得
Windows 7から、Sensor and Location APIが導入され、これに対応したGPSデバイスを使うと標準APIを使って位置などを取得することが可能になります。MSDNの以下記事(日本語訳)参照。
Introduction to the Sensor and Location Platform in Windows | Microsoft Docs
それ以前は、シリアル通信(USBケーブルでGPSデバイスと接続し、その上で仮想のシリアル通信を行うものが多い)でGPSデバイスが垂れ流すNMEAフォーマットを解析して座標を取得していました。そのためには、シリアル通信の受信処理、NMEAフォーマットの解析と結構なプログラミングが必要でした。シリアル通信は、同時に一つのプログラムしか利用できないというデメリットもありました。
Location APIでは、複数のプログラムが並行してGPSデバイスの情報を取得可能で、また位置(緯度経度)をAPIで取得できるというメリットがあります。
ただし、このLocation APIはWindowsのCOM(Common Object Model)インタフェースで提供されるので、COM(ATL)プログラミングが必要になります。
また、GPSデバイスのないマシンでは実行時にAPIがエラーを返すので、「規定の位置」を設定する必要がありますが、コントロールパネルからは緯度・経度を設定するUIがないのでチョット困りました。専用のプログラムを作る必要があるようですが、その設定プログラムを作って公開しているものを見つけました。
そのあたりの経緯を、以下に書きました。
http://www.torutk.com/projects/swe/wiki/Windows_Location_API