Проблема с разделением данных, накопленных с GPS, ишу помощь
- Войдите на сайт для отправки комментариев
Здравствуйте!
Можете ли вы помочь мне с проблемой, которую возвращает программа?
результат на терминале:
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.
спасибо.
почему результат на терминале не отображается 55°40'36,7828"N а а вместо ето толькос E ???