Forum: Mikrocontroller und Digitale Elektronik Zeichenketten von serieller Schnittstelle


von Christoph Gillig (Gast)


Lesenswert?

Hallo,
als Neuling in Sachen Programmierung der seriellen Schnittstelle 
folgende Frage:
Von einem GPS-Empfänger kommen im festen Rhythmus (4800 Baud) die 
einzelnen NMEA-Aussendungen. Diese fangen immer mit einem $-Zeichen an 
und enden mit CR+LF.
Wie kann ich diese in eine Variable einlesen? Das ganze will ich mit 
BASCOM machen. Dort wird nicht C sondern BASIC zum programmieren 
benutzt(sorry ;-)). Könnte mir jemand verraten, wie ich die Variable 
deklarieren muss (Typ) und wie ich dann per Interrupt die gesendeten 
Strings in die Variable zur weiteren Verarbeitung bekomme?

Vielen Dank im Namen aller Anfänger an die Profis

Christoph

von Christoph (Gast)


Lesenswert?

Hallo Christoph,

schaum mal z.B unter www.rowalt.de/mc/index.htm nach, dort gibts
Beispiele zum einlesen von variablen Zeichenketten. Weiterhin könntest 
Du die Funktion IsCharwaiting in Verbindung mit einem seriellen 
Eingangspuffer verwenden (config serialin=buffered, size= ???). Wie 
sehen denn die NMEA-Werte aus ?

Gruß

Christoph

von Christoph Gillig (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Namensvetter,
der von Dir angegebene Link ist mir gut bekannt. Das von Kollegen Rowalt 
gemachte Tutorial im Funkamateur mache ich gerade. Doch leider bin ich 
damit auch nicht schlauer geworden. Die Schaltung steht zwar, inkl. 
Ausgabe auf LCD.
Doch in dem Beispiel wird lediglich gewartet bis der Interrupt 
anspricht, und dann wird das was ankam auf dem Display ausgegeben.
Im Anhang habe ich mal so ein Beispiel-Mitschnitt vom GPS beigefügt.
Könntest Du das mit dem Eingangspuffer noch mal erklären oder mit Code 
angeben?

Gruß Christoph

von Dieter Brüggemann (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Christoph

Da ich sowas auch in nächster Zeit mal vorhabe, habe ich mal einen 
ersten Anfang gemacht.

Das Programm wartet halt auf das Startzeichen "$" und liest dann erstmal 
20 Daten in ein Array ein. Zum auslesen des gesamten Protokolls, braucht 
man aber einiges an SRAM, sowie ich das sehe. Kommt aber darauf an, 
welche Daten du genau haben möchtest.

Bei Fragen Mail
Hier noch ein Link zum Thema http://www.kh-gps.de/

MFG
Dieter

von Christoph (Gast)


Lesenswert?

Hallo Christoph,

also der eingangspuffer der seriellen Schnittstelle nutzt auch den Uart 
Interrupt, d.h. du musst Ihn nicht extra definieren
(funktioniert aber in Verbindung mit IsChrawiting) erst ab Version 
1.11.7.2 oder so (siehe History.txt bei MCSelec.com)
Der Eingangspuffer empfängt ankommende Daten automatisch, d.h. es gehen 
keine Daten verloren solange ausreichen Platz vorhanden ist.

Du könntest also z.B wie folgt vorgehen (siehe auch AVR-Sample
Programme 'RS232BUFFer oder so ähnlich)

config serialin=buffered, size = 20

Dim A as Byte
Dim B as Byte

Do
A = Ischarwaiting
if A = 1 then gosub Getbyte
loop

getbyte
A=Inkey()
if A=36 then

usw.

return


Ein Problem scheint mir zu sein, dass die empfangenen Daten aus Zeichen, 
Byte-Variablen, Integer-variablen etc bestehen,
und das laut deinem GPS-Beispiel nicht einmal in immer der gleichen 
Abfolge (und wenn, dann nur alle 6 Zeilen.
Ich weiß nicht so recht ob ein 2313 genügen SRAM zur Verfügung
stellt um dies alles korrekt zu analysieren.

Gruß Christoph

von Christoph Gillig (Gast)


Lesenswert?

Hallo Christoph,
vielen Dank für die Tips. Habe mir erst mal die neue Version von BASCOM 
geladen. Auf dem von Dir gezeigten Weg werde ich mal versuchen 
weiterzukommen.
Im Handbuch zu der GPS-Maus sind die einzelnen gesendeten NMEA-Files 
aufgeführt. Da muss ich mir dann den passenden heraussuchen.
Mal sehen was wird. Vielen Dank schon mal

Gruss
Christoph

von Sven (Gast)


Lesenswert?

Hi Christoph!

GPS-Maus? Ich vermute
- Sie bestimmt ihre Position nicht mit Rädchen oder optisch, sondern 
über GPS. Cool!
oder
- Man kann über GPS ermitteln, in welcher Zimmerecke sie gerade wieder 
verschollen ist. Megacool!
oder
- Ganz was anderes. Nichtsocool.

Sven

von Roadbook (Gast)


Lesenswert?

Hallo,

mit den NMEA Daten aus einem GPS in Verbindung mit einem MC habe ich 
mich auch beschäftigt.

Was man mit den Daten anfangen kann unter:

GPS.Roadbook.bei.t-online.de

Gruß

Wolfgang

von ____ (Gast)


Lesenswert?

Sven, ist doch nicht schlimm, daß du nicht weißt was eine GPS-Maus 
ist...

von Maximilian (Gast)


Lesenswert?

hat noch jemand die beispiele von der seite
'GPS.Roadbook.bei.t-online.de' ?
die scheint ja nicht mehr vorhanden zu sein...
ich möchte auch die NMEA-Daten in einem atmega oä. in variablen
schreiben, um sie dann weiter zu verarbeiten

von Joern G. aus H. (Gast)


Lesenswert?

@ Sven: Das Teil in deiner rechten Hand nennst du Maus, weil es ein
wenig aussieht, wie eine Maus (oder es zumindest vor Funk noch tat).
Bei der GPS Maus ist es dasselbe. ;-) Mehr nicht.
jörn

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.