Hier werden dann die Beschleunigungsdaten umgeleitet, damit dann der Aufruf

./gs1000car2nmea GS1000-GPSLOG.FILE0001.dat 2> beschleunigung.txt | gpsbabel -i nmea -f - -o gpx -F ausgabe.gpx

ein gültiges gpx- File erzeugt.
Die Ausgabe der Beschleunigung landet TAB-getrennt im txt- File

#include <stdlib.h>
#include <stdio.h>

int main (int argc, char *argv[])
{
    if (argc != 2)
    {
        fprintf(stderr,"usage: %s filename\n", argv[0]);
        exit(1);
    }
    else
    {
        FILE *file = fopen(argv[1],"r");

        if (file == NULL)
        {
            fprintf(stderr,"Could not open file\n");
            exit(1);
        }
        else
        {
            int start = 0;
            int detect = 0;
        int nmea = 0;
        int c;
            long int pos = 0;
            int shift;

            while ((c = fgetc(file)) != EOF)
            {
                if (c == '\n')
                {
            nmea = 0;
                    if(start)
                    {
                        printf("\n");
                    }
                    else
                    {
                        start = 1;
                    }
                }
                else
                {
                    if(start)
                    {
                        if(detect)
                        {
                            c+=shift;
                            c+=128;
                            c%=128;
                if ( c == '$')
                {
                   nmea = 1;
                                   fprintf(stderr,"\n");
                }
                            if (nmea)
                {
                                   printf("%c",c);
                                }
                                else
                                {
                                    fprintf(stderr,"%c",c);
                                }
                        }
                        else
                        {
                            pos = ftell(file);

                            while ((c = fgetc(file)) != EOF)
                            {
                                if (c == '\n')
                                {
                                    fseek(file,-4,SEEK_CUR);
                                    shift = '*' - fgetc(file);
                                    detect = 1;
//                                     printf("shift: %d\n",shift);
                                    break;
                                }
                            }

                            fseek(file,pos,SEEK_SET);
                        }
                    }
                }
            }

            fclose(file);
        }
    }

    return 0;
}




Am 10.06.2012 14:15, schrieb [email protected]:
Jetzt mit Offset-Berechnung, verwendet "*" aus der NMEA-Prüfsumme:


#include <stdlib.h>
#include <stdio.h>

int main (int argc, char *argv[])
{
     if (argc != 2)
     {
         printf("usage: %s filename\n", argv[0]);
         exit(1);
     }
     else
     {
         FILE *file = fopen(argv[1],"r");
if (file == NULL)
         {
             printf("Could not open file\n");
             exit(1);
         }
         else
         {
             int start = 0;
             int detect = 0;
             int c;
             long int pos = 0;
             int shift;
while ((c = fgetc(file)) != EOF)
             {
                 if (c == '\n')
                 {
                     if(start)
                     {
                         printf("\n");
                     }
                     else
                     {
                         start = 1;
                     }
                 }
                 else
                 {
                     if(start)
                     {
                         if(detect)
                         {
                             c+=shift;
                             c+=128;
                             c%=128;
                             printf("%c",c);
                         }
                         else
                         {
                             pos = ftell(file);
while ((c = fgetc(file)) != EOF)
                             {
                                 if (c == '\n')
                                 {
                                     fseek(file,-4,SEEK_CUR);
                                     shift = '*' - fgetc(file);
                                     detect = 1;
//                                     printf("shift: %d\n",shift);
                                     break;
                                 }
                             }
fseek(file,pos,SEEK_SET);
                         }
                     }
                 }
             }
fclose(file);
         }
     }
return 0;
}




----- Ursprüngliche Message -----
Von: Paul Hartmann <[email protected]>
An: Openstreetmap allgemeines in Deutsch <[email protected]>
CC:
Gesendet: 10:33 Sonntag, 10.Juni 2012
Betreff: Re: [Talk-de] unbekanntes Datenformat aus GPS-Logger

Hm, als zusätzliche Schikane scheint der Offset für jede Datei
verschieden zu sein (vergleiche erste Mail). Naheliegenderweise müsste
der Wert im Header kodiert sein:

559683543 => 57
545946117 => 40

Was haben sich die Hersteller hier nur wieder einfallen lassen, um
sicherzustellen, dass der Käufer auch brav die mitgelieferte Software
nutzt?

Paul

_______________________________________________
Talk-de mailing list
[email protected]
http://lists.openstreetmap.org/listinfo/talk-de


_______________________________________________
Talk-de mailing list
[email protected]
http://lists.openstreetmap.org/listinfo/talk-de




_______________________________________________
Talk-de mailing list
[email protected]
http://lists.openstreetmap.org/listinfo/talk-de

Antwort per Email an