www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zeichenketten auswerten


Autor: Adrian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"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?

Autor: Adrian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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                ‚

Autor: Philipp Sªsse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Adrian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ;)

Autor: Fritz Ganter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was brauchst du vom TSIP was NMEA nicht kann?
Und was willst du hinschicken?

Autor: Adrian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.--

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"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.

Autor: Adrian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, kann ich damit sowohl TSIP als auch NMEA dekodieren?

Autor: Fritz Ganter (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.