Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. |
Übersetzung
Original
|
SerialPort.DataReceived-Ereignis
Stellt die Methode dar, die das Datenempfangs-Ereignis eines SerialPort-Objekts behandelt.
Assembly: System (in System.dll)
Serielle Empfangsereignisse können von jedem Element in der SerialData-Enumeration verursacht werden. Da das Betriebssystem bestimmt, ob dieses Ereignis ausgelöst wird, werden nicht alle Paritätsfehler gemeldet.
Die Ereignisse PinChanged, DataReceived und ErrorReceived können u. U. in der falschen Reihenfolge auftreten, und es kann zu einer geringfügigen Verzögerungen kommen, wenn der zugrunde liegende Stream den Fehler meldet und der Ereignishandler ausgeführt wird. Es kann immer nur jeweils ein Ereignishandler ausgeführt werden.
Das DataReceived-Ereignis wird nicht unbedingt für jedes empfangene Byte ausgelöst. Verwenden Sie die BytesToRead-Eigenschaft, um den Umfang der Daten im Puffer zu bestimmen, die noch gelesen werden müssen.
Das DataReceived-Ereignis wird in einem sekundären Thread ausgelöst, wenn Daten vom SerialPort-Objekt empfangen werden. Da dieses Ereignis in einem sekundären Thread und nicht im Hauptthread ausgelöst wird, kann der Versuch, Elemente wie UI-Elemente im Hauptthread zu ändern, eine Threadausnahme auslösen. Falls es erforderlich ist, Elemente im Haupt-Form oder im Haupt-Control zu ändern, senden Sie Änderungsanforderungen mithilfe von Invoke zurück, der den Vorgang dann auf dem richtigen Thread ausführt.
Weitere Informationen zum Behandeln von Ereignissen finden Sie unter Behandeln von Ereignissen.
In diesem Beispiel wird ein SerialDataReceivedEventHandler zu DataReceived hinzugefügt, um alle auf dem COM1-Port empfangenen verfügbaren Daten zu lesen.
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.DataReceived += new SerialDataReceivedEventHandler(DataReceviedHandler); mySerialPort.Open(); Console.WriteLine("Press any key to continue..."); Console.WriteLine(); Console.ReadKey(); mySerialPort.Close(); } private static void DataReceviedHandler( object sender, SerialDataReceivedEventArgs e) { SerialPort sp = (SerialPort)sender; string indata = sp.ReadExisting(); Console.WriteLine("Data Received:"); Console.Write(indata); } }
Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.