Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos » Arduino y Raspberry Pi
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

23/01/2014 #1


Organizar información del puerto serie
Buenos dias! Se que es una pregunta muy basica para algunos pero no soy un experto y ademas he buscado y creo que no con las palabras adequadas.

RESUMEN:
Organizar/filtrar datos del puerto serie en diferentes variables (sensores), para ser visualizados y graficados.



Alguna sugerencia? ayuda? enlace?

Muchas gracias!

Ampliación de información:

Estoy intentado hacer desde 0 con visual basic (usando Sharpdevelop), un programa que tenga 2 opciones:

-Visualizar numericamente.

-Visualizar graficamente.

Se trata de un arduino mandando información sobre varios sensores a traves del puerto serie. Este envia los datos de los sensores asi:

sensor1:433 sensor2:345 sensor3:534
sensor1:433 sensor2:345 sensor3:534
sensor1:433 sensor2:345 sensor3:534


Y aqui esta mi problema, no se como Organizar/filtrar estos datos para ir mostrandolos por pantalla en su correspondiente caja de texto.

Había pensado de meter caracteres especiales para que se detecte cuando empieza el valor del sensor y cuando acaba pero no se como.
Otra alternativa seria que no envie la información hasta que el PC la solicite, y por tanto el PC decida que sensores quiere leer...

Alguna sugerencia? ayuda? enlace?

Muchas gracias!
23/01/2014 #2

Avatar de ByAxel

Con (sensor1:433 sensor2:345 sensor3:534) puedes usar una función de separación {ver función Split para VB} para separar en subcadenas.

sensor1:433
sensor2:345

e igual con lo mismo, puedes separar el nombre del valor.
Sugiero que los bloques (sensor1:433) los separes con comas u otro signo. Igual, revisa la funsión.

Saludos
27/01/2014 #3


Ok! muchas gracias!
Despues de mucho probar aqui tengo parte del codigo:


Código:
    
    Dim text_in As String
    Dim sensor0 As String
    Dim    sensor1 As String
    Dim    sensor2 As String
    Dim line As String
    Dim    a    As String()


Sub Tmr_aTick(sender As Object, e As EventArgs)
            line=serialPort.ReadLine
            txt_multi.Text= line & text_in
            text_in=txt_multi.Text
                
        'Separate values
        
        a=Split(line)
        sensor0=a(1)
        txt_A.Text=sensor0
        
        
    End Sub
Pero me da un error
**********
Pantalla numerica
Indice fuera de los limites de la matriz
**********

Que puede ser?
Lo he analizado y el error lo crea:
Código:
sensor0=a(1)
Debo cambiar de variable?
27/01/2014 #4

Avatar de ByAxel

Hola.
1ro. Usas a=Split(line), por defecto va a separar cuando encuentre solo espacios (" ").

2do. Estas seguro que la cadena "sensor1:433 sensor2:345 sensor3:534" siempre se lee igual al mismo tiempo?.
Si la cadena está incompleta, Split va a devolver la misma cadena ya que no ha encontrado espácios (" ") para hacer la separación. Por lo tanto el array solo va a tener un valor en el vector o posición cero (0), por eso cuando apuntas a (1) da error al no existir.

En un post anterior te pasé un link donde explica como usar la función Split, tambien hay ejemplos.

Para tu caso, vas a necesitar hacer dos separaciones (siempre y cuando la cadena sea correcta), la primera separando por espácios para obtener "sensor1:433" y la segunda debes de indicar que el carácter de separación sea ":" para obtener "sensor1" y "433" separados... lo mismo para el resto.

Saludos.
28/01/2014 #5


perdon! me falto citar que en el puerto serie tengo estos datos separados por espacios:
s0 123 s1 343 s2 548
s0 123 s1 343 s2 548
s0 123 s1 343 s2 548
...
Y esta es la parte de arduino que lanza estos datos al puerto serie.
Código:
  Serial.print("s0 "); 
  Serial.print(s0);      
  Serial.print(" ");      
  Serial.print("s1 ");
  Serial.print(s1);      
  Serial.print(" ");
  Serial.print("s2 ");  
  Serial.print(s2);      
  Serial.println(" \n");
Es decir que lo separo por espacios.
28/01/2014 #6


SOLUCIONADO!

El problema estaba en el arduino, ya que enviaba un print con final de linea y ademas un "\n".

Por lo que imagino que se enviaba una linea vacia que al aplicar el split daba lugar a una matriz vacia de una sola dimension a(0) y al estar accediendo al a(1) me daba este error.

Espero que ya que me ha ayudado a mi en un futura ayude a otros como yo!

Saludos y muhas gracias a todos!
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Arduino y Raspberry Pi

Cerrar
Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos » Arduino y Raspberry Pi

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.