Problema con captura de trama RS-232

Hola a todos. Espero se encuentren bien.
Como pueden observar, soy nuevo en este foro y llevo 8 horas leyendo, haciendo y nada (2 tiempos, cada uno de cuatro horas, aclaro.)
Pero en fin, voy al grano.

Como trabajo final me mandaron a trabajar con:
- Arduino UNO
- Bluetooth hc-06
- Android
- ARDUDROID (Aplicación para enlazar o conectar desde el celular al bluetooth y posteriormente al ARDUINO UNO)

OBJETIVO: PODER CAPTURAR PARTE DE LA TRAMA.

Ejemplo: Yo tengo esto en el arduino...

PHP:
//bluetooth hc-06

char y=0;

void setup() {  
  Serial.begin(9600);
  Serial.println("---EN LINEA---");  
}
  
void loop() {

   if (Serial.available() < 1) return; {
      y = Serial.read();
      Serial.print(y);     
      delay(200);
   }
}


Listo. Cuando estoy en la aplicación en la parte analógica, (que es la que va de 0 a 255) al mover de izquierda a derecha la correa o cinta, mi monitor serie lee esta trama:
*11|11|46#
Y si continúo, sigue leyendo.
*11|11|106#
*11|11|176#
*11|11|230#
*11|11|255#

Si ven, esa es la trama y yo necesito desechar todo menos lo que está antes del numeral (#) que en este caso es el dato de 3 bits que varía dependiendo el movimiento que haga desde la aplicación y posteriormente guardarlo.

Nota:
Sólo es hacer algo pequeño, no un sin número de librerías, códigos y demás que ni uno mismo entiende.

Les Agradezco.
 
Última edición por un moderador:
En primera te recomiendo usar la etiqueta
Código:
 por que el código se deforma si solo lo pegas, en segunda, si usas return en el loop lo rompes y regresas al main (en lenguaje Arduino esta implícito), recomiendo que no uses return en el loop, aunque parece que no causaría problemas estando dentro del while del main.

Si quieres procesar una cadena de texto en el Arduino te recomiendo usar la clase string en lugar del tipo char, así podrás usar las funciones para componer substrings y procesarlas.
 
Última edición:
Problema con captura de trama RS-232

Hola nuyel, de ante mano Gracias por responder y estar pendiente.

ehh... no entendi el
Código:
 mi codigo esta bien solo quiero leer lparte de la trama y una vez intente con string pero no se usar el substring, si conoces el tema te agradeceria la colaboracion.
 
Te explico un poco con otro programa que hice, usaras un string, acumularlo es bastante simple en el Arduino están varios ejemplos con string, en Comunicación>SereialEvent hay un ejemplo de como acumular una string por interrupción del UART (algo más adecuado por que te da tiempo para procesar).

Bueno, comenzamos creando una nueva instancia de String y acumulamos (recuerda que es una clase, no un tipo), una ves que acumulamos el string ya podemos ir a procesar con String.indexOf(), este método admite 2 parámetros, uno es el carácter al cual buscará su índice en la string y el segundo es el valor desde donde comenzará a buscarlo, dado a que buscas el valor del ultimo segmento de la trama puedes usar String.lastIndexOf() para buscar la posición del ultimo separador, luego buscas la del terminador y con ellos compones una substring empleando String.substring()

Dejando de lado el como acumular la string podrías usar algo como:

Código:
String MiCadena = "*11|11|230#"; //indico el valor para ejemplificar
String sValor = MiCadena.substring(MiCadena.lastIndexOf("|"), MiCadena.indexOf("#"));
int iValor = sValor.toInt(); //.toInt retorna un tipo long

Ya para separar todos los valores debes componer varias substrings, usar .indexOf() para identificar cada separador y luego crear las 3 subcadenas y procesarlas.

PD: lo de
Código:
 era en el foro, el botón del # que esta encima al escribir tu mensaje, sirve para que la presentación del código se mantenga o algunos caracteres cambian a emojis.
 
Atrás
Arriba