Hallo Daniela,
hier habe ich mal den Quelltext so abgeändert soweit ich deine Frage verstanden habe.
mfg brosal
using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using GHIElectronics.NETMF.FEZ;
using GHIElectronics.NETMF.Hardware;
using System.IO.Ports;
using System.Text;

namespace MFConsoleApplication1
{

public class Program
{

public static class GlobalVar
{
static int _globalValue;

public static int GlobalValue
{
get { return _globalValue; }
set { _globalValue = value; }
}
}

// SerialPort ist nur dann dauerhaft erreichbar wenn als >>>static Globale Variable<<< deklariert ist
// Das selbe gilt für den Buffer
// Wenn der Buffer und der Serialport lokal in einer Methode deklariert ist und die Methode verlassen wird
// wird der Serialport und der Buffer aus dem Speicher gelöscht und ist nicht mehr ansprechbar

static byte[] Buffer;
static SerialPort UART = new SerialPort("COM1", 115200);

public static void Main()
{

GlobalVar.GlobalValue = 0;

//Serialport
UART.Open();
//Delegat Interrupt Empfang setzen
UART.DataReceived += new SerialDataReceivedEventHandler(UART_DataReceived);

// the pin will generate interrupt on high and low edges
InterruptPort IntButton =
new InterruptPort((Cpu.Pin)FEZ_Pin.Interrupt.LDR, true,
Port.ResistorMode.PullUp,
Port.InterruptMode.InterruptEdgeLow);

// add an interrupt handler to the pin
IntButton.OnInterrupt += new NativeEventHandler(IntButton_OnInterrupt);


//do anything you like here
// Thread.Sleep(Timeout.Infinite);

AnalogIn voltagePort = new AnalogIn((AnalogIn.Pin)FEZ_Pin.AnalogIn.An3);
OutputPort lowPort = new OutputPort((Cpu.Pin)FEZ_Pin.Digital.An0, false);//???
OutputPort highPort = new OutputPort((Cpu.Pin)FEZ_Pin.Digital.An2, true);//???

const double maxVoltage = 3.3;
const int maxAdcValue = 1023;


InterruptPort RX =
new InterruptPort((Cpu.Pin)FEZ_Pin.Interrupt.Di0, true,
Port.ResistorMode.PullUp,
Port.InterruptMode.InterruptEdgeLow);

RX.OnInterrupt += new NativeEventHandler(RX_OnInterrupt);


while (true)
{
double mess = 0;
int sample = 10000;
for (int i = 0; i <= (sample - 1); i++)
{
mess += (double)voltagePort.Read();
}
double valueRaw = mess / sample;
double valueVoltage = (valueRaw * maxVoltage) / maxAdcValue;
double valuePercent = (valueVoltage / maxVoltage) * 100;

Debug.Print("Voltage: " + valueVoltage + "V");
Debug.Print("Percent: " + valuePercent + "%");

//Thread.Sleep(1000);

}
}
/// <summary>
/// Interrupt Routine DataReceived
/// </summary>
/// <param name="sender">SerialPort als Object</param>
/// <param name="e">Daten und </param>
static void UART_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
SerialPort SP = (SerialPort)sender; //Zeiger auf den Serialport der den IRQ gesendet hat setzten
//somit sind mit SP alle Methoden Eigenschaften und Ereignisse des UART erreichbar
Buffer = new byte[SP.BytesToRead];
SP.Read(Buffer, 0, SP.BytesToRead);
String IN = new string(UTF8Encoding.UTF8.GetChars(Buffer)); //Empfangene Zeichen in String wandeln
//Bricht ab bei einem nicht Druckbaren zeiche
if (IN == "1")
{
//Wandelt GlobalVar.GlobalValue zuerst in einen String toString() dann in Bytes
byte[] TempBuff = UTF8Encoding.UTF8.GetBytes(GlobalVar.GlobalValue.T oString());
SP.Write(TempBuff, 0, TempBuff.Length); //und Absenden
SP.DiscardInBuffer();// InBuffer löschen
}

}

static void IntButton_OnInterrupt(uint port, uint state,
DateTime time)
{
GlobalVar.GlobalValue++;
//string zaehler_string = GlobalVar.GlobalValue.ToString(); //Kannst du dir sparen
//Jede Variable kann man mit .toString() in einen String Wandeln >Achtung Klammern nicht vergessen<
Debug.Print(GlobalVar.GlobalValue.ToString());
}



static void RX_OnInterrupt(uint port, uint state,
DateTime time)
{
/*
* Du brauchst keinen extra interupt an der Com RX Leitung
* da der SerialPort DataReceived interrupt sowiso ausgelöst wird wenn
* Daten hereingekommen sind
*
SerialPort UART = new SerialPort("COM3", 115200);

// Initial Daten
int read_count = 0;
byte[] tx_data;
byte[] rx_data = new byte[10];
UART.ReadTimeout = 0;


read_count = UART.Read(rx_data, 0, rx_data.Length);
string empfangen = rx_data.ToString();
string zaehler_string = GlobalVar.GlobalValue.ToString();
if (empfangen == "1")
{
tx_data = Encoding.UTF8.GetBytes(zaehler_string);
UART.Write(tx_data, 0, tx_data.Length);
}
*/

}
}
}