Saludos, tengo un problema con un codigo pequeño, lo que necesito hacer es recibir una cadena por el puerto serial del arduino, al recibirlo necesito modificar la extructura de este y cuando este modificado enviarlo por el puerto serial (tx).
esta es la cadena que recibo(ejemplo) ( 33140KG ) va con sus espacios,
esta es la cadena que debo enviar (ejemplo (+03314015) va con sus espacios
Lo que estoy haciendo es agarrar una cadena que me entrega un Indicador de peso, y lo mando aun display, pero el problema es que el display no reconoce el formato de la cadena del indicador, por lo tanto tengo que pasarla por el arduino para intervenirla y luego mandarla por el puerto TX hacia el dysplay.
desde el indicador recibo esta cadena ( 33140KG ) cuando digo que viene con esos espacios, es por q tengo dos datos en asci que son inicio y termino de mensaje. Por lo tanto cuando agarro el dato con la funcion cadena.substring(4,9) solamente guardo los valores q me interesan que son el peso.
Luego con los serial.print imprimo en el serial por parte la extructura de la cadena que quiero obtener. Eso hasta el momento funciona bien. el tema es cuando el peso varia, la cadena.substring queda con el primer peso que guardo y no varia. y si utilizo
cadena=""; se borra y no aparece que guarde el peso.
ademas que al recibir un peso, la idea es que me imprima una vez solamente la cadena que deseo obtener y el resultado es este:
Moderador:
Por favor, lee las Normas del foro y edita tu código/error usando etiquetas de código.
Ve a edición, luego selecciona todo el código que has publicado, lo cortas y click en </>
Tu código imprimía con cada caracter recibido por eso lees esa respuesta.
Si, solo esperas al último caracter, el String peso se carga con el valor y luego presentas todo.
Gracias amigo,con este codigo ya puedo enviar los datos y replicarlos en el display enviando los datos por el puerto TX.
Ahor el problema que tengo que recibo muchos datos y envio menos de los que recibo.
Estoy intentando enviar un dato por dato recibido pero no logro hacer que funcione, si alguien tiene una idea de como hacerlo o una pista, seria de gran ayuda
Saludos, Tengo un problema que se ve simple pero no lo eh podido solucionar.
lo que pasa es que necesito enviar un dato por el puerto tx de mi arduino nano despues de recibir uno por el puerto rx, El problema es que cuando recibo por el puerto RX comienzo a mandar datos sin parar y eso me genera un problema.
como solucion necesito que al recibir un dato por RX enviar solamente un dato por el puerto TX.
El codigo es el siguiente
En Resumen mi codigo lo que hace es recibir un string de peso, el que guardo, luego rescato los datos necesarios y los imprimo en un nuevo string, al imprimirlo borro el dato que habia recibido, para recibir uno nuevo.
void loop() {
if (Serial.available() > 0) {
char dato = Serial.read();
if (dato != '\r') {
cadena.concat(dato);}{
peso = cadena.substring(3,8);
// se terminó de recibir los datos
delay(100); // no me gustan los delays pero le doy un tiempo.
Serial.write(02);
Serial.write("+");
Serial.print ("0");
Serial.print(peso);
Serial.print("015");
Serial.write(03);
Serial.println("");
}
}
else {
cadena = "";
}
}
Ahora miraré lo que @anon90500195 me dice, espero que no sea el caso.
void loop() {
if (Serial.available() > 0) {
char dato = Serial.read();
if (dato != '\r') {
cadena.concat(dato);}{
}
else {
peso = cadena.substring(3,8);
// se terminó de recibir los datos
delay(100); // no me gustan los delays pero le doy un tiempo.
Serial.write(02);
Serial.write("+");
Serial.print ("0");
Serial.print(peso);
Serial.print("015");
Serial.write(03);
Serial.println("");
}
}
else
cadena = "";
}