ASCII a string

Como dice el titulo, hay alguna manera en arduino de pasar los números de ascii a algún string?

Ejemplo?

Danos un ejemplo donde lo indiques en ascii porque la conversión es como lo presentes simplemente.

ejemplo
ASCIII 48 = '0'como caracter

si pones Serial.print(48); se lee 48
si pones Serial.print((char)48); veras '0' sin los apóstrofes

1 Like

Estoy recibiendo por el puerto serial, un codigo ASCII el cual me toca quitarle los dos últimos dígitos por ejemplo:

4954495748665049695119 esto seria lo que me llega al puerto serial.
49544957486650496951 asi le quito ese 19 que es un caracter que no me sirve

16190B21E3 Y este seria ese codigo ASCII en forma de texto que es el que necesito

el codigo ascii puede variar de tamaño pero siempre me pondrá ese 19 que debo quitar, pero no se como volver esos números en texto, estoy guardando lo que recibo del puerto serial en un string, no se si seria mejor un int y pasarlo a texto pero no se como hacer eso.

A ver.. porque no pones el código con el que lees los datos.

Este seria el codigo pero sigo teniendo esos dos problemas

  1. cc deberia ser el codigo cortado (sin los dos ultimos digitos) pero no se guarda en el para poder usarlo luego
  2. No se como convertir cc de ASCII a un texto normal, mejor dicho que sea visible y no solo sean números
 String codbarras;
 String cc;

void setup() {

  Serial.begin(9600);
   
}



void loop() { 

  if (Serial.available() > 0) {
     codbarras = Serial.readStringUntil('\r');

      Serial.println(codbarras);

      delay(1000);
      int s=codbarras.length()-2;
     for(int i=0;i<s;i++){
     Serial.print(codbarras[i]);
     cc[i]=codbarras[i];
    } 
  Serial.println("este es");
  Serial.println(cc);
         
  }
  }

Prueba esto y me dices que tal lo hace

char cadena[30]; //Creamos un array que almacenará los caracteres que escribiremos en la consola del PC. Le asignamos  un tope de caracteres, en este caso 30
byte posicion=0;  //Variable para cambiar la posición de los caracteres del array
int valor;  //Variable del valor entero

void setup() {

  Serial.begin(9600);
   
}

void loop() { 

  if (Serial.available() > 0) {
      memset(cadena, 0,sizeof(cadena));     // memset borra el contenido del array  "cadena" desde la posición 0 hasta el final sizeof
      while(Serial.available()>0) {         // Mientras haya datos en el buffer ejecuta la función
          delay(5);                         // Pone 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++"
          if (cadena[posicion] = '\r') {    // terminamos de 
              cadena[posicion] = 0;         // borro ese caracter \r y termino la cadena
              break;
          }
          posicion++;
      }
      Serial.print("este es = ");
      Serial.println(cadena);
  }
}

Lo imprime hacia abajo y no sale nada, sale como se muestra en la imagen

Bueno debo haber cometido algun error en como cerrar la cadena.

puede ser esto?

          if (cadena[posicion] = '\r') {    // terminamos de

deberia ser una comparacion?:

          if (cadena[posicion] == '\r') {    // terminamos de