none
Comparar resultado obtenido al ejecutar comando CMD con un String RRS feed

  • Pregunta

  • Saludos...como veran soy nuevo en este foro, asi como tambien en C#. Hace un par de dias vengo haciendo un proyecto el cual consiste en automatizar un sistema de pruebas para tarjetas PCB basados en el microcontrolador ATMEGA328P, y lo que deseo hacer es cargar el bootloader de arduino y un programa en estas tarjetas de forma automatizada, para cargar los programas estoy usando la herramienta AVRDUDE el cual he logrado ejecutar a traves de comandos en el CMD con el siguiente codigo.

            private void button1_Click(object sender, EventArgs e)
            {
                System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd", "/c" + "avrdude -v -patmega328p -cstk500v1 -PCOM7 -b19200 -Uflash:w:C:/ATmegaBOOT_168_atmega328.hex:i -Ulock:w:0x0F:m");
                procStartInfo.RedirectStandardOutput = true;
                procStartInfo.UseShellExecute = false;
                procStartInfo.CreateNoWindow = true;
                procStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                System.Diagnostics.Process proc = new System.Diagnostics.Process();
                proc.StartInfo = procStartInfo;
                proc.Start();
                string result = proc.StandardOutput.ReadToEnd();
                Console.WriteLine(result);
            }
      

    Lo que yo quiero es poder comparar el resultado (result) con la siguiente cadena.

    "avrdude: safemode: lfuse reads as FF
     avrdude: safemode: hfuse reads as DA
     avrdude: safemode: efuse reads as 5
     avrdude: safemode: lfuse reads as FF
     avrdude: safemode: hfuse reads as DA
     avrdude: safemode: efuse reads as 5"

    Esto con el objetivo de verificar si el proceso ha sido exitoso. Alguien que me pueda ayudar con esta duda por favor, gracias de antemano.

    martes, 8 de mayo de 2018 14:08

Todas las respuestas

  • hola

    Si tienes el string podrias leer cada linea y compararla

    How to read standard output line by line?

    de esta forma iteras por cada linea y la comparas con la salida

    la cadena de comparacion podrias ponerla tambien en un array y asi usar el Contains() del string

    string[] lineas = new string[] {"avrdude: safemode: lfuse reads as FF", 
                                    "avrdude: safemode: hfuse reads as DA", 
                                    //resto
                                   };

    entonces cuanto recuperas una linea desde el output puede usar el contains en ese array para ver si existe

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 8 de mayo de 2018 17:41