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
- 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 GPSCom.
- 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 sharable.
- 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
- 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.
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.
V1.06 GPSCom / v1.02 IConnectionPointImplMP (21 March 2010)
- Updated copyright details.
- GPSCom now internally uses v1.27 of CSerialPort.
- Updated the instructions on how to code the Fire_* methods to avoid a COM
reference counting problem which could have resulted in memory leaks. Thanks
to Peter Blanz for reporting this issue.
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
- 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.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 useful
- The IConnectionPointImplMT class which GPSCom makes use of internally is
being made available as freeware.
V1.03 (20 July 2006)
- 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 necessary.
- 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 class.
- 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.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
- Also fixed a few typos in the documentation (this file).
V1.01 (1 January 2003)
- Minor code tidy up.
- Now uses v1.15 of my Serial port class.
V1.0 (21 June 2002)