The DotSpatial project is a whole bunch of libraries that make it easy for GIS geeks to easily manipulate their data with geo-friendly object models. Most of the project is centered around GIS, but it also has a bunch of classes for gathering GPS data. The geopositioning industry is (thankfully) very standards based, and this work incorporates those where necessary.
Forgive the following diatribe if this is not new information…
All GPS units use a data output structure defined by the NMEA standard, which is essentially a comma delimited string. Some companies add their own additional feature codes. All handheld units (I’ve worked with) make a continuous data stream available serially. This standard makes it very easy to write an interface (the c# kind), which is what DotSpatial has done. On top of that they’ve written extensive libraries that autodetect serial ports and look for this data. For instance, they’ve got a Bluetooth class that, once paired, will start collecting data with 2 lines of code.
At a low level, there may be GPS units, in cell phones for instance, that do all this processing right on the chip, and output data in some other manner. In these cases, whatever OS the phone is running exposes a COM port to get at the data (or at least it should if your carrier let’s you, that is, some lock it down and make you pay to get at it).
In my code, I tend to stick with the basics, which means NMEA standard serial data only. I have an older Delorme Earthmate BT-20. Very small, low power bluetooth board. I got it originally to GPS enable a laptop, but then discovered the board has ready made serial pinouts to hook directly to my FEZ controllers at 3.3v. That was a bonus ‘feature’ for sure
So, the (not so) short answer… yes, the DotSpatial code will work with any (common) GPS. The big manufacturers, like Garmin, have evolved their own ‘standard’ on top of the NMEA specs, which a lot of others have adopted. You will see other lesser known brands say something like ‘Garmin compatible’ and software that says will read any ‘Garmin compatible’ GPS.
Disclaimer - I’m generally talking about ‘ready made’ GPS boards that are commonly available all over the place. You can certainly go the DIY route and make your own board from scratch. I leave that kind of low level coding up to the hard core embedded geeks.