Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Schlechte komunikation zwischen GPS und C-Control Kategorie: Verschiedenes (von Stefan Süßmann - 23.06.2006 22:57)
 Als Antwort auf Schlechte komunikation zwischen GPS und C-Control von Amiwerewolf - 23.06.2006 21:21
Stefan Süßmann nutzt:  CC1-M-Unit V1.2/2.0, Micro
> hallo
> ich hab probleme mit dem auslesen eines strings
> der von einer  GPS maus kommt.
>
> $GPGGA,065228.615,5121.9527,N,01226.2578,E,1,08,1.0,170.3,M,,,,0000*0B
>
> ich möchte die daten 5121.9527 und 01226.2578 auswerten und im eeprom abspeichern,
> diese später wieder abrufen. und in ein Kartensystem importieren.
>
> mein gedanke war das "$" zu erkennen, und dann nach dem zweiten komma 9 zeichen zu loggen,
> und nach dem 4. komma 10 zeichen ins eeprom zu schreiben.
>
> ich empfange mit der C-Control 1 aber immen nur die ersten 8 bis 10 zeichen, dann bricht die kommunikation ab
> vom und das am ende der übertragung gesendet wird bekommt die C-Control gar nichts mehr mit!
> übertragung findet mit eigentlich mit 4800 Baud statt, funktioniert aber genausowenig mit 9600 Baud
>
> woran liegt das?
>
> ist der FIFO der Schnittstelle der C-Control zu klein? (8 byte etwa?)
> wenn ich die daten langsam mit einem terminal schicke werden sie nähmlich verarbeitet.
>
> danke im Vorraus
>
> Michi


Hallo,
ist die GPS-Maus so eingestellt, daß sie nur GPGGA sendet? Wenn nicht, dann reicht die Abfrage auf
"$" nicht zur eindeutigen Erkennung aus. Da ich Bedenken mit der Abfrage mit dem "$" hatte, habe ich es einfach ignoriert und warte auf "G....". Mit 4800 baud kann man übrigens maximal 4 Datensätze pro Sekunde senden und hat dann keine Zeit zur Weiterverarbeitung. Ich habe mich langsam herangetastet und sende nur benötigte Datensätze und das dann mit 9600 baud. Aus Zeitgründen benutze ich hier sehr viele Variablen und berechne erst an Ende die Zahlenwerte. Die Unit 2.0 ist schon ziemlich ausgereizt, wenn sie einmal pro Sekunde GPS-Daten verarbeiten, Kurs berechnen, Fluglage messen und aussteuern, Luftdruck messen,.... soll und alles auch noch als Datensätze abspeichern soll.


Ich habe das Zerlegen der GPS-Daten so gelöst:

' ------------------------------------- GetGPSData -----------------------------------------------------------
function GPS_Auswertung()
  #GPGGA
   get zeichen
   if zeichen <> 71 then goto GPGGA  ' G
   get zeichen
   if zeichen <> 80 then goto GPGGA  ' P
   get zeichen
    if zeichen <> 71 then goto GPGGA  ' G
   get zeichen
   if zeichen <> 71 then goto GPGGA  ' G
   get zeichen
   if zeichen <> 65 then goto GPGGA  ' A         GPGGA empfangen
                      for i = 1 to 8         ' ,hhmmss, entfernen
                      get zeichen
                      next i        
   get bgggzehner        ' 8 x entfernen + bggg
   get bggg
   get bgminzehner     ' bgmin
   get bgmin  
                      get zeichen                ' entfernen
   get bgsek1000er            ' bgsek
   get bgsek100er
   get bgsekzehner
   get bgsekeiner
                      for i = 1 to 3    ' ",N,"entfernen
                      get zeichen
                      next i
   get lggg100er
   get lgggzehner
   get lggg    
   get lgminzehner                 ' lgmin
   get lgmin
                      get zeichen               ' . entfernen
   get lgsek1000er                 ' lgsek
   get lgsek100er
   get lgsekzehner
   get lgsekeiner
                      for i = 1 to 5
                      get zeichen
                      next i
   get satzehner                    ' Satelitenanzahl
   get satanzahl
                      for i = 1 to 7
                      get zeichen
                      next i
  get isthoehe10000er
  get isthoehe1000er
  get isthoehe100er
  get isthoehezehner
                      get zeichen               ' . entfernen
  get isthoeheeiner
#GPVTG
   get zeichen
   if zeichen <> 71 then goto GPVTG  ' G
   get zeichen
   if zeichen <> 80 then goto GPVTG  ' P
   get zeichen
   if zeichen <> 86 then goto GPVTG  ' V
   get zeichen
   if zeichen <> 84 then goto GPVTG  ' T
   get zeichen
   if zeichen <> 71 then goto GPVTG  ' G     GPVTG empfangen
                     get zeichen       ' Komma entfernen
   get istkurs1000er
   get istkurs100er
   get istkurszehner
                     get zeichen       ' Punkt entfernen
   get istkurseiner
                     for i = 1 to 14   ' 14 Zeichen entfernen    
                     get zeichen
                     next i
   get speed100er
   get speedzehner  
   get speed  
 bggg     = (bggg-48) +(10*(bgggzehner-48))
 bgmin    = (bgmin-48)+(10*(bgminzehner-48))    
 bgsek    = (bgsekeiner-48)+(1000*(bgsek1000er-48))+(100*(bgsek100er-48))+(10*(bgsekzehner-48))
 lggg     = (lggg-48)+(100*(lggg100er-48))+(10*(lgggzehner-48))  
 lgmin    = (lgmin-48)+(10*(lgminzehner-48))    
 lgsek    = (lgsekeiner-48)+(1000*(lgsek1000er-48))+(100*(lgsek100er-48))+(10*(lgsekzehner-48))
 GPSHoehe = (isthoeheeiner-48)+(10000*(isthoehe10000er-48))+(1000*(isthoehe1000er-48))+(100*(isthoehe100er-48))+(10*(isthoehezehner-48))
 IstKurs = (istkurseiner-48)+(1000*(istkurs1000er-48))+(100*(istkurs100er-48))+(10*(istkurszehner-48))
 speed   = (speed-48)+(100*(speed100er-48))+(10*(speedzehner-48))
 SatAnzahl = (10*(satzehner-48)+(satanzahl-48))
end function


mfg

Stefan

 Antwort schreiben

Bisherige Antworten:

Re: Schlechte komunikation zwischen GPS und C-Control (von Amiwerewolf - 24.06.2006 0:22)
    Re: Schlechte komunikation zwischen GPS und C-Control (von Amiwerewolf - 24.06.2006 1:49)
        Re: Schlechte komunikation zwischen GPS und C-Control (von ogoianer - 24.06.2006 11:08)
            Re: Schlechte komunikation zwischen GPS und C-Control (von Amiwerewolf - 24.06.2006 11:23)