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?
Wenn ich das TSIP mit dem Demoprog von Trimble logge, dann sieht das so aus: \ BYÓ÷¿ÉÛ \ BYÓ÷¿ÉÛ \ BYÓ÷¿ÉÛ \( BYÓ÷¿ÉÛ \0 BYÓ÷¿ÉÛ \8 BYÓ÷¿ÉÛ FKZ m A¿ FKZ m \ B]æf¿ÉÛ \ B]æf¿ÉÛ \ B]æf¿ÉÛ \ B]æf¿ÉÛ \ B]æf¿ÉÛ \( B]æf¿ÉÛ \0 B]æf¿ÉÛ \8 B]æf¿ÉÛ FKZ m m \ Bað£¿ÉÛ \ Bað£¿ÉÛ \ Bað£¿ÉÛ \ Bað£¿ÉÛ \ Bað£¿ÉÛ \( Bað£¿ÉÛ \0 Bað£¿ÉÛ \8 Bað£¿ÉÛ FKZ m m \ Bf¿ÉÛ \ Bf¿ÉÛ \ Bf¿ÉÛ \ Bf¿ÉÛ \ Bf¿ÉÛ \( Bf¿ÉÛ \0 Bf¿ÉÛ \8 Bf¿ÉÛ FKZ m m \ Bj O¿ÉÛ \ Bj O¿ÉÛ \ Bj O¿ÉÛ \ Bj O¿ÉÛ \ Bj O¿ÉÛ \( Bj O¿ÉÛ \0 Bj O¿ÉÛ \8 Bj O¿ÉÛ FKZ m m \ Bn¬¿ÉÛ \ Bn¬¿ÉÛ \ Bn¬¿ÉÛ \ Bn¬¿ÉÛ \ Bn¬¿ÉÛ \( Bn¬¿ÉÛ \0 Bn¬¿ÉÛ \8 Bn¬¿ÉÛ FKZ A¿ FKZ m m \ Br9X¿ÉÛ \ Br9X¿ÉÛ \ Br9X¿ÉÛ \ Br9X¿ÉÛ \ Br9X¿ÉÛ \( Br9X¿ÉÛ \0 Br9X¿ÉÛ \8 Br9X¿ÉÛ FKZ m
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 ;)
Was brauchst du vom TSIP was NMEA nicht kann? Und was willst du hinschicken?
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.