Проблема с разделением данных, накопленных с GPS, ишу помощь

SmErT
Offline
Зарегистрирован: 02.05.2017

Здравствуйте!

Можете ли вы помочь мне с проблемой, которую возвращает программа?
результат на терминале:
 

Serial start OK
E
37°41'34.8926"E
2.22
-360.47

Аппаратура

Ардуино МЕГА
GSM/GPRS/GPS Shield v3
Datasheet simcom 908 страница 246

Функциональность программы

буфер "32,225228.000,A,5540.613048,N,3741.581676,E,2.22,-360.47,240417,,E,A"

чтение из буфера 5540.613048
чтение из буфера N

5540.613048==>55
5540.613048==>44
5540.613048==>0.613048*60= 36,78288
55°40'36,7828"N

чтение из буфера 3741.581676
чтение из буфера E

3741.581676==>37
3741.581676==>41
3741.581676==>0.581676*60= 34.90056
37°41'34.9005"E

чтение из буфера 2.22
чтение из буфера -360.47
 

char RMC_buffer[]="32,225228.000,A,5540.613048,N,3741.581676,E,2.22,-360.47,240417,,E,A"; these data were taken from Arduino GSM/GPRS/GPS Shield V3
char latitude[15];
char longitude[15];
char speedOTG[8];
char course[8];

void setup()
{
Serial.begin(19200);
Serial.println("Serial start OK");

get_GPS(RMC_buffer,latitude, longitude, speedOTG, course );
Serial.println(latitude);
Serial.println(longitude);
Serial.println(speedOTG);
Serial.println(course);
}

void loop(){
}
 
void convert2Degrees(char *coord1, char *coordDir, char *coord){//input data coord1 and coordDir output coord

int DD=0, MM=0;
float SS=0;
char SS_SSSS[8];
SS=atof(coord1);                                      //convert input data coord1 to float
                                                      //5540.613048 = DDMM.mmmmmm from datasheet simcom 908
DD = (int)SS/100L;                                    //extract DD
MM = (int)SS % 100L;                                  //extract MM
SS=(SS-(DD*100)-MM)*60;                               //extract .mmmmmm and convert him to SS
dtostrf(SS, 2, 4, SS_SSSS);                           //convert float SS to string SS.SSSS
sprintf(coord,"%d°%d\'%s\"%s",DD,MM,SS_SSSS,coordDir);//regrupe DD°MM'SS.SSSS"N
}

void get_GPS(char *buff, char *lat, char *log,char *spee_d,  char *dir){

char latitude1[15], latitudeDir[2];
char longitude1[15], longitudeDir[2];

strtok(buff, ",");                                    //from buffer
strtok(NULL, ",");
strtok(NULL, ",");
strcpy(latitude1,strtok(NULL, ","));                  //Get latitude
strcpy(latitudeDir,strtok(NULL, ","));                // Get latitude directon
convert2Degrees(latitude1, latitudeDir, latitude);

strcpy(longitude1,strtok(NULL, ","));                 // Get longitude
strcpy(longitudeDir,strtok(NULL, ","));               // Get longitude directon
convert2Degrees(longitude1, longitudeDir, longitude);

strcpy(speedOTG,strtok(NULL, ","));                   // Get speed over ground. Unit is knots.
strcpy(course,strtok(NULL, ","));                     // Get course
}

В дальнейшем  добавлять температура и номыр транспортного средства, то я пошлю все это на SQL сервер через GPRS.

спасибо.

SmErT
Offline
Зарегистрирован: 02.05.2017

почему результат на терминале не отображается 55°40'36,7828"N  а а вместо ето толькос E ???

Serial start OK
E
37°41'34.8926"E
2.22
-360.47