Проблема с разделением данных, накопленных с 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 ???