Go Down

Topic: Separar cadena String por "," (Read 208 times) previous topic - next topic

wrv

hola chicos, soy un poco nuevo en arduino y quisiera que me guiaras un poco esto, el dispositivo que estoy usando es Heltec Lora32.

Estoy en un proyecto donde envío una ubicación GPS de un dispositivo a otro  a través  de LoRa y , pero el dispositivo que recibe tiene otro gps, y la idea es calcula la distancia de uno a otro, el problema que presento es como puedo separar los valores que envió por "," para poder hacer el calculo, lo que envió es este código

  LoRa.print(gps.location.lat(), 6);
  LoRa.print(String (F(",")));
  LoRa.print(gps.location.lng(), 6);

y aquí les dejo el código del dispositivo que recibe

gracias;

victorjam

Hola y bienvenido al foro.

Te invito a que te leas las NORMAS para que aprendas a postear correctamente imagenes, código, errores, enlaces, etc...

Puedes hacer uso de la funcion indexOf de la clase string que te devuelve la posición en la que encuentra un caracter. Luego usar la funcion substring para obtener las subcadenas que componen el valor. Y por último usar toFloat para convertir la cadena en un número.

Todas las funciones estan en la REFERENCIA de la clase String.

robertoxyz20

Una la librería Separador.h, ahí colocas el símbolo separador que quieras. Creo que está en github.

castelarijoaquin

#3
Dec 09, 2019, 04:39 pm Last Edit: Dec 09, 2019, 04:42 pm by castelarijoaquin
Con la cadena String que obtenes como resultado declaras un
Code: [Select]
char Cadenas = NULL;

luego a ese verctor le asignas asi
Code: [Select]
Cadenas= strtok(CadenaStringGPSCpmpleta, ",");  // takes a list of delimiters
Y en la variable Cadenas tendrias la latitud y longitud correspondientes.
Despues que haces eso para traer uno de los dos, ya sea latitud o longitud haces
Code: [Select]
Cadenas[n]

Avisa si te sirve, Saludos.

victorjam

Creo que tu explicación del uso de strtok es muy mala. Vas a crear más confusión que solución:

Code: [Select]

/*
 *  EJEMPLO DE USO DE STRTOK
 *  
 *  Separa un String por campos delimitados por un caracter.
 *  
 */

// Campos contiene la cadena formateada, con separador ",".
String campos = "34.3434,12.1212,99.9909";

// s en un puntero auxiar necesario.
char *s;

void setup() {
  // Iniciar el puerto serie.
  Serial.begin(9600);
  // En la primera pasa strtok devuelve el string hasta el primer caracter
  // delimitador.
  // Nota: La función strtok es una función estándar de la librería de
  //       C++, pero no es un miembro clase de String, por lo que no se
  //       puede usar con objetos String. Hay que utilizar la función
  //       miembro c_str() para poder acceder al puntero de char del
  //       objeto String.
  s = strtok(campos.c_str(), ",");
  // Para encontrar todos hay que seguir llamando a strtok pasando como
  // parametro NULL en la cadena a buscar, cuando haya hallado todos los
  // campos separados por "," devolverá NULL.
  while (s!=NULL) {
    Serial.println(s);
    s=strtok(NULL, ",");
  }
}

void loop() {

}

ElEspanol

Con la cadena String que obtenes como resultado declaras un
Code: [Select]
char Cadenas = NULL;
eso no es un vector(pointer). Esto es una variable char de tamaño de un byte.

char* Cadenas; es un vector

Go Up