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: Problem serielle Datenübertragung Kategorie: Programmierung CC-Plus (von Stefan Süßmann - 30.11.2005 22:11)
 Als Antwort auf Re: Problem serielle Datenübertragung von Rudi - 30.11.2005 19:46
Stefan Süßmann nutzt:  CC1-M-Unit V1.2/2.0, Micro

>
> Hallo zusammen!
>
> hab gelesen ihr seid Spezialisten auf c-control und Gps!
> ich bin Anfänger auf der C-Control .Ich möchte aus einem Garmin GPS Gerät die NMEA daten
> auswerten . Die Daten werden ein mal pro sec mit 4800 Bd ausgegeben --ich möchte eine
> Kursänderung von einem Grad auswerten und am Digitalport einen pin für + Abweichung
> bzw einen pin für-Abweichung setzen.Ich bin ein Neuling bei der Programmierung meiner
> C-Control 1 Mainunit.
> BITTE kann mir jemand mit einem Beispielprogrämmchen weiterhelfen,wie man aus einem
> NMEA Datenstring eine bestimmte Stelle herrausliest?


So sieht es bei mir aus (nur die entsprechende Funktion in Basic++):

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

 Antwort schreiben

Bisherige Antworten:

Re: Problem serielle Datenübertragung (von Rudi - 4.12.2005 17:46)