Conectar Arduino y C# error tiempo de espera del semáforo agotado

Hola a todos, lo que pasa es que necesito conectar arduino con c# para visualizar en una aplicación de windows la temperatura y humedad por medio de IO ports, pero intento conectar y siempre me sale el error de "Tiempo de espera del semáforo agotado" no se como resolverlo y estoy buscando hace mucho tiempo no se si sea problema de mi pc o controlador, He intentado en c# poner una variable en un puerto y me sale siempre el mismo error, aquí colocaré el código que tiene la placa de arduino y el codigo en c# para poder recibir los datos.

#include <SPI.h>
#include <Ethernet.h>
  
// Configuración de direccion MAC e IP.
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,177);
  
// Inicia la libreria Ethernet server con el puerto 80 (por defecto el puerto HTTP).
EthernetServer server(80);
  
void setup() {
// Inicia el puerto serie.
Serial.begin(9600);
  
// Inicia la conexión Ethernet y el servidor.
Ethernet.begin(mac, ip);
server.begin();
Serial.print("IP local del servidor ");
Serial.println(Ethernet.localIP());
}
  
void loop() {
EthernetClient client = server.available(); // Escucha a los clientes entrantes.
    if (client) { // Si un cliente se conecta al servidor:
    Serial.println("Nuevo cliente");
    boolean currentLineIsBlank = true; // Marcador para enviar la respuesta desde el servidor.
        while (client.connected()) { // Repite mientas existe clientes conectados:
            if (client.available()) {
            char c = client.read();
            Serial.write(c); // Imprime por el puerto serie la petición del cliente (caracter a caracter)
                if (c == '\n' && currentLineIsBlank) { // Se envia la respuesta a una petición de un cliente cuando a finalizado la petición:
                // Respuesta:
                client.println("HTTP/1.1 200 OK"); // Enviar un encabezado de respuesta HTTP estándar
                client.println("Content-Type: text/html");
                client.println("Connection: close"); // Se cerrará la conexiós despues de enviar la respuesta.
                client.println();
                client.println("<!DOCTYPE HTML>"); // Tipo de documento.
                client.println("<html>"); // Etiqueta html inicio del documento. 
                client.print("jos3cort3s Arduino");
                client.println("
"); // Etiqueta html salto de linea. 
                client.println("<meta http-equiv=\"refresh\"content=\"15\">"); // Etiqueta html para que el navegador se actualice cada 20 sg.
                
                //----------------------------------------------------------
                
                client.print(tempeHume());
                break;
                }
                if (c == '\n') { // Si el caracter es un salto de linea:
                currentLineIsBlank = true; // La petición a terminado, se respondera a dicha peticón en el sigueitne ciclo.
                } 
                else if (c != '\r') { // Si el caracter no es un retorno de carro (la petición no a terminado).
                currentLineIsBlank = false; // Seguimos escuchando la petición.
                }
           }
       }
    delay(1); // Espera para dar tiempo al navegador a recivir los datos.
    client.stop(); // Cierra la conexión.
    Serial.println("Cliente desconectado");
    Serial.println();
    }
}

Aqui va uno de los tantos codigos que he intentado de c#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;
using System.IO;

namespace Arduino_Test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        String[] puertos = SerialPort.GetPortNames();
        String puerto = "";
        int dato = 0;
        int contador = 0;
        private void Form1_Load(object sender, EventArgs e)
        {
            foreach (string mostrar in puertos)
            {
                comboBox1.Items.Add(mostrar);
            }
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            puerto = comboBox1.Text;
            try
                {
                    serialPort1.PortName = puerto;
                    serialPort1.ReadTimeout = 20000;
                    serialPort1.Open();
                    CheckForIllegalCrossThreadCalls = false;
                    if (serialPort1.IsOpen == true)
                    {
                        timer1.Start();
                    }
                }
            catch (Exception ex)
                {
                    MessageBox.Show("Error Siguiente: "+ex,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
                    timer1.Stop();
                }
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            label3.Text = "";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            serialPort1.Close();
            serialPort1.Dispose();
            
        }

        private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            dato = serialPort1.ReadByte();
            contador++;
            if (contador == 1)
            {
                label3.Text = "recibiendo datos";
                int humedad = dato;
                label5.Text = humedad.ToString();
            }
            if (contador == 2)
            {
                label3.Text = "recibiendo datos";
                int temperatura = dato;
                label4.Text = temperatura.ToString();
                contador = 0;
            }
        }
    }
}

Por favor necesito ayuda :frowning:

seguro que la dirección Ip esta bien?

Pudiste solucionarlo, estoy en la misma situacion, me canse de googlear, y probar de todo y no entiendo que pasa?