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
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
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
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
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
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
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
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
Sven, ist doch nicht schlimm, daß du nicht weißt was eine GPS-Maus ist...
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
@ 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.