
GPSCom v1.05 A shareware COM
Library for GPS support
IConnectionPointImplMT v1.01 A freeware IConnectionPoint implementation
for ATL 8
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.
Features
- 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 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.
Shareware Notice
GPSCom is shareware and this
trial version is a fully functional evaluation copy. This means that you are
free to evaluate GPSCom for up to 30 days. After this period if you are still
using GPSCom and/or wish to include it in a project of yours, then you are
legally obliged to register GPSCom with the author. Registration will entitle
you to comprehensive email support from the author. The cost is $20 US dollars.
I do not support online registration for this product yet so you must register
via normal post. Remember to include your email address in your letter so that I
can quickly confirm receipt of your registration. Payment should be made out to
PJ Naughter and sent to:
PJ Naughter,
Clonganny,
Ballygarrett,
Gorey,
Co. Wexford,
Ireland
The registration fee is very
small and its a great incentive for me to keep improving GPSCom. Once I have
received the registration you are entitled to unlimited email support for
GPSCom.
Updates
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
file).
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.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 information.
- 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
bug.
- 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.