Ayuda con C# y arduino ejecución de las instrucciones

buen dia, mi problema es el siguiente acabo de realizar un programa que lee unos números que genera la tarjeta arduino, cuando pruebo la programación de la tarjeta en realterm se abre el puerto y se ejecuta las instrucciones, mostrando me en pantalla los numero, eso mismo quiero hacer en mi programa, solo he logrado que abra el puerto pero que no se ejecute las instrucciones de la tarjeta, ya revise en varios ejemplos pero no funciona, estoy programando en c# espero y me puedan ayudar.

Para poderte ayudar deberías agregar tu código de Arduino y el código de C#

Cuando lo hagas usas las etiquetas de código. (el icono N° 19 de izquierda a derecha.)

codigo del arduino

extern volatile unsigned long timer0_overflow_count;
#define  numero_muestras 100
float fanalog2;
int analog2;
int sum =0;
unsigned long tiempo;
byte serialByte;
int pinPot=2;
int val=0;
unsigned char contador =0;
void setup() {
   Serial.begin(9600);
}
void loop() 
{
    while (contador < numero_muestras) {
        sum += analogRead(A2);
        contador++;
        delay(10);      
      while(1){
        analog2=analogRead(2);
        // Convierto a milivoltios
        fanalog2=((analog2)*(5000.0/1023)/208.3333);
                tiempo=(timer0_overflow_count << 8) + TCNT0;
        tiempo=tiempo*4;
        Serial.print(tiempo*.000001);
        Serial.write(';');
        while (contador <numero_muestras){
            sum += analogRead(A2);
            contador++;
            delay(50);
        }
        Serial.println(fanalog2,DEC);
        delay(15000);
        if (Serial.available()>0){
        }
      }
    }
  }

muy bien aqui dejo el codigo de apertura del puerto y como se intento hacer la ejecución de las instrucciones

public void puerto()
        {
            CheckForIllegalCrossThreadCalls = false;
            try
            {
                leonardo.Open();

            }
            catch (Exception ex)
            {
                MessageBox.Show("Error al abrir el puerto serie: " + ex.Message);
            }
        }


private void leonardo_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            string linea = leonardo.ReadExisting();
            StreamWriter writer = new StreamWriter("C:\\Users\\Leonardo\\Desktop\\respaldo total\\tesis\\captura2.txt");
            {
                writer.WriteLine(linea);
            }   
        }

cuando hagas sumatorias como en tu caso detente a pensar un instante.
mira esto

tu AD lee de 0 a 1023, asi que como peor caso que tu entrada analógica lea 5V tendras 100 muestras de 1023 cuentas o sea

100x1023 que da 102300 upssssss supera a un int con signo (32768) e incluso sin signo 65535, o sea que sum debe definirse como long minimamente o unsigned long como hago siempre yo y no debo pensar nada.

que enroscado ese código no entiendo que quieres hacer..

lees primero sum += analogRead(A2);
y luego otra vez sum += analogRead(A2);

para que dos veces?????

luego tienes esto

        if (Serial.available()>0){
        }

completamente vacìo.
O sea no lees nada del puerto serie en el ARduino proveniente de la PC

si quieres leer A2 y promediar 100 valores hazlo una sola vez... no dos.