Leer en inglés

Compartir vía


SerialPort.DataReceived Evento

Definición

Indica que se recibieron datos a través de un puerto representado por el objeto SerialPort.

C#
public event System.IO.Ports.SerialDataReceivedEventHandler DataReceived;

Tipo de evento

Ejemplos

En este ejemplo se agrega a SerialDataReceivedEventHandlerDataReceived para leer todos los datos disponibles recibidos en el puerto COM1. Tenga en cuenta que para probar este código es necesario tener el hardware asociado a COM1 que enviará datos.

C#
using System;
using System.IO.Ports;

class PortDataReceived
{
    public static void Main()
    {
        SerialPort mySerialPort = new SerialPort("COM1");

        mySerialPort.BaudRate = 9600;
        mySerialPort.Parity = Parity.None;
        mySerialPort.StopBits = StopBits.One;
        mySerialPort.DataBits = 8;
        mySerialPort.Handshake = Handshake.None;
        mySerialPort.RtsEnable = true;

        mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);

        mySerialPort.Open();

        Console.WriteLine("Press any key to continue...");
        Console.WriteLine();
        Console.ReadKey();
        mySerialPort.Close();
    }

    private static void DataReceivedHandler(
                        object sender,
                        SerialDataReceivedEventArgs e)
    {
        SerialPort sp = (SerialPort)sender;
        string indata = sp.ReadExisting();
        Console.WriteLine("Data Received:");
        Console.Write(indata);
    }
}

Comentarios

Los eventos de datos pueden deberse a cualquiera de los elementos de la SerialData enumeración. Dado que el sistema operativo determina si se debe generar este evento o no, no se pueden notificar todos los errores de paridad.

El DataReceived evento también se genera si se recibe un carácter Eof, independientemente del número de bytes en el búfer de entrada interno y el valor de la ReceivedBytesThreshold propiedad .

PinChangedLos eventos , DataReceivedy ErrorReceived se pueden llamar de forma desordenada y puede haber un ligero retraso entre cuando la secuencia subyacente notifica el error y cuando se ejecuta el controlador de eventos. Solo se puede ejecutar un controlador de eventos a la vez.

No DataReceived se garantiza que el evento se genere para cada byte recibido. Use la BytesToRead propiedad para determinar la cantidad de datos que se van a leer en el búfer.

El DataReceived evento se genera en un subproceso secundario cuando se reciben datos del SerialPort objeto . Dado que este evento se genera en un subproceso secundario y no en el subproceso principal, al intentar modificar algunos elementos del subproceso principal, como elementos de la interfaz de usuario, podría generar una excepción de subproceso. Si es necesario modificar los elementos de la base de datos principal Form o Control, vuelva a enviar solicitudes de cambio mediante Invoke, lo que realizará el trabajo en el subproceso adecuado.

Para obtener más información sobre el manejo de eventos, consulte controlar y provocar eventos.

Se aplica a

Producto Versiones
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1