No se ejecuta el evento cuando recibe dato en el puerto en C#

Estimados, tengo el siguiente inconveniente, trato de leer lo que recibo por las entradas digital y no logro que se ejecute el evento pero en el compilador del arduino si me funciona. ¿no se que es lo que estoy haciendo mal?

Ejemplo del código en C#

        SerialPort serialPort1 = new SerialPort("COM3");
        public MainWindow()
        {

            serialPort1.PortName = "COM3";
            serialPort1.BaudRate = 9600;
            serialPort1.DataReceived += serialPort1_DataReceived;
            serialPort1.Open();
            InitializeComponent();
      
        }

  string buffer = string.Empty;

        private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            // buffer up the latest data.
            buffer += serialPort1.ReadExisting(); ;

            // there could be more than one packet in the data so we have to keep looping.
            bool done = false;
            while (!done)
            {
                // check for a complete message.
                int start = buffer.IndexOf(":");
                int end = buffer.IndexOf(";");
                if (start > -1 && end > -1 && start < end)
                {
                    // A complete packet is in the buffer.
                    string packet = buffer.Substring(start + 1, (end - start) - 1);

                    // remove the packet from the buffer.
                    buffer = buffer.Remove(start, (end - start) + 1);

                    // split the packet up in to it's parameters.
                    string[] parameters = packet.Split('*');


                }
                else
                    done = true;
            }

Saludos y gracias.