Ayuda con Chat Arduino UNO y C#

Buenas gente, recientemente me encargaron un proyecto el cual consiste en crear un chat utilizando 2 Arduino uno para comunicar 2 computadoras, no tenia ni idea que era Arduino 2 dias atras, bien tras hacer pruebas y demás logre hacer el chat sin problemas, pero, ahora tengo que hacer que funcione con c# hice un poco de codigo y logre comunicar c# desde pc1 a Arduino-software en pc2 y viceversa

Arduino
#include <SoftwareSerial.h>
SoftwareSerial Send(10,11);
int mess;
void setup() {
  Serial.begin(9600);
  Serial.println("Start");
  Send.begin(9600);
  delay(1000); 
  Send.println("Hello World");

}

void loop() {
  
  if (Send.available()) 
    Serial.write(Send.read());
    
  if (Serial.available()) 
  {
    Serial.print("Me:\t");
    while (Serial.available()) 
    {
      mess = Serial.read();
      Send.write(mess);
      Serial.write(mess);
    }
    Send.println();
    Serial.println();
  }

}

C#

[sub]using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
using ArduinoChat.Properties;

namespace ArduinoChat
{
    public partial class Form1 : Form
       
    {
        public string a;
        public Boolean lol;
        public Form1()
        {
            InitializeComponent();
            spRead.PortName = "COM6";
            spRead.BaudRate = 9600;
            spRead.Open();
     
        }

        private void btnSend_Click(object sender, EventArgs e)
        {
            spRead.WriteLine(txtSend.Text);
            rtxtChat.Text = rtxtChat.Text + Environment.NewLine +"Yo: "+ txtSend.Text;
            spRead.DiscardOutBuffer();
            txtSend.Clear();
            
           
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (lol && a.Length > 0)
            {
                rtxtChat.Text = rtxtChat.Text + Environment.NewLine +"Fucker: "+ a;
                lol = false;
                a = "";
                
            }
        }



        private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
               
               a= spRead.ReadLine();
               lol = true;
     
        }

        private void txtSend_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == '\r')
            {
                spRead.WriteLine(txtSend.Text);
                rtxtChat.Text = rtxtChat.Text + Environment.NewLine + "Yo: " + txtSend.Text;
                txtSend.Clear();
            
            }
        }
    }
}

Dicho esto mi intención es hacer el chat usando C# en PC1 y PC2 (pense que el codigo tal y como lo tengo en este momento seria suficiente en ambas maquinas ) la verdad es que estoy atorado no se como proseguir, algún consejo o sugerencia seria muy agradecido

Hola, dices que estas utilizando el mismo codigo en ambas computadoras... Si te fijas estas hardcodeando el puerto COM lo cual no es lo mejor ya que no siempre va a ser el mismo puerto por el cual el arduino se va a comunicar con el sistema... Por lo que entiendo en una maquina si esta funcionando y en otra no... lo mas probable es que sea eso, que el puerto COM es distinto en la otra maquina. Lo que puedes hacer es usar un drop box con la informacion de los puertos habilitados actuales. Harias algo asi:

C#

//Listas puertos COM en combobox, esto va en el constructor.
foreach(string port in SerialPort.GetPortNames())
comboBox1.Items.Add(port);

//Para que evitar que el primer valor del combobox sea en blanco seleccionamos index 0. En constructor tambien.
comboBox1.Item.SelectedIndex = 0;
//Damos un valor inicial...
spRead.PortName = comboBox1.SelectedItem();

y ya, un evento tipo "indexChanged"

comboBox1_OnChange(eventHandler e)
{
spRead.PortName = comboBox1.SelectedItem();

}

Todo esto fue a mano alzada... puedo equivocarme en alguna sintaxis pero por ahi va el asunto.