none
Comparar String con dato recibido de arduino RRS feed

  • Pregunta

  • Hola estoy haciendo una comparacion en visual studio conectado con arduino este es el codigo de visual studio:

                string dato;

                dato = serialPort1.ReadExisting();
                richTextBox1.AppendText(dato);
                if (dato=="ok") 
                {
                    pictureBox1.ImageLocation = "C:/Users/BrahianS/source/repos/Proyecto1/banana.gif";
                }else
                {
                    pictureBox1.ImageLocation = "C:/Users/BrahianS/source/repos/Proyecto1/banana2.gif";
                }

    /////

    codigo arduino

    Serial.println("ok");

    el problema es que no entra en el if siendo los datos iguales en el richbox muestra ok pero no entra al if , si pongo dato == dato si entra, tambien intente con dato.equals("ok") y tampoco entra gracias por su ayuda


    martes, 11 de diciembre de 2018 23:11

Respuestas

  • hola

    El richtextbox el string que genera aplica formato, no se va a comparar nunca igual

    pero igual veo que comparas la variable, podrias ver si hay algun caracter de fin de linea, a veces estos device lo agregan, podrias evaluar el array de la lectura

    no se si puede poner un breakpoint he inspeccionar la variable, seguramente veas este caracter

    C# Serial Port Communication Arduino

    valida que desde arduino se envia un dato simple, que el ok sea un 0 o 1

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 12 de diciembre de 2018 12:54

Todas las respuestas

  • Buenas,

    Puede que sea un problema con como envías los datos desde arduino y que no sea como esperas que se hace, por ejemplo los retorno de carro, etc...

    Se me ocurren 2 cosas, la primera, poner un breakpoint sobre if (dato=="ok")  y ver que trae exactamente "dato", para descartar cosas raras, por ejemplo "ok " no es igual que "ok", el espacio final marca la diferencia, y es algo que en el richTextBox1 no vas a poder apreciar fácil...

    Una posible solucion, asumiendo que que el problema es que pueda haber algun espacio en blanco de más metido por ahí, podría ser algo así:

    if (dato.Trim()=="ok") 

    Con el Trim vas a quitar espacios en blanco (difíciles de ver si no los estas buscando específicamente) que pùeden hacer que el == retorne false.

    Cualquier duda que tengas nos comentas

    Atte


    Jorge Turrado Ferrero

    Mis repositorios en GitHub

    Mi Blog


    Ranking GitHub Euskadi
    Ranking GitHub Alava

    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    miércoles, 12 de diciembre de 2018 12:29
  • hola

    El richtextbox el string que genera aplica formato, no se va a comparar nunca igual

    pero igual veo que comparas la variable, podrias ver si hay algun caracter de fin de linea, a veces estos device lo agregan, podrias evaluar el array de la lectura

    no se si puede poner un breakpoint he inspeccionar la variable, seguramente veas este caracter

    C# Serial Port Communication Arduino

    valida que desde arduino se envia un dato simple, que el ok sea un 0 o 1

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 12 de diciembre de 2018 12:54