¿Por qué me aparece que mi puerto esta cerrado antes de enviar el mensaje desde C# visual studio?

Tengo un programa que debería enviarme una letra a un puerto cuando un nuevo documento se guarda en cierta carpeta, el problema es que antes de poder enviarme la letra me envía mensaje que el puerto se cerro, me podrían ayudar para saber donde estoy equivocada, mi código es el siguiente:

public partial class Form1 : Form
    {
        private delegate void DelegadoAcceso(string accion);
        private string strBufferIn;
        private string strBufferOut;
        public Form1()
        {
            InitializeComponent();
            FileSystemWatcher observador = new FileSystemWatcher(@"C:\Documents\Fld"); 
        observador.NotifyFilter = (
                NotifyFilters.LastAccess |
                NotifyFilters.LastWrite |
                NotifyFilters.FileName |
                NotifyFilters.DirectoryName); 
            observador.Created += AlCambiar;
           observador.Error += AlOcurrirUnError;
            observador.EnableRaisingEvents = true;
         }
        private void AlCambiar(object source, FileSystemEventArgs e) //static
        {
             if (InvokeRequired)
            {
                this.Invoke(new MethodInvoker(delegate
                {
                    try
                    {
                            SpPuertos.BaudRate = 9600; 
                            SpPuertos.DataBits = 8;
                            SpPuertos.Parity = Parity.None;
                            SpPuertos.StopBits = StopBits.One;
                            SpPuertos.Handshake = Handshake.None;
                            SpPuertos.PortName = "COM7";
                    }
                    catch (Exception exc)
                    {
                        MessageBox.Show(exc.Message.ToString());
                    }
            try
                    {
                        SpPuertos.DiscardOutBuffer();
                        strBufferOut = "NUEVO DOCUMENTO";
                        SpPuertos.Write(strBufferOut);
                    }
                    catch (Exception exc)
                    {
                        MessageBox.Show(exc.Message.ToString());
                    }
                }));
            }
        }
        private static void AlOcurrirUnError(object source, ErrorEventArgs e)
        {
             MessageBox.Show("Error: " + e.GetException().Message);
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            strBufferIn = "";
            strBufferOut = "";
        }
    }

Seria genial si me pudieran ayudar.

Añade tu respuesta

Haz clic para o