Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

große Datenmengen über Ser.Schnittst. auslesen Kategorie: Programmierung (von wernerAZ - 16.04.2007 22:09)
Ich nutze:
C164CI-ControllerBoard, CC2-Application-Board, OSOPT V3.1
Hallo liebes Forum,
ich möchte GPS-Daten über die serielle Schnittstelle auslesen, selectieren und auswerten.
Das GPS liefert ungefähr diese Datenmenge innerhalb einer Sekunde bei 4800 Baud.
$GPRMC,121920.260,A,4959.3913,N,00813.9887,E,,,130706,,,A*6D
$GPGGA,121921.256,4959.3862,N,00813.9450,E,1,05,1.5,138.7,M,47.9,M,,0000*5F
$GPGSA,A,3,29,26,02,10,13,,,,,,,,2.3,1.5,1.8*30
$GPRMC,121921.256,A,4959.3862,N,00813.9450,E,,,130706,,,A*68
$GPGGA,121922.000,4959.3880,N,00813.9433,E,1,05,1.5,139.4,M,47.9,M,,0000*56
$GPGSA,A,3,29,26,02,10,13,,,,,,,,2.3,1.5,1.8*30
$GPGSV,3,1,11,08,81,096,09,10,68,251,27,29,33,287,34,26,23,284,32*7B
$GPGSV,3,2,11,13,11,097,29,02,06,215,23,27,52,061,16,28,31,148,*7B
$GPGSV,3,3,11,21,06,334,09,03,03,031,,19,00,059,*47
$GPRMC,121922.000,A,4959.3880,N,00813.9433,E,,,130706,,,A*63
$GPGGA,121923.000,4959.3894,N,00813.9440,E,1,05,1.5,143.5,M,47.9,M,,0000*5A
$GPGSA,A,3,29,26,02,10,13,,,,,,,,2.3,1.5,1.8*30
$GPRMC,121923.000,A,4959.3894,N,00813.9440,E,,,130706,,,A*63
Jede Zeile beginnt mit $ und endet mit Return+Linefeed.
Für mich sind die GPRMC-Zeilen wichtig.
Hier meine Auswertung:

function auswertung(gpsData gps,byte buf[])
{
string s14[14];
int zaehler,pos;
pos=0;
//strx.split(buf,s14,','); geht leider nicht
for zaehler=0 ... 255
    {
    if buf[zaehler]=='*' & pos==13
       zaehler=255;      //Schleife verlassen
    else if buf[zaehler]=='$'
       {
       for pos=0 ... 13
           s14[pos]="";      //str.clear(s14[pos]); geht nicht richtig!
       pos=0;
       }
    else if buf[zaehler]==','
       pos=pos+1;
    else
       str.putchar(s14[pos],buf[zaehler]);
    }
if strx.comp("GPRMC",s14[0])
   {
   gps.kennung=s14[0];
   gps.zeit=s14[1];
   gps.status=s14[2];
   gps.breite=s14[3];
   gps.breiteB=s14[4];
   gps.laenge=s14[5];
   gps.laengeL=s14[6];
   gps.speed=s14[7];
   gps.grad=s14[8];
   gps.datum=s14[9];
   //zeigeData(gps.gpsData gps);
   }
}

Leider bekomme ich das Einlesen nicht auf die Reihe.

function auslesen(gpsData gps,byte buf[])
{
byte c;
//hwcom.flush();
loop
  {
  wait hwcom.ready();
  buf[0]=hwcom.receive(buf,6,12000);
  wait hwcom.ready();
  hwcom.send(buf,6);
  wait hwcom.ready();
/*
  if hwcom.rxd()
     {
     c=hwcom.get();
     lcdext.put(c);
     hwcom.put(c);
     wait hwcom.ready();
//  if c=='*'
//      {
     // buf[0]=hwcom.receive(buf,100,2000);
      //hwcom.send(buf,99);
      //auswertung(gps,buf);
      //zeigeData(gps);
      }
*/

  }

Wie bekomme ich die Daten in den buf[255], damit mir meine Auswertung
die Daten in mein type gpsData übernimmt und ich die Daten weiter Bearbeiten kann?

type gpsData
{
string kennung;
string zeit;
string status;
string breite;
string breiteB;
string laenge;
string laengeL;
string speed;
string grad;
string datum;
string gradM;
string direction;
string mode;
string checksum;
}
//gpsData gps;

Ich bin am verzweifeln.
Und wenn das Einlesen noch in einem eigenen Thread laufen würde, wäre ich äu�erst Glücklich.
Vorab besten Dank für eure Antworten
wernerAZ


    Antwort schreiben


Antworten:

Re: große Datenmengen über Ser.Schnittst. auslesen (von André H. - 21.04.2007 15:34)
    Re: große Datenmengen über Ser.Schnittst. auslesen (von wernerAZ - 21.04.2007 18:07)
        Re: große Datenmengen über Ser.Schnittst. auslesen (von André H. - 22.04.2007 13:57)
            Re: große Datenmengen über Ser.Schnittst. auslesen (von wernerAZ - 23.04.2007 21:29)
                Re: große Datenmengen über Ser.Schnittst. auslesen (von Mark Simon - 12.10.2010 12:14)
    Re: große Datenmengen über Ser.Schnittst. auslesen (von wernerAZ - 21.04.2007 17:09)
Re: große Datenmengen über Ser.Schnittst. auslesen (von wernerAZ - 19.04.2007 16:04)