GPS Direct Virtual Sensor Driver


Windows 7 introduces the Sensor API which provides an abstraction to use many sensors, and the Location API which provides a way for applications to know the location of the user. However most GPS devices come with a bluetooth or a usb interface without a Windows 7 sensor driver.

Here is a user-level driver (UMDF) that can read a COM port that contains GPS NMEA data and map it to a Windows 7 GPS Sensor for your Windows 7 applications to be gps-sensor-aware. The driver also provides ILocation* information for Location-Aware applications.

To test the driver in an application capable of getting GPS information from a sensor, try Turbo GPS.

Note #1: You need administrator privileges to install or uninstall the driver.
Note #2: The driver checks for updates each time it is run.

Interested for the C++ sources for the driver? Contact me via the Business Support Forum here.

 

To install the driver, select the COM port in which your GPS is sending its data, then press "Install". That port number must not be in use by another application. The application stores the port configuration in HKLM\SOFTWARE\GPSSensor7. After the driver is installed and the sensor is enabled in Control Panel, any application can access the sensor.
The CLSID for the ISensor (for developers) is {800EE0CB-71EC-40f0-991C-7E76BFABD1AF}.

To uninstall the driver, select the "Uninstall" button. Although the Sensor API model allows driver uninstallation when a driver is in use, it is recommended to uninstall the driver only if no other apps are using the sensor.

To learn how you can develop sensor-enabled and location-aware applications, see my article on CodeProject.

Returned Values


X SENSOR_DATA_TYPE_LONGITUDE_DEGREES
Y SENSOR_DATA_TYPE_LATITUDE_DEGREES
Z SENSOR_DATA_TYPE_ALTITUDE_SEALEVEL_METERS
HDOP SENSOR_DATA_TYPE_HORIZONAL_DILUTION_OF_PRECISION
VDOP SENSOR_DATA_TYPE_VERTICAL_DILUTION_OF_PRECISION
PDOP SENSOR_DATA_TYPE_POSITION_DILUTION_OF_PRECISION
NSAT SENSOR_DATA_TYPE_SATELLITES_IN_VIEW
Speed SENSOR_DATA_TYPE_SPEED_KNOTS
True Heading SENSOR_DATA_TYPE_TRUE_HEADING_DEGREES
Fix Quality SENSOR_DATA_TYPE_FIX_QUALITY
Satellite information SENSOR_DATA_TYPE_SATELLITES_IN_VIEW
SENSOR_DATA_TYPE_SATELLITES_USED_COUNT
SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_AZIMUTH
SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_ELEVATION
SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_PRNS
SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_ID
SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_STN_RATIO
SENSOR_DATA_TYPE_SATELLITES_USED_PRNS

To use this driver in Turbo GPS, Start Turbo GPS, goto Tools->GPS->GPS Setup and select the Sensor API and the Sensor Driver:

After that, trying Tools->GPS->Connect will connect Turbo GPS to the driver.

 

Change Log