GPS voor lui oude Geeks (3 / 5 stap)

Stap 3: Mijn GPS programma


ik ga niet proberen om te onderwijzen iedereen hoe te schrijven van programma's in Visual Express. Mijn programma is een voorbeeld van hoe u GPS-software voor uw enige behoeften kunt aanpassen.
Wat ik zal dekken zijn enkele van de problemen en oplossingen in het algemeen voorwaarden.

Doelstellingen van het programma:
Praten met GPS en monster GPS-gegevens.
Breedtegraad, lengtegraad, hoogte weergeven
Berekenen van een lopend gemiddelde van de bovenstaande.

Fase 2: Ik wilde zien hoe nauwkeurig mijn GPS was. Zie de volgende stap.

Probleem: Praat met GPS. De BU-353 is een USB-apparaat. Zij ontvangt + 5V op de USB-aansluiting. Één van de leuke eigenschappen is dat zodra het macht heeft, het begint automatisch elke seconde, afgeven aan de NMEA 0183 seriële data op 4800 baud.
Oplossing: VB Express heeft dus al een besturingselement met de naam Serialport. Stel deze in op 4800 baud, stel deze in op de juiste Com-nummer en open deze.

Probleem: GPS voorbeeldgegevens. Hebt u een manier om te kijken naar de seriële data van de BU-353, zou één regel iets als dit:
$GPGGA, 233632.000, 3913.9963, N, 10844.2590, W, 2 09, 0.9, 1424.3, M-16.7, M, 0.8, 0000 * 79

Hier is hoe de NMEA 0183 definieert dit:
GGA - essentiële correctie gegevens waarmee 3D-gegevens van de locatie en nauwkeurigheid.
$GPGGA, 123519, 4807.038, N, 01131.000, E, 1, 08, 545.4, 0.9 M, 46.9, M,, * 47

Waar:
GGA Global Positioning System Fix gegevens
123519 fix genomen op 12:35:19 UTC (Coordinated Universal Time)
4807.038, N Latitude 48 deg 07.038' N
01131.000, E breedtegraad 11 deg 31.000' E
1 fix kwaliteit: 0 = ongeldig
1 = GPS-fix (SPS)
2 = DGPS fix (dit betekent WAAS is ingeschakeld en werken)
08 aantal satellieten worden bijgehouden
0.9 horizontale verdunning van positie (iets te maken met nauwkeurigheid)
545.4, M hoogte, meter boven zeeniveau
46.9, M hoogte van geoide (zeeniveau) boven WGS84 ellipsoïde
(leeg veld) tijd in seconden sinds laatste DGPS bijwerken
(leeg veld)   DGPS station id-nummer
* 47 de controlesom gegevens, begint altijd met *

Tip: Ik heb net iets over lengte- en breedtegraad. Latitude kan alleen gaan van 0 tot 90; lengte gaat van 0 tot 180. Dat is de reden waarom de bovenstaande latitude-waarde heeft vier cijfers vóór het decimaalteken en de longitude heeft vijf. In het bovenstaande voorbeeld is de 11 graden 011 geschreven.

NMEA 0183-protocollen worden gedefinieerd allemaal via het Internet. Hier is een:
http://biostatmatt.com/uploads/DescriptionNMEA.PDF
Dit protocol is niet alleen voor GPS zo niet dat alle van de zinnen relevant zijn.

SubproblemA: De BU-353 stuurt meerdere gegevens snaren elke seconde. Het computerprogramma is de seriële datastroom ontvangen maar niet weet waar het 'Start'. (Dit heet asynchrone communicatie).
SolutionA: Wat het programma te maken heeft is voortdurend kijken de stroom van de gegevens totdat het ziet "$GPGGA", dan weet dat de relevante gegevens zullen volgen.

SubproblemB: De gegevens van de $GPGGA is een lijn van gegevens. De computer moet scheiden van de gegevens in de verschillende delen.
SolutionB: In programmeertaal heet dit ontleden. De NMEA protocol heeft vrij strenge regels over hoe de snaren worden gedefinieerd. Elk element in een opgegeven positie en gescheiden met een komma. Het programma heeft dus om te gaan door middel van de gegevens en halen wat hij wil en de rest negeren. Voor mijn doeleinden, ik lees tot de hoogte en de rest van de regel overgeslagen.
FYI: De controlesom is een middel om te verifiëren of de gegevensreeks beschadigd of intact is. In het algemeen, als u beschadigde gegevens, zal het meestal onleesbaar worden hoe dan ook. Ik negeer controlesommen.

Probleem: Breedtegraad, lengtegraad, hoogte weergeven Op dit moment is alle gegevens in tekens. Het kan eenvoudig worden weergegeven in tekstvakken. Maar voor mijn doeleinden, zijn er twee problemen. Een is computers zijn stom, ze kunnen niet gemiddeld tekens, ze moeten gebruik maken van nummers. Ik gebruik een aantal van de 'dubbele' waardoor dat het kan bevatten een decimale komma, zoals 545.4. Het tweede probleem is dat de lengte- en breedtegraad worden ingeschreven in het formaat van de graden en minuten in één getal. 4807.038 is 48 deg 07.038'. Computers zijn stom dat zij niet begrijpen dit.

Maak je geen zorgen als de volgende niet zinvol voor u.
Oplossing: De meeste programmeertalen hebben een manier om te converteren naar tekens op een double. Ik gebruikte deze in VB express:
dLat = Convert.ToDouble(lineArr(2))

Converteren dat latitude nummer is een beetje lastiger, ik deed dit
graden = Int(dLat / 100) //This neemt de eerste twee cijfers en converteert ze naar een geheel getal (getal zonder een decimaal)
decimaldegrees = (dLat - (100 * graden)) / 60,0 / / dit originele nummer, neemt
afgetrokken van het gedeelte van de graden en
wordt geconverteerd naar een decimaal getal
fullLat = graden + decimaldegrees //This combineert de twee

Bijvoorbeeld als dLat = 4807.038
graden = Int(4807.038 / 100)
graden = Int(48.07038)
graden = 48

decimaldegrees = (dLat - (100 * graden)) / 60,0
decimaldegrees = (4807.038 - (100 * 48)) / 60,0
decimaldegrees = (4807.038 - (4800)) / 60,0
decimaldegrees = (7.038) / 60,0
decimaldegrees = 0.1173

fullLat = graden + decimaldegrees
fullLat = 48 + 0.1173
fullLat = 48.1173

Zo is niet programmeren leuk? NEE! Het is niet! Het goede nieuws is dat zodra je het programma gelijk, dat de computer zal moeiteloos alle berekeningen doen. Het slechte nieuws is dat als het programma (algoritme) fout is, het zal het verkeerd doet moeiteloos. Aangezien ik niet bijna perfect, heb ik te doen een heleboel problemen oplossen.

Kaart: Ik heb deze functie gekopieerd van een andere programmeur (ik wou dat ik herinnerde me waar ik het vond). Hebt u een internetverbinding en een goede CPU, zal indrukken van deze toets openen omhoog kaarten Google en weergeven van uw GPS-locatie. Dit is niet zeer nuttig voor mij. Als ik mijn Pentium III laptop gebruik in mijn auto, het is te traag om dit weer te geven en ik meestal geen internetverbinding hebt op de weg toch.

Probleem: Berekenen van een lopend gemiddelde van de bovenstaande.
Oplossing: Dit is relatief eenvoudig, gewoon houden optelling van de waarden en gedeeld door het aantal monsters.

Ik heb ook twee versies van mijn software.

Als u wilt gebruiken de eerste, publish.zip, hebt u een internetverbinding nodig. (Ik heb dit niet getest) Sla het zip-bestand op uw computer, voert u setup.exe. Als dit de manier waarop het gebruikt om te werken, zal het alle de ondersteuningsbestanden downloaden en installeer het programma. U moet zitten kundig voor dit te gebruiken met elke USB GPS die NMEA 0183-protocollen ondersteunt.
De tweede versie, Michaels GPS.zip bevat alle van de broncode. Ik stel u Microsoft Visual Basic Express 2010 eerst te installeren en vervolgens mijn bestanden kopiëren naar de projectmap. Mijne ziet er als volgt:
\\MICHAEL-PC\Users\Michael\Documents\Visual studio 2010\Projects\

Het uitvoerbare bestand is onder de naam van het project, onderaan een paar folders... \bin\release. Theoretisch, kunt u het .exe-bestand uitvoeren. De reden die heb ik voorgesteld is het installeren van Microsoft Visual Basic Express 2010, dat het alle .NET spullen nodig door het programma installeert. Als dat niet werkt, kunt u ook starten van VB express en open het project en draaien.

Setup: Voer de juiste Comm-poort voor uw USB GPS. Klik op Update. De gegevens beginnen met bijwerken. Als u een fout, Stoppen met Updates en Update opnieuw.

Gerelateerde Artikelen

Zelfgemaakte uitlaat voor uw oude grasmaaier

Zelfgemaakte uitlaat voor uw oude grasmaaier

u kunt bouwen uw eigen, zelfgemaakte uitlaatsysteem voor een oude Briggs en Stratton grasmaaier motor!Bij het nemen van mijn ongewenste geplukt 70s-tijdperk grasmaaier uit elkaar, naast erachter te komen dat deze motor het hetzelfde jaar dat ik was m
Dual Project: De AirPlay-Pi en het nieuwe leven voor een oude radio

Dual Project: De AirPlay-Pi en het nieuwe leven voor een oude radio

He, Welkom op mijn eerste post ooit op Instructables!Het Project bezig met lezen is het opzetten van een Raspberry Pi te gebruiken van de 'AirPlay' en hoe ik het gebruikte, die met het tweede deel, het nieuwe leven voor mijn oude radio botst.Stap 1:
Een goed gebruik voor een oude telefoonlader

Een goed gebruik voor een oude telefoonlader

Indoor/outdoor thermometers zijn handig, maar de buiten zender kunt consumeren te veel batterijen, afhankelijk van de eenheid. Ik besloot voor het aandrijven van de buiten zender met een oude telefoonlader. De spanning van de lader van de telefoon mo
Golf GPS voor een hacker

Golf GPS voor een hacker

Eerst en vooral, laat me mijn definitie van het woord "Hacker" in aanmerking komen. Terwijl mensen lezen dit zal onmiddellijk denken aan "web hacker", "maker hacker", enz., ik ben een "Golf Hacker" – toen ik spelen,
GPS voor uw motorfiets Mount

GPS voor uw motorfiets Mount

kon ik niet vinden een GPS-mount voor mijn motorfiets dat zou passen waar ik wilde het zodat ik gewoon één gemaakt. Ik vond een zuig mount voor mijn merk (Garmin GPSMap 60C) op Gander Berg, die is een jacht en Hengelsport winkel in mijn gebied. De be
Gebruik van de tweede naar de laatste voor een oude bankstel... De Sling dragen

Gebruik van de tweede naar de laatste voor een oude bankstel... De Sling dragen

ik ben een zeer pragmatische type persoon, en ik de neiging om eenvoudige, goedkope en slimme toepassingen voor de problemen die ik ben tegengekomen.  Zeer zelden doen ik kom met deze ideeën (zoals de furoshiki Instructables ik een tijdje terug samen
Meerdere gebruikt voor een oude extenstion snoer (audio snoer)

Meerdere gebruikt voor een oude extenstion snoer (audio snoer)

Nou, als je van uw oude iPod Nano waterdicht geval vervelen, vervolgens uitknippen die weinig snoer en zie wat u kunt gebruiken voor. Zoals ik deed!Misschien zou het in mijn nieuwe boek..."Ik ben DIY, en dus kan je!"Stap 1: Haal het snoer uit he
Zijde spinnen voor luie mensen

Zijde spinnen voor luie mensen

In de eerste plaats een grote dank voor Michael van wormspit.com voor het toestaan van me om te linken naar zijn prachtige website. Bent u nieuwsgierig naar sikworms, en producerende cottage zijde, dat is de website te gaan!Mijn tante stuurde me onla
11 ongewone gebruikt voor luiers

11 ongewone gebruikt voor luiers

wegwerpluiers zijn een fel besproken product onder baby's en peuters gelijk. Een object voor hen op ecologische gronden; weggooien van dat al die kak burrito's verpakt in ultra absorberende tortilla's kan niet goed voor de aarde. Anderen loven hen vo
ESP8266 + Smartphone draadloze afstandsbediening voor DSLR met (mogelijk) GPS voor onder $10

ESP8266 + Smartphone draadloze afstandsbediening voor DSLR met (mogelijk) GPS voor onder $10

Een tijdje terug kwam ik dit ontzagwekkend project door CosmicMac. In principe kunt u uw DSLR draadloos met behulp van uw smartphone via de ESP8266 verbonden met de DSLR teweegbrengen. Gezien dat niet alle camera's hebben ondersteuning voor ingebouwd
Een nieuwe display voor een oude mes

Een nieuwe display voor een oude mes

dus, je hebt doorgebracht ergens tussen $50 en $90 voor dat echt cool Roman/Alexander de grote mes, u het krijgt en vinden de plaquette die met het komen is afval! OF erger nog, het gewicht van het mes trekt de schroeven van de "L" van de spaanp
Snijwerk (voor luie carvers) Kuksa

Snijwerk (voor luie carvers) Kuksa

Wazza kuksa?!Een kuksa is de traditionele houten beker gemaakt & gebruikt door de Sami-bevolking in Lapland - Noord-Scandinavië. Ze zijn traditioneel gemaakt van berken stops - soort halfround drie gezwellen vindt u op een aantal soorten, maar met na
10 toepassingen voor uw oude tandenborstel

10 toepassingen voor uw oude tandenborstel

hier zijn een aantal handige manieren om hergebruik van uw oude tandenborstel.  Je denkt misschien deze kleine kleine borstel is alleen goed voor het schoonmaken van uw tanden, maar hier zijn 10 manieren kun je de tandenborstel cyclus gaan met inbegr
Epic gebruikt voor een oude Android telefoon

Epic gebruikt voor een oude Android telefoon

Een oude Android telefoon die is het verzamelen van stof hier zijn een uitstekende manier om te hergebruiken zonder het nemen van het uit elkaarStap 1: Maak het een thuismedia controllerZelfs de junkiest oude Android apparaat ruime bevoegdheid heeft