Save Current Location
I've been using an addon for Centrafuse (front end software) that will allow me to save my current location to a custom CSV file, so that the location can later be imported into other GPS applications. Now I'm looking for a standalone version.

Basically, the addon I use allows you to set up to 10 different fields of data (2 of which are reserved for the longitude & latitude).

For example, this is the setting I had (The format of the line to be written to the CSV file):
%1 (%2),%3,%2,%4,%5,%6,%lng,%lat
The data for that is:
%1 = Name
%2 = City
%3 = Address
%4 = State
%5 = Phone
%6 = Category
The addon itself had 2 buttons on the screen: Refresh & Save. If you pressed the Refresh, it temporarily saved the current location to memory. Once you hit Save, it'd prompt you for any of the %(number) fields and would then write the data to the CSV file. If the CSV file doesn't exist when you hit the Save, you can also specify that the program write out a header line before writing the data to the file. The header line for the above example would be:
Name (City),Address,City,State,Phone,Category,Longitude,Latitude
When you hit the Save button, it'd ask for input for each of the %(number) entries. Even though the City (%2) is in the line twice, it would only ask you to type it one time.

Since it's a pretty simple program, I tried finding a free gps toolkit so that I could try writing my own code. However, I'm not finding anything.

So, the question is, does anyone know of any free toolkits for Visual C#, Visual Basic, etc? or have the ability to create this useful little utility? I know I use that addon quite a bit - it makes it soooo easy to add new POI's/pushpins that it's unreal.
Hm, not familiar with Centrafuse as I use RoadRunner but is there support in CF to display the latitude and longitude on the screen? There is in RoadRunner. If this is the case, you could write a plugin for CF that picked up the current lat and lon. CF knows when you press the add record button.

Alternatively, your application could read the GPS com port data and parse the NMEA data which is text based and a documented standard, simply filter out the lat and lon and keep the current fix in memory.

Code to read the com port is easy enough to find, and parsing the NMEA stuff would be easy as you would throw away a lot of sentences that don't interest you based on the first few characters of the sentence. strtok() is a C fnction that makes parsing a string so easy to do.

You could then use Xport to split the GPS feed you have so you have a dedicated virtual com port for your application. XPort
I have Franson's GPSGate, which is pretty much the same thing. I can have as many com ports as I need.

I've already got the plugin for Centrafuse that does what I described. However, I'm wanting to stop using Centrafuse, but still need that plugin's functionality.
Well I decided to have a look at this myself and checke dout sme of my logs. MY receiver only returns sentences for GGA, GSA, CSV, RMC and VTG.

This link describes the NMEA sentences and if you can grab a log from GPSgate (or run XPort and go for a drive to get some NMEA data, you will be able to make sense of the data in the sentences (I could).

NMEA data

And here is a link to a C library for the communications port
CodeProject: Serial library for C++. Free source code and programming help

So all you would need to do is to run an application in the background (I'd probably write the app as a service) to poll the com port data and look for RMC sentences. Then if the status = 'A' (Active or valid), save the latitude and Longitude in a global variable. Then you just need to retrieve the position data when you need it.

There you go an easy little project, let me know how you get on... About