Project - extended GPS driver

extended GPS driver

modified driver, based on the Seeed.GPS module and driver.
Impliments:

  • sending/receiving NMEA messages
  • sending/receiving UBX messages
    controls the GPS message rate
    prevents a buffer overflow by serial.buffer.discard

For indoor testing your software it’s contain a virtual driver, delivering GPS NMEA data based on a txt file.

it’s VB-Code :slight_smile:

5 Likes

If I am not mistaken this is the first VB project on codeshare.

… and .vb can’t be viewed without downloading.
Need an update to the viewer.

the second version was uploaded

The processing of the UBX-messages was renewed. A UBX-Message-class was generated.
Some bugfixes.

A usage example is added to show how to use the ALP-File from “http://alp.u-blox.com/current_3d.alp”.
with the ALP file you get a GPS-Fix in only a few seconds and you get a Position at places with a non clear sky (somtimes i get an inddor position fix)

1 Like

I’ve change the namespace and the dll-name so is possible to replace the official driver.
the replacement is described in:

the replaced driver is useable in VB and C# with the designer

I will post a new codeshare projekt with a prove of concept using the driver in a c# project

Thanks Daniel for this new driver! I was struggling with the buffer overflow.

2 things I noticed:
[ul]The shift operator in VB (<< and >>) does not work in the latest version of the framework[/ul]
[ul]The Latitude is spot on with my real coordinate, but the longitude is not. About .7 degrees off. I did not had time to investigate the code to see where it could be coming from.[/ul]

Thanks again!

@ Gabriel M -

no problem with vb10 / .NET Micro Framework SDK 4.2 (RTM QFE2) / GHI V 4.2.10

the driver don’t calculate the coordinate, so maybe problem with the fix/state of the gps.
I’m thinking about evaluate the accuracy and add the value to the ‘POSITION’-Object

I have VB12 / NETMF SDK 4.3 and the latest GHI. Looks like the issue is from the NETMF side.

I do not know how GPS works behind the scene, I was assuming that it would have give the right lat/long out of the box. Being offset of ~55kms is kind of annoying. If you can fix that I will appreciate, meanwhile I’ll check about the POSITION object!

@ VB-Daniel - I retried the original Seeed driver and it’s giving me the right position.

Do you have a compile version of your code? I’ll like to try it.

@ Gabriel M - sorry for the late answering…realy busy time…
I can’t retrace your problem. I just tested outside and get a valid position.
So some questions.

  • do you wait for the position received event
    or do you parse the NMEA message

  • if you parse the NMEA message are you sure the position is fixed ?
    before the gps is thrown non valid values → see gga message
    field 6 fix status :
    0 - no fix / invalid
    1 - 2D or 3D
    2 - DGPS
    6 - estimated fix

look after the units
position.latitude dd.ddddddd
position.latitudestring “ddmm.mmmm”
position.longitude dd.ddddddd
position.longitudestring “dddmm.mmmm”

it’s not possible to load it on codeshare…
post your mail on monday evening (europe-time)
i answer the files…

revise my code

  1. change using Serial.HardwareFlowControl.Required
    so the communication works more stable.

2)change the baudrate to 57600 / save a lot of procesor time

3)add a function to send raw data to the gps, nedded to send RTCM data