Page 5 of 8 FirstFirst ... 3 4 5 6 7 ... LastLast
Results 61 to 75 of 120

Thread: Navigatie systeem

  1. #61
    Ik heb even een versimpelde unit gemaakt.
    Op je hoofdform zet je een TButton, TMemo, TTimer en TCircle.
    Je kunt met de kleur van de TCircle bijvoorbeeld aangeven of je een fix hebt (groen), die nét verloren hebben (geel) of langere tijd geen fix (rood).

    Je kunt dan dit doen:

    Delphi Code:
    1. uses uMyGpsData, UIConsts;
    2.  
    3. procedure TForm5.Button1Click(Sender: TObject);
    4. begin
    5.   MyGpsData := TMyGpsData.Create;
    6. end;
    7.  
    8. procedure TForm5.Timer1Timer(Sender: TObject);
    9. var
    10.   Line: String;
    11. begin
    12.   if assigned(MyGpsData) then
    13.   begin
    14.     Line := Format('Lastfix: %d secs ago with ', [MyGpsData.LastFixSecondsAgo]);
    15.     Line := Line + Format(' %d of %d sats', [MyGpsData.SatellitesUsedInFix, MyGpsData.TotalSatellites]);
    16.     Memo1.Lines.Add(Line);
    17.     Memo1.GoToTextEnd;
    18.  
    19.     // je kunt dus ook iets doen als
    20.     Circle1.Fill.Color := claGreen;
    21.     if MyGpsData.LastFixSecondsAgo > 3 then Circle1.Fill.Color := claYellow;
    22.     if MyGpsData.LastFixSecondsAgo > 10 then Circle1.Fill.Color := claRed;
    23.  
    24.   end;
    25. end;

    Let op... je mag maar één keer TMyGpsData.Create doen. Dit kan ook wel anders maar ik heb dit even snel in elkaar gegooid.
    Bij onderstaande image zie je dat de cirkel geel is. Dat komt omdat mijn telefoon (Vodafone prepaid) altijd 4 seconden achterloopt op de echte UTC tijd.

    Click image for larger version. 

Name:	2016-11-08 13.14.49.jpg 
Views:	113 
Size:	98.8 KB 
ID:	7418

    Attached ook de uMyGpsData. Die zou ook nog de positie op kunnen slaan zodat je niet eens met TLocationSensor hoeft te werken maar als voorbeeld is het denk ik wel even goed. Je hebt dus e.v. alleen de LastFixSecondsAgo nodig om te kijken hoe lang het geleden is dat je een goede fix had.

    Je moet maar even kijken of deze unit zo 123 bij jou zonder aanpassingen werkt want ik werk met 10.1 Berlin.
    Attached Files Attached Files

  2. #62
    Een eerste snelle test laat zien dat het werkt !
    Ik ga het de komende tijd verder testen, maar het ziet er zeer goed uit.

    Bedankt hiervoor !

    Wat betreft je plattegrond. Er zijn wel wat mogelijkheden maar de map-data gedetailleerd opslaan voor heel Nederland kan behoorlijk veel ruimte in beslag nemen. Tevens is het tekenen daarvan geen simpele opgave. Als je internet toegang hebt tijdens het rijden dan zou het makkelijker zijn om een google-map of openstreet-map binnen te halen.

    Je zou op diezelfde manier ook een versimpelde route(-planner) weer kunnen geven.
    Het is toch wel de bedoeling dat het Offline moet kunnen werken. Er zijn meerdere routeplanner App's die ook offline werken, dus het zou mogelijk moeten zijn wat de opslag van de data betreft.
    Ook mijn oude TomTom heeft maar 2MB geheugen, en daar staan meerdere landen op en mooi gedetailleerd...

    Ik ben al een tijdje hiermee aan het stoeien, maar krijg helaas maar geen begin: https://github.com/navit-gps/navit/releases/tag/v0.5.0

  3. #63
    2MB voor meerdere landen Ik denk dat je de tomtom app zelf bedoeld. De kaarten zijn echt groter. Je hebt al echt met dan 2MB nodig voor de straatnamen.

    OpenStreetMaps heeft een mogelijkheid om een mapselectie te downloaden. Moet je maar eens kijken hoe groot dat is

  4. #64
    Sorry, het geheugen van de TomTom is 2 GB

  5. #65
    Ah ja, 2GB klikt meer als de ruimte voor een kaart. (Niet iedereen wil 2GB aan kaarten op zijn toestel)

    Ik heb wel wat simpele perl-code gevonden om heel summier een kaartje te tekenen maar dat is bij lange na niet zo mooi als de google maps e.d. http://wiki.openstreetmap.org/wiki/Osmrender.pl

    Maar nog niets kant en klaars voor Delphi (overigens wel betaald bijvoorbeeld deze).

  6. #66
    Ik heb wel wat simpele perl-code gevonden om heel summier een kaartje te tekenen maar dat is bij lange na niet zo mooi als de google maps e.d. http://wiki.openstreetmap.org/wiki/Osmrender.pl
    Dat lijkt mij een mooi begin, maar ik zie nergens code, dus hoe werkt dat precies ?

    Maar nog niets kant en klaars voor Delphi (overigens wel betaald bijvoorbeeld deze).
    Dat ziet er zeer goed uit. Ik zie 2 prijzen 500,- en 220,- welke zou ik dan nodig hebben ?
    Ik zie vanalles, maar kan deze opzet ook navigeren ? Want dat wordt het volgende natuurlijk...

    Ik heb vandaag de code getest (helaas ben ik niet in een tunnel geweest).
    Ik heb 2 Gsm's een S2 en een S4 en het valt mij op dat daar verschil in zit:

    S2:
    Click image for larger version. 

Name:	S2.jpg 
Views:	91 
Size:	64.7 KB 
ID:	7420

    S4:
    Click image for larger version. 

Name:	S4.jpg 
Views:	108 
Size:	88.6 KB 
ID:	7421

    De S2 komt nooit onder de 35 Sec (milliseconde ?) en de cirkel is constant Rood, ook bij goed ontvangst.
    Ook vindt deze veel minder satellieten.
    Nu is de S2 'niet' voorzien van een SIM kaart, heeft dat er iets mee te maken (gezien je opmerking die je eerder maakte over de 4 sec. verschil die je hebt met je Vodafone prepaid).
    Last edited by MMSoft; 09-Nov-16 at 21:52.

  7. #67
    Quote Originally Posted by MMSoft View Post
    De S2 komt nooit onder de 35 Sec (milliseconde ?) en de cirkel is constant Rood, ook bij goed ontvangst.
    Ook vindt deze veel minder satellieten.
    Nu is de S2 'niet' voorzien van een SIM kaart, heeft dat er iets mee te maken (gezien je opmerking die je eerder maakte over de 4 sec. verschil die je hebt met je Vodafone prepaid).
    Die S2 heeft nooit echt goede satelliet ontvangst gehad bij mij. Met J5 kan ik binnen een kast (dichte kamer) inlopen en ik blijf ontvangst van satellieten krijgen

    M.b.t. het rode vlakje en je 35 seconden verschil... Als je een app download die de clock met secondes weer geeft (bijvoorbeeld deze widget voor op je scherm) en dan tegelijk naar http://www.worldtimeserver.com/ gaat dan zul je zien dat je S2 35 seconden achter loopt op de werkelijke tijd. Je krijgt n.l. van de GPS de echte UTC tijd maar om dus te controleren hoeveel seconden oud die is moet je die controleren met een tijd. Dat doe ik dus met de tijd van je telefoon maar dan moet die wel tot op de seconden goed staan.

    (En zoals bij mij krijg ik de tijd van het Vodafone netwerk en die loopt dus 4 seconden achter )

    Je S4 staat dus wel precies goed.

    Je zou een mechanisme in kunnen bouwen die de werkelijke tijd van de GPS bepaald... Ik weet niet of er een functie om de echte tijd op te halen maar je zou, als je in 2 achtereenvolgende metingen (seconden), een verschillende tijd krijgt, kunnen zeggen dat die tijd dus tot op de seconden de echte tijd zou moeten zijn. Als ik tijd heb zou ik dat in de unit in kunnen bouwen.

    En oeps.... nu even opnieuw nadenkend zou het kunnen zijn dat ik de tijden verkeerd van elkaar af trek. Als je S2 35 seconden achter loopt zou de GPS dus een tijd in de toekomst geven en zou het eigenlijk -35 seconden moeten zijn. Bij mij testen is het nl. 4 seconden achter op de echte tijd en geeft ie 4 (maar dat moet dus -4 zijn). Ja... dan moet je mobiel dus echt wel op de goede tijd staan

  8. #68
    Net gekeken en de S2 loop inderdaad 35 sec. verkeerd (vergeleken met mijn zelfgebouwde DCF klok), maar niet 'achter' maar 'voor'.
    Nadat ik deze op tijd had gezet, heb ik daarop ook een groene cirkel en een afwijking van 0 Sec.

    Wat ik nog niet begrijp:
    Waarom geeft de S2 aan dat er ca. 10 satellieten zijn, en volgens de S4 zijn er maar liefst ca. 24.
    Dus waar komt dit getal vandaan ?
    Last edited by MMSoft; 09-Nov-16 at 23:08.

  9. #69
    Hé, dat is grappig. Mijn J5 loopt toch echt 4 seconden achter en hij geeft bij de satellieten ook 4 seconden aan. Dat moet ik morgen eens bekijken.

    Het aantal satellieten is wat je gps gewoon ziet. In de gps-status kun je de status ophalen van alle zichtbare satellieten en in die status staat ook of die satelliet gebruikt is voor de fix (onbetrouwbare satellieten, omdat ze te ver weg staan e.d. worden niet gebruikt in de fix, vandaar b.v. 12 gebruikt van 24). De S2 geeft echter een wat slechtere gps-ontvanger dus die ziet gewoon minder satellieten. Hoewel het natuurlijk ook ingebouwd zou kunnen zijn dat er in de S2 maar maximaal 11 satellieten opgeslagen kunnen worden in de software of chip.

  10. #70
    Die perl source kun je vinden op de profile pagina van die gebruiker.

    Maar misschien is osmdroid een makkelijkere methode.
    https://github.com/osmdroid/osmdroid...line-Map-Tiles

    Er zijn wel wat delphi sources te vinden om die te gebruiken.

    Hoewel... "offline map tile"... Misschien is dat alleen voor tiles/plaatjes i.p.v. een complete osm-file.

  11. #71
    Ik heb de uMyGpsData.pas even aangepast.
    Nu is de TMyGpsData.LastFixSecondsAgo gewoon altijd accuraat.

    Reden:
    JLocation heeft naast de getTime(), die een UTC tijd terug geeft, ook een getElapsedRealtimeNanos(). Die geeft de nanoseconden van de fix sinds de telefoon gestart is. Ik kan die goed vergelijken met TJSystemClock.JavaClass.elapsedRealtimeNanos() zodat je precies de nanoseconden hebt sinds de laatste fix. Geen gedoe met vergelijken van tijd maar gewoon van elkaar aftrekken en delen naar seconden.

    Ik ben ooit nog wel van plan de TLocationListener uit te breiden om ook echt de locatie op te slaan zodat je niet met TLocationSensor hoeft te werken maar voor het bepalen van de fix is dit prima (en geen gedoe meer met verkeerde tijd in de telefoon).
    Attached Files Attached Files

  12. #72
    Op de S2 geeft het de foutmelding:
    Access violation at address 409F709E, accessing adress 0000001C.

    Ook nadat ik de App opnieuw geinstaleerd heb.

    Vraag: MyGpsData := TMyGpsData.Create; //moet toch nog steeds 1x uitgevoerd worden ?

  13. #73
    Ja. De TMyGpsData.Create mag maar 1x uitgevoerd worden. Wel VOORDAT je de timer af laat gaan (maar daar zou die assigned() voor moeten werken).
    Dit zou nog wel mooier met een Class-functie automatisch gedaan kunnen worden maar dat heb ik nog niet gedaan.

    Raar dat je een foutmelding krijgt.

    Hoe gebruik je de code?
    Ik heb nog steeds dit:

    Delphi Code:
    1. uses uMyGpsData, UIConsts;
    2.  
    3. procedure TForm5.Button1Click(Sender: TObject);
    4. begin
    5.   MyGpsData := TMyGpsData.Create;
    6. end;
    7.  
    8. procedure TForm5.Timer1Timer(Sender: TObject);
    9. var
    10.   Line: String;
    11. begin
    12.   if assigned(MyGpsData) then
    13.   begin
    14.     Line := Format('Lastfix: %d secs ago', [MyGpsData.LastFixSecondsAgo]);
    15.     Line := Line + Format(' with %d of %d sats', [MyGpsData.SatellitesUsedInFix, MyGpsData.TotalSatellites]);
    16.     Memo1.Lines.Add(Line);
    17.     Memo1.GoToTextEnd;
    18.  
    19.     // je kunt dus ook iets doen als
    20.     Circle1.Fill.Color := claGreen;
    21.     if MyGpsData.LastFixSecondsAgo > 3 then Circle1.Fill.Color := claYellow;
    22.     if MyGpsData.LastFixSecondsAgo > 10 then Circle1.Fill.Color := claRed;
    23.  
    24.   end;
    25. end;

  14. #74
    Ik heb alles gelaten zoals het was, alleen de unit "uMyGpsData" vervangen door de nieuwe versie.
    Met de oude versie had ik geen problemen, en nu wel.

    Als test even de oude "uMyGpsData" terug gezet, en dan heb ik geen probleem.
    Last edited by MMSoft; 10-Nov-16 at 17:26.

  15. #75
    En wat gebeurd er als je die TJSystemClock.JavaClass weg haalt en Clock gewoon op 0 zet. Loopt ie dan wel door?

    Delphi Code:
    1. Clock := 0;
    2. // Clock := TJSystemClock.JavaClass.elapsedRealtimeNanos() div 1000000 { ns->ms };

Page 5 of 8 FirstFirst ... 3 4 5 6 7 ... LastLast

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •