Hallo....
Ich habe folgendes Problem: mein GPS Modul (Lassen SQ) sendet die Daten
zum µC im !binaeren! TSIP (Trimble standard) Protokoll an den µC. Die
Umschaltung auf NMEA hat leider mit dem Beispielprogramm von Trimble
fuer PC nicht funktioniert - da war immer die Verbindung weg.
Da von Trimble aber sowieso das TSIP empfohlen wird
(leistungsfaehiger), und das Modul Steuerbefehle NUR im TSIP Format
entgegennehmen kann, wuerde ich das gerne mal damit versuchen.
Wie muss ich da mit dem binaeren Format umgehen? Wenn ich mir das in
Hex-Werten ausgeben lasse, kommt immer nur FF oder FE raus....
Das ganze habe ich bis jetzt in C geschrieben.
Hier mangelts mir glaube ich noch an den Basics...
gruesse,
adrian
"Wenn ich mir das in Hex-Werten ausgeben lasse, kommt immer nur
FF oder FE raus...."
Das klingt nach einem Fehler.
Mal mit 'nem Terminalprogramm auf'm PC mitgelauscht?
1. Natürlich empfiehlt Trimble das eigene Protokoll. Wenn Du das einmal
implementiert hast, wechselst Du nicht mehr ohne weiteres Dein Modul!
(-;
2. Binärprotokolle sind immerhin einfacher zu verarbeiten im µC. Die
ausgelesenen Bytes können direkt weiterverarbeitet werden, während
hinter einem schnell hingeschriebenen atoi() eine Menge Code und
Ausführungszeit stecken kann.
3. Wenn Du doch auf NMEA umstellen willst: sende dem Modul mal die
hexadezimale Sequenz
$10 $BC $FF $07 $07 $03 $00 $00 $00 $02 $04 $00 $10 $03
Danach sollte bei 4800 Baud Klartext kommen. Mit
$10 $8E $26 $10 $03
werden diese Werte ins Modul geschrieben, daß sie ein Abhängen von der
Pufferbatterie überstehen.
Das funktioniert grundsätzlich, ehrlich.
4. Wenn Du ein Binärprotokoll im Terminalprogramm anschauen willst,
solltest Du den Zeichencode auf hexadezimal umstellen.
5. Sicher, daß die Baudrate in Deinem Programm richtig eingestellt
wird?
Ich wuerde eigentlich auch lieber bei TSIP (binaer) bleiben, wegen der
vollen Funktionalitaet. Allerdings meinten einige, das sei mit NMEA
wesentlich einfacher.
Baudrate etc. sind jedenfalls OK.
Um mir das ganze mit dem µC anzuschauen, habe ich das so gemacht
(Interrupt):
c = RXBUF1;
printf("%c",c);
(waehrend der µC am PC haengt. Ist zwar nicht brauchbar was die speed
betrifft, hier gehts aber erstmal ums Prinzip)
Wird so das binaere Protokoll richtig verarbeitet....? Muss ich dann
die einzelnen Zeichen zusammensetzen, oder wie sieht das aus....?
Danke fuer die Hilfe ;)
Mir gehts jetzt erstmal darum, den Umgang mit dem Modul zu lernen. Paar
Befehle senden und empfangen.
Und wenn ich dem Modul was senden will (Steuerbefehle, grobe
Ausgangsposition etc.), dann muss das sowieso TSIP sein.
Ob ich jetzt die Koordinaten mit TSIP oder NMEA bekomme, ist mir recht
egal, ich wuerd erstmal mit dem einfacheren anfangen. Habs bis jetzt
aber noch mit keinem von beiden hinbekommen :/
Ich waer jetzt erstmal zufrieden wenn ich wuesste wie ich a) NMEA Daten
abhoere oder b) TSIP Daten abhoere.
Konfigurieren kann man auch mit dem PC Prog von Trimble, allerdings
rafft das die Umstellung auf NMEA nicht ganz; danach empfaengt es
nichts mehr vom GPS und bestaetigt auch nicht, dass die Aenderungen im
Flash gesichert wurden.
Beispielcode hab ich leider keinen gefunden.--
"Um mir das ganze mit dem µC anzuschauen, habe ich das so gemacht
(Interrupt):
c = RXBUF1;
printf("%c",c); "
Im Prinzip ja nicht schlecht, aber
printf("%02X ",c);
sollte bessere Ergebnisse liefern.
Hinschicken brauchst eigentlich nie was, lass ihn das erste mal suchen,
normalerweise sollte er sich seine Position merken (und die interne Uhr
sollte auch mitlaufen). Wenn nicht, musst du ausser der Position auch
Datum und genaue Uhrzeit schicken. Aber das macht keiner.
Im Anhang ist eine Übersicht über die NMEA Befehle, brauchen tust du
(aus "man gpsdrive"):
GPRMC: Position, Geschwindigkeit, Heading
GPGSV: Satellit Signal Pegel Anzeige
GPGGA: Höhe (nicht auf allen Empfängern verfügbar) und
Position falls kein GPRMC verfügbar ist. In diesem Fall
wird die Geschwindigkeit und Richtung von GpsDrive errech-
net.
PGRME: Anzeige des EPE (erwarteter Positions Fehler), ev.
nur auf GARMIN Empfängern verfügbar