GPSCom v1.06 A shareware COM
Library for GPS support (Obsolete)
IConnectionPointImplMT v1.02 A freeware IConnectionPoint implementation
for ATL (Latest version now available from
Welcome to GPSCom, a simple shareware COM based
library which can be used to add GPS support to your Windows applications. GPSCom is a standard COM EXE developed in ATL in VC
2005 SP1. This component is
intended as a complete replacement for the existing GPSLib dll developed by the
author. GPSCom internally uses an advanced ATL class called
IConnectionPointImplMT. This module is licensed differently than GPSCom and is
freeware, that is you are free to use it under the standard licensing conditions
for my freeware source code. Please note that all the other modules inside of
GPSCom are not open source.
The enclosed zip file contains the GPSCom source code, and
Unicode Release binary and a sample VB 6 app to
test all the methods of the classes.
- Can be used by any development
environment which supports calling an out of process COM object.
- Can be used by early or late
bound clients i.e. COM development environments which do not use type
libraries such as ASP, VBScript and JScript are fully compatible with
- Allows connections to GPS devices to be shared between
multiple clients i.e. multiple client processes can share the one connection
to the receivers serial port !!.
- A COM collection is provided
to allow clients to enumerate existing connections which they can then
connect to. This allows VB clients for example to use
the "For Each" collection syntax.
- Alternatively, clients can
open up a new connection and specify that the connection is not to be made
- COM Connection points are provided in the library to
allow client apps to be notified in real time of incoming GPS NMEA sentences.
- Client apps can also poll the connection for the NMEA
information if they so desire.
- Support for Unknown NMEA sentences.
- Supports any standard GPS device which supports the
NMEA 0183 standard and which presents its data on a Windows Serial Port.
V1.0 (21 June 2002)
V1.01 (1 January 2003)
- Minor code tidy up.
- Now uses v1.15 of my Serial port class.
V1.02 (13 January 2004)
- Fixed a minor thread protection issue related to an
internal variable used to signify that the worker thread which reads from the
serial port should be shut down.
- Also fixed a few typos in the documentation (this
V1.03 (20 July
- Updated documentation to use the same style as the web site.
- Optimized CGPSConnection constructor code
- Optimized CGGASentence constructor code
- Code now uses new C++ style casts rather than old style C casts where
- Made code more robust by handling memory allocation failures.
- Optimized CRMCSentence constructor code.
- Updated the code to compile with v1.20 of the author's CSerialPort
- Optimized CGPSPort constructor code
- Reworked CNmeaSentence::Double implementation
- Replaced calls to ZeroMemory with memset
- Fixed bug in CNmeaSentence::Date to do with parsing of 2 digit years
- Removed unnecessary CRMCResponse destructor
- Updated code to clean compile on VC 2005
V1.04 (23 January 2007)
- Code is now built and delivered using VC 2005 SP1.
- Now uses v1.21 of the author's CSerialPort class.
- Fixed a bug in CRMCResponse::Parse where the m_IsDataValid was being set
incorrectly. Thanks to "Kuronca" for reporting this problem.
- Complete review of the code in light of use of ATL8.
- Invalid RMC sentences are now also passed to clients.
- Removed the GGASentence::Valid property as it was not returning any
- The IConnectionPointImplMT class which GPSCom makes use of internally is
being made available as freeware.
V1.05 GPSCom / v1.01 IConnectionPointImplMP (8 February 2008)
- Updated copyright details.
- GPSCom now internally uses v1.24 of CSerialPort.
- Fixed a bug in CGPSConnection::MonitorThread in the correct use of CT2A.
- How you implement the Fire_ methods as documented for
IConnectionPointImplMP has been updated to refer to the need to serialize
access to the "m_Clients" member variable which is accessed via the
GetInterfaceAt method. The CProxy_IGPSConnectionEvents class in the GPSCom
project and the IConnectionPointImplMT::GetInterfaceAt method have been
updated to address this issue. Thanks to Michael Ford for reporting this
- The actual pointers which are stored on the internal
IConnectionPointImplMP::m_Clients array are now "CComGITPtr<TSinkInterface>"
heap pointers rather than actual stack instances. By doing this, the code
now has explicit control over when and how copy constructors and operator=
methods are being called as we add a element to the array. This avoids extra
overhead as the interface pointer is being added to the GIT. It also
addresses an issue where the cookie value which was being returned by Advise
was actually incorrect due to the fact that a copy of the CComGITPtr was
being added to the array. Thanks to Michael Ford for reporting this issue.
V1.06 GPSCom / v1.02 IConnectionPointImplMP (21 March 2010)
1 May 2010
- Please note that this component has been surplanted by the
new GPSCom2 freeware library from the author. Please use GPSCom2 instead of
GPSCom in all new developments.