Char Array GPS a valor numerico.

Hola Amigos

les cuento que ando trabajando con unos Modulos M95 (gprs) y L80(gps) de Quectel

Del GPS Obtengo una trama que almaceno en una variable asi:

char gps_str[61];

y la trama que almaceno (por ejemplo)=

PRMC,161709.000,A,0852.4895,N,07548.0182,W,0.02,24.55,210116

de donde me interesa la latitud (bueno la longitud tmb pero entendiendo la latitud me basta para la longitud)

esa la almaceno en otra variable

char latitud[9];

de esta manera

latitud[0]=gps_str[18];
latitud[1]=gps_str[19];
latitud[2]=gps_str[20];
latitud[3]=gps_str[21];
latitud[4]=gps_str[22];//coma
latitud[5]=gps_str[23];
latitud[6]=gps_str[24];
latitud[7]=gps_str[25];
latitud[8]=gps_str[26];

quedandome en esta 0852.4895

hasta ahi todo muy bien...pero la ayuda que necesito es que necesito ese valor en una variable numerica para poder hacer una conversion de coordenadas que pueda llevar a google maps. es decir alli estan en formato de grados minutos y la necesito en grados decimales.

para ello debo hacer lo siguiente:

08+(52.4895/60) = 8+0.874825=8.874825.....QUE ES LA COORDENADA QUE PUEDO METER A GOOGLE MAPS.

me gustaria tener esa variable en un tipo long o int.....

Alguien podria darme una mano?

por cualquier ayuda, doy las gracias por adelantado.

Una opción sería hacerlo durante la propia lectura, mediante parseFloat, ya que creo que la librería gps hereda de stream.

Hola Noter muchas gracias por la indicacion pero no entiendo muy bien como usaria esa funcion ya que estotalmente nueva para mi y la info de ella no es muy clara para mi.

En un proyecto mío, lo hago así:

latitude = (((float(gps_str[18]) - 48.0) * 10.0) + (float(gps_str[19]) - 48.0)) + ((((float(gps_str[20]) - 48.0) * 10.0) + (float(gps_str[21]) - 48.0) + ((float(gps_str[23]) - 48.0) / 10.0) + ((float(gps_str[24]) - 48.0) / 100.0) + ((float(gps_str[25]) - 48.0) / 1000.0) + ((float(gps_str[26]) - 48.0) / 10000.0)) / 60.0);

Siendo latitude una variable del tipo float. No es la mejor manera, ni la más elegante, pero funciona.

Ah, y para antes de que lo preguntes, siempre le resto 48, para convertir el valor ASCII a un valor numérico correcto.