Forum: Mikrocontroller und Digitale Elektronik Zeichenketten auswerten


von Adrian (Gast)


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

von Rufus T. Firefly (Gast)


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?

von Adrian (Gast)


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                ‚

von Philipp Sªsse (Gast)


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?

von Adrian (Gast)


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 ;)

von Fritz Ganter (Gast)


Lesenswert?

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

von Adrian (Gast)


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.--

von Rufus T. Firefly (Gast)


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.

von Adrian (Gast)


Lesenswert?

ok, kann ich damit sowohl TSIP als auch NMEA dekodieren?

von Fritz Ganter (Gast)


Angehängte Dateien:

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

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
Noch kein Account? Hier anmelden.