New GPSDriver library

agraham

Expert
Licensed User
Longtime User
The GPSDriver library does support external GPS devices
That's good news as I've obviously totally misunderstood what the "External GPS Settings" do :signOops: and do you know what, I've re-read the help (what little there is!) and still don't really understand it. :confused:
 

wolfgang

Member
Licensed User
Longtime User
Hi,
tested the new GPSDriver on my HTC Cruise 3650 WM6.0 Pro and it works good. But when I try to compile the complete demo for my device an error occurs in line 45:
B4X:
UTM() = converter.WGS84LatLonToUTM(gps.Latitude,gps.Longitude)
The altitude results are strange too. The sea level altitude is exactly the ellipsoid altitude and the ellipsoid altitude is not displayed. I think this is because off not all GPS chipsets support calculation of MSL (MSL = ellipsoid altitude - geoids separation). The values of the geoids separation are normally stored in a database and this database is missing on some receivers. To make the confusion complete do not all receivers deliver the same NMEA 0183:
Fortuna Clip - On
$GPGGA,161650.417,4841.7902,N,01004.0220,E,2,05,2.0,578.5,M,48.0,M,2.0,0000*70
578.5 = ellipsoid altitude (MSL = 530.5)
Data Logger i - 747
$GPGGA,080026.000,4841.7900,N,01004.0198,E,1,9,0.96,532,5,M,48.0,M,,*5E
532.5 = MSL
The correct MSL is 532 m. The HTC delivers 584 m which is a "good" ellipsoid altitude. What can we do?
 

Attachments

  • error.JPG
    error.JPG
    14.3 KB · Views: 14

wolfgang

Member
Licensed User
Longtime User
How did you declared UTM() ?

It is exactly your demofile "GPSDriverDemo". I changed nothing.

B4X:
Sub Globals
   Dim Type (xZone, X, yZone, Y) UTM As double
End Sub
 

wolfgang

Member
Licensed User
Longtime User
It compiles fine here. Please try to download the zip file again and copy GPSDriver.cs to Basic4ppc libraries folder.

I did what you said and now it works!?
 

agraham

Expert
Licensed User
Longtime User
What's the use of the Age parameter in the GetGPSData method?
From the MSDN docs.
Maximum age, in milliseconds, of location information. The GPS Intermediate Driver only returns information that has been received within the time specified by this parameter. Any information that is older than this age is not returned.
 

ClarkVent

Member
Licensed User
Thank you for your answer.

If that's the case then it doesn't work. I've actually set it to 1000 milliseconds but it will always return the last fetched data, regardless of its age.

Let me try to give you an example.

If you write a simple program that retrieves the GPS data every second or so, and you turn off your PPC, the next time you switch your PPC ON again, the first dataset retrieved will always be data from the time the PPC was switched off.

I will test again to make sure, but that's what I see happening here.
 

wolfgang

Member
Licensed User
Longtime User
Hi,
ClarkVent was a little bit faster but I try to ask with my own words.
In the gpsdemo the age is set to 6000 msec. The normal update rate of a receiver is 1 Hz. What happens with the other 5 or 6 updates? What is our result, only the last values or a floating average calculation?
I know I should test it.
 

wolfgang

Member
Licensed User
Longtime User
Altitude problems solved?

Hi,
the test on an Asus 632 N (WM5) was successful too. Both, MSL and “ellipsoid altitude” are displayed but the ellipsoid altitude is not an altitude it is the geoidal separation. In my case it is 48 m, our MSL is 532 m. That means there is no doubt (for me). I can imagine, that on a receiver with the availability of geoidal separation item 9 of $GPGGA is MSL and item 11 is the geoidal separation and without, item 9 is the ellipsoid altitude (my HTC Cruise). If there is no geoidal separation item 11 is “nothing” and that’s the reason for nothing is displayed.
 

agraham

Expert
Licensed User
Longtime User
I can imagine, that on a receiver with the availability of geoidal separation item 9 of $GPGGA is MSL and item 11 is the geoidal separation and without, item 9 is the ellipsoid altitude (my HTC Cruise). If there is no geoidal separation item 11 is “nothing” and that’s the reason for nothing is displayed.
That is exactly what I observe in the NMEA sentences on two of my GPS devices, one does geoidal separation the other doesn't.
 

Georg

Member
Licensed User
Longtime User
Error on GPSDriverdemo.exe

Hi,

when the GPSDriverdemo.exe runs, sometimes i get the error message:

error occurred on sub _satellites_updatesatellites
NullReferenceException ???? :confused:
 

schimanski

Well-Known Member
Licensed User
Longtime User
GPSDriver on several devices

Hello all together!

I have tested the new GPSDriver on several devices:

- Qtek S200 with external bluetooth GPS-Sirf III
- Eten Glofiish X600 with internal Sirf III-GPS
- HTC Touch Diamond with internal Qualcomm-GPS
- VPA Compact GPS with internal Qualcomm-GPS

It runs very fine with all devices...:sign0060:

But now, I have copy the GPSSettings.exe on the VPA Compact GPS to set a 'Program Port'. After the start, GPSSettings shows the 'Hardware Port' as GPD1, no Program Port and 115200 Baud with 'Manage automaticaly'. After this time, my Basic4ppc-application can't get data from the GPS, I have tested several settings. The GPS is COM9 but the GPSSettings only shows the com-ports until 8. Then, I have deinstalled the GPSSettings, but the same problem. Under TomTom5 the GPS-Chip works fine. Is there a way to initialize or reset the GPS-chip to the first time?

Thanks for answer and :sign0188: to the GPSDriverLib.....
 

agraham

Expert
Licensed User
Longtime User
GPSDriver doesn't need to know a Com port and doesn't use one. It calls the Windows GPS Intermediate driver directly which ought to know how to access the GPS. The Program port is only required for older programs that expect to find the GPS connected to a COM port like, I think, TomTom 5 and has no effect on GPSDriver. The Hardware port governs the source of the GPS data that the Intermediate Driver manages. Assuming that GPD1 is the correct source for the internal GPS have you tried various baudrate settings? I don't think that "manage automatically" means that it will auto-detect baudrates.

EDIT:- I've just noticed that you said it worked on "VPA Compact GPS with internal Qualcomm-GPS" so now I don't understand the problem!
 
Top