Go Down

Topic: Cadenas y comunicacion serie (Read 232 times) previous topic - next topic

ingeniero18

Cómo andan? Tengo un pregunta sobre algo que creo es muy simple de responder pero que no logro llevar a la práctica.

Necesito almacenar una cadena de texto recibida por el puerto serie pero necesito guardarla en una variable tipo char, no string.

Disculpen si les falto el respeto con algo tan simple, pero no lo logro conseguir :-(

cas6678

#1
Feb 19, 2018, 01:19 pm Last Edit: Feb 19, 2018, 08:26 pm by cas6678
Mira esto:
https://www.arduino.cc/reference/en/language/variables/data-types/char/

https://www.arduino.cc/reference/en/language/variables/data-types/stringobject/


Char es para lo que es. No puedes en ella cargar una cadena, tan solo un caracter. Quizas tengas opciones mas faciles para lo que quieres hacer, que no sabemos que es. La unica solucion intermedia que se me ocurre es que crees un vector de Char:

myChar(x), donde x sea el numero de posiciones de tu cadena de texto. De esta manera myChar(0) tendra el primer caracter de la cadena, myChar(1) el segundo y asi hasta myChar(x) que tendra el ultimo.

ArduMyth

Un String es una colección de char.
Siempre puedes añadirlo a un array de char, pero hay que tener en cuenta el buffer, la forma de concatenar que pudieses necesitar a posteriori, etc.

Saludos.

pepepotero

Hola

A ver si te sirve.

Un saludo

Code: [Select]


char cadena[10]; //Array que almacenará los caracteres que escribiremos en el Serial. Le asignamos  un tope de 10 caracteres (modifcar segun necesidad).

void setup() {
  Serial.begin(9600);
}

void loop() {
  if (Serial.available()) //Nos dice si hay datos dentro del buffer
  {
    memset(cadena, 0, sizeof(cadena)); //memset borra el contenido del array  de chars "cadena"
    while (Serial.available() > 0) //Mientras haya datos en el buffer ejecuta la función
    {
      delay(5); //Poner un pequeño delay para mejorar la recepción de datos
      cadena[posicion] = Serial.read(); //Lee un carácter del string "cadena" de la "posicion", luego lee el siguiente carácter con "posicion++"
      posicion++;
    }
    posicion = 0; //Ponemos la posicion a 0
  }
// Ya tienes todo lo recibido en la cadena "cadena" compuesta de chars.
}



ingeniero18

#4
Feb 21, 2018, 06:51 am Last Edit: Feb 21, 2018, 01:30 pm by surbyte Reason: No hagas reply de lo que ya se lee arriba
Más exacto imposible, pepepotero!!! Muchas gracias!!


Go Up