Laser GPS Converter V2 update

Update 2015-10-5: I should have added this some time ago, but I suggest using Thom-x’s improved version now. His program supports devices that include heartrate and elevation data, and has a bunch of other useful changes. You can find it here or in the comments.

Original Post: A while back I wrote a program for my own use to extract recorded gps tracks from a program called ‘Laser GPS’, published by Navigator/Navig[8]r/etc for use with their gps watches, bike computers and so on. The program allows getting the tracks out as GPX files, which is a little more useful than the alternatives that Laser GPS offers. After finding a few problems with the original version I decided I was too lazy to fix them and instead just created a new version. It’s an all-round better one since I’ve learnt a bit more C# since writing the first. Notable changes:

  • Now produces actually-valid GPX files for all 12 months of the year!*
  • No longer has permanently disabled metadata fields, or metadata fields at all
  • Allows exporting multiple tracks to a single GPX file
  • Includes a hastily-written readme file

You can download it here See the note at the beginning about Thom-x’s version. Alternatively, get the code here.

*I made a really stupid mistake where a zero would be left out of the date for some of the first nine months of the year, e.g. 2014-9-23 vs 2014-09-23. Other programs I used the resulting files in didn’t complain about it, and had no problems reading the dates, but it was still technically incorrect.


18 thoughts on “Laser GPS Converter V2 update

  1. Thom-x

    Your app is very cool, however my GPS support altitude but not you app.
    Can you please upload the source ? I will be able to adapt it for mine.

    1. bdhurkett Post author

      Whoops! I never synced the changes, and never even committed the last edit. That’s done now, and I added a few basic comments and quick changes, and an MIT license.

      The program is in C#, and I was kind of learning how to access databases as I went, so looking back on it now it’s less polished than I remember. But it’s pretty simple so it shouldn’t be too hard to modify. If anything breaks, it will probably be the database access…

      All the code is in Form.cs, not Program.cs. To add something like altitude, the SELECT string you’ll need to add to is in GetTrackPoints(), and ExportTracks() would need to be updated as well.

    2. Thom-x


      I forked it and added an “export all” button, heart rate and elevation.

      I needed you app because my software doesn’t export runs at all…
      For your information my device is not a watch but a bike counter (Ultrasport Navbike 400) it use the exact same “protocol” as yours.

      Yesterday I managed to make it work with the GPS Tracking S20 software, it looks exactly the same as the one given by the constructor (and is as crappy as this one too).

  2. VJ

    Like Thom-x, i own an Ultrasport navbike 400 and i was hoping this program could help me but it doesn’t work under windows XP :( Is it normal ? Is .net 4.5 required ?
    I can’t compile either the fork by Thom-x (VS studio express 2010) :(

    1. bdhurkett Post author

      It targets 4.5.1, but that was just the default, and it’s not necessary. See if this version works – it’s Thom-x’s copy (except the visual changes – nothing personal, just keeping things simple!) compiled for .NET 4.0. No need to install or anything, just open it.!152545&authkey=!AJGApzvnw4fDzVA&ithint=file%2czip
      Have you tried changing the target on your own computer? There are instructions for your version of VS here: and there shouldn’t be any need to fix the code unless you go to even earlier versions of the framework.

  3. VJ

    I couldn’t open the project in VS 2010 because it said that is was created by a newer version of VS, blahblah…

    I changed “Format Version 12.00” to 10.00 in the .sln and “supportedRuntime version” to from 4.5 to 4.0 in app.config and it opened in VS2010 and I was then able to change the target framework. Your version compiled and worked, Thom-x last version with material design didn’t but the previous one did work : (same version as the binary you provided ?)
    The heart rate is wrong (5 times too high), but that’s a minor problem :)

    Thank you again for this program, and for the binary .

    1. bdhurkett Post author

      Yes, that would probably be the same as the binary I linked in the reply, but I’m glad you’re able to get it compiling on your computer! The heart rates being wrong is interesting – my device doesn’t support it so I don’t know how it records them – but that should be easy to fix if you want to, now you have it working.

  4. Jérémie

    I have both a Ultrasport Navbike 400 and a NavRun 200 and try both versions of theconverter (the original one and Thom-x’s version, under Windows 8). I ran into the following uncatch exception when loading the .dll:

    Consultez la fin de ce message pour plus de détails sur l’appel du débogage
    juste-à-temps (JIT) à la place de cette boîte de dialogue.

    ************** Texte de l’exception **************
    System.FormatException: Le format de la chaîne d’entrée est incorrect.
    à System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt)
    à System.String.System.IConvertible.ToDouble(IFormatProvider provider)
    à System.Convert.ToDouble(Object value)
    à Laser_GPS_Converter_2.Form1.btn_Load_Click(Object sender, EventArgs e)
    à System.Windows.Forms.Control.OnClick(EventArgs e)
    à System.Windows.Forms.Button.OnClick(EventArgs e)
    à System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
    à System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    à System.Windows.Forms.Control.WndProc(Message& m)
    à System.Windows.Forms.ButtonBase.WndProc(Message& m)
    à System.Windows.Forms.Button.WndProc(Message& m)
    à System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    à System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    à System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

    The error message means that the string format on entry is invalid.

    Any idea ? I can give you the dll file if it helps.



    1. bdhurkett Post author

      Strange – it’s breaking on a line that’s meant to get the length of each GPS track and turn it into a number. It’s not a vital part, but I expect something else would fail later if you could skip it.

      Perhaps your devices store the data in a different way – I’d appreciate it if I could look at your ‘dll’ file.

    2. Jérémie

      Hi Benedict and Thom-x,

      Thank you very much to both of you for your so-useful tool … and for providing me so quick solution to my problem !

      For the reader, I provided Benedict with my .dll file by email and he figured out that one of my device doesn’t record the total length of tracks. This was causing the issue and he kindly fixed Thom-x’s version for me (and also let him know about the issue). The version that Thom-x uploaded yesterday ( works perfectly for my devices (Ultrasport Navbike 400 and a NavRun 200).

      Kind regards,


  5. Pingback: Creating GPX files from a Navig[8]r GPS device | Benedict Hurkett

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s