Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.
SerialPort-Klasse
.NET Framework (current version)
Veröffentlicht: Oktober 2016
Stellt einen seriellen Anschluss (als entsprechende Ressource) dar.
Um den .NET Framework-Quellcode für diesen Typ zu durchsuchen, finden Sie unter der Reference Source .
Namespace:
System.IO.Ports Assembly:
System (in System.dll)
public class SerialPort : Component
Name Beschreibung SerialPort() Initialisiert eine neue Instanz der SerialPort -Klasse.
SerialPort(IContainer) Initialisiert eine neue Instanz der SerialPort -Klasse mit dem angegebenen IContainer -Objekt.
SerialPort(String) Initialisiert eine neue Instanz der SerialPort -Klasse unter Verwendung des angegebenen Anschlussnamens.
SerialPort(String, Int32) Initialisiert eine neue Instanz der SerialPort -Klasse unter Verwendung des angegebenen Anschlussnamens und der Baudrate.
SerialPort(String, Int32, Parity) Initialisiert eine neue Instanz der SerialPort -Klasse mit dem angegebenen Anschlussnamen, der Baudrate und dem Paritätsbit.
SerialPort(String, Int32, Parity, Int32) Initialisiert eine neue Instanz der SerialPort -Klasse mit dem angegebenen Anschlussnamen, der Baudrate, dem Paritätsbit und Datenbits.
SerialPort(String, Int32, Parity, Int32, StopBits) Initialisiert eine neue Instanz der SerialPort -Klasse mit dem angegebenen Anschlussnamen, der Baudrate, dem Paritätsbit, den Datenbits und Stoppbits.
Name Beschreibung BaseStream Ruft das zugrunde liegende Stream -Objekt für ein SerialPort -Objekt ab.
BaudRate Ruft die serielle Baudrate ab oder legt diese fest.
BreakState Ruft den Zustand bei einer Signalunterbrechung ab oder legt diesen fest.
BytesToRead
Ruft die Anzahl der Datenbytes im Empfangspuffer ab.
BytesToWrite
Ruft die Anzahl der Datenbytes ab, die sich im Sendepuffer befinden.
CanRaiseEvents Ruft einen Wert, der angibt, ob die Komponente ein Ereignis auslösen kann. (Geerbt von „Component “.)
CDHolding
Ruft den Zustand des "Carrier Detect"-Eingangs ab.
Container CtsHolding
Ruft den Zustand des "Clear-to-Send"-Eingangs ab.
DataBits Ruft die Standardlänge der Datenbits pro Byte ab oder legt diese fest.
DesignMode Ruft einen Wert, der angibt, ob die Component befindet sich derzeit im Entwurfsmodus befindet. (Geerbt von „Component “.)
DiscardNull Ruft einen Wert ab, der angibt, ob NULL-Bytes bei der Übertragung zwischen dem Anschluss und dem Empfangspuffer ignoriert werden, oder legt diesen fest.
DsrHolding Ruft den Zustand des DSR (Data Set Ready)-Signals ab.
DtrEnable Ruft einen Wert ab, der das Data Terminal Ready (DTR)-Signal während einer seriellen Kommunikation aktiviert, oder legt diesen fest.
Encoding Ruft die Bytecodierung für die Konvertierung von Text vor und nach der Übertragung ab oder legt diese fest.
Events Ruft die Liste der Ereignishandler, die mit dieser verknüpft sind Component . (Geerbt von „Component “.)
Handshake Ruft das Handshakeprotokoll für die Datenübertragung an seriellen Anschlüssen anhand eines Werts von Handshake ab oder legt dieses fest.
IsOpen Ruft einen Wert ab, der den offenen oder geschlossenen Status des SerialPort -Objekts angibt.
NewLine Ruft den Wert ab, mit dem das Ende eines Aufrufs der ReadLine -Methode und der WriteLine -Methode interpretiert wird, oder legt diesen fest.
Parity Ruft das Paritätsprüfungsprotokoll ab oder legt dieses fest.
ParityReplace Ruft das Byte ab, das ungültige Bytes in einem Datenstream ersetzt, wenn ein Paritätsfehler auftritt, oder legt dieses fest.
PortName Ruft den Anschluss für die Kommunikation ab oder legt diesen fest, einschließlich aller verfügbaren COM-Anschlüsse, aber nicht beschränkt auf diese.
ReadBufferSize Ruft die Größe des SerialPort -Eingabepuffers ab oder legt diese fest.
ReadTimeout Ruft die Anzahl der Millisekunden ab, bevor ein Timeout auftritt, wenn ein Lesevorgang nicht beendet wird, oder legt diese fest.
ReceivedBytesThreshold Ruft die Anzahl von Bytes im internen Eingabepuffer ab, bevor ein DataReceived -Ereignis auftritt, oder legt diese fest.
RtsEnable Ruft einen Wert ab, der angibt, ob das Request to Send (RTS)-Signal während der seriellen Kommunikation aktiviert ist, oder legt diesen fest.
Site StopBits Ruft die Standardanzahl von Stoppbits pro Byte ab oder legt diese fest.
WriteBufferSize Ruft die Größe des Ausgabepuffers des seriellen Anschlusses ab oder legt diese fest.
WriteTimeout Ruft die Anzahl der Millisekunden ab, bevor ein Timeout auftritt, wenn ein Schreibvorgang nicht beendet wird, oder legt diese fest.
Name Beschreibung Close() Schließt die Anschlussverbindung, legt die IsOpen -Eigenschaft auf false fest und löscht das interne Stream -Objekt.
CreateObjRef(Type) Erstellt ein Objekt, das alle relevanten Informationen, die zum Generieren eines Proxys für die Kommunikation mit einem Remoteobjekt verwendet die enthält. (Geerbt von „MarshalByRefObject “.)
DiscardInBuffer() Verwirft Daten aus dem Empfangspuffer des seriellen Treibers.
DiscardOutBuffer() Verwirft Daten aus dem Übertragungspuffer des seriellen Treibers.
Dispose() Dispose(Boolean) Gibt die von SerialPort verwendeten nicht verwalteten Ressourcen und optional die verwalteten Ressourcen frei. (Überschreibt Component. Dispose(Boolean) .)
Equals(Object) Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist. (Geerbt von „Object “.)
Finalize() Gibt nicht verwaltete Ressourcen frei und führt andere Bereinigungsvorgänge durch, bevor die Component durch die Garbage Collection wieder zugänglich gemacht wird. (Geerbt von „Component “.)
GetHashCode() Fungiert als die Standardhashfunktion. (Geerbt von „Object “.)
GetLifetimeService() Ruft das Dienstobjekt für aktuellen Lebensdauer, das steuert, die lebensdauerrichtlinie für diese Instanz ab. (Geerbt von „MarshalByRefObject “.)
GetPortNames() Ruft ein Array der seriellen Anschlussnamen für den aktuellen Computer ab.
GetService(Type) Gibt ein Objekt zurück, das einen von der Component oder von deren Container bereitgestellten Dienst darstellt. (Geerbt von „Component “.)
GetType() Ruft den Type der aktuellen Instanz ab. (Geerbt von „Object “.)
InitializeLifetimeService() Ruft ein Lebensdauerdienstobjekt zur Steuerung der Lebensdauerrichtlinie für diese Instanz ab. (Geerbt von „MarshalByRefObject “.)
MemberwiseClone() Erstellt eine flache Kopie des aktuellen Object . (Geerbt von „Object “.)
MemberwiseClone(Boolean) Open() Öffnet eine neue serielle Anschlussverbindung.
Read(Byte[], Int32, Int32) Liest eine Anzahl von Bytes aus dem SerialPort -Eingabepuffer und schreibt diese Bytes am angegebenen Offset in ein Bytearray.
Read(Char[], Int32, Int32) Liest eine Anzahl von Zeichen aus dem SerialPort -Eingabepuffer und schreibt diese am angegebenen Offset in ein Zeichenarray.
ReadByte() Liest synchron ein Byte aus dem SerialPort -Eingabepuffer.
ReadChar() Liest synchron ein Zeichen aus dem SerialPort -Eingabepuffer.
ReadExisting() Liest alle sofort verfügbaren Bytes auf Grundlage der Codierung sowohl im Stream als auch im Eingabepuffer des SerialPort -Objekts.
ReadLine() Liest bis zum NewLine -Wert im Eingabepuffer.
ReadTo(String) Liest eine Zeichenfolge bis zum angegebenen value im Eingabepuffer.
ToString() Gibt eine String mit dem Namen der Component , sofern vorhanden. Diese Methode darf nicht überschrieben werden. (Geerbt von „Component “.)
Write(Byte[], Int32, Int32) Schreibt eine angegebene Anzahl von Bytes unter Verwendung von Daten aus einem Puffer in den seriellen Anschluss.
Write(Char[], Int32, Int32) Schreibt eine angegebene Anzahl von Zeichen unter Verwendung von Daten aus einem Puffer in den seriellen Anschluss.
Write(String) Schreibt die angegebene Zeichenfolge in den seriellen Anschluss.
WriteLine(String) Schreibt die angegebene Zeichenfolge und den NewLine -Wert in den Ausgabepuffer.
Name Beschreibung DataReceived Gibt an, dass Daten über einen Port empfangen wurden, der durch das SerialPort -Objekt dargestellt wird.
Disposed Tritt auf, wenn die Komponente, durch einen Aufruf freigegeben wird der Dispose Methode. (Geerbt von „Component “.)
ErrorReceived Gibt an, dass ein Fehler bei einem Port aufgetreten ist, der durch ein SerialPort -Objekt dargestellt wird.
PinChanged Gibt an, dass ein Nicht-Datensignalereignis an dem Port aufgetreten ist, der durch das SerialPort -Objekt dargestellt wird.
Hinweis Die .NET Framework-Quellcodes für diesen Typ finden Sie unter der Reference Source . Sie können den Quellcode online Durchsuchen, Referenz für die Offlineanzeige herunterladen und schrittweise durchlaufen (inklusive Patches und Updates) während des Debuggens; see instructions .
Verwenden Sie diese Klasse, um eine Ressource seriellen Anschluss zu steuern. Diese Klasse stellt synchrone und ereignisgesteuerte e/a-Zugriff auf PIN-und Unterbrechungszustände und den Zugriff auf Eigenschaften des seriellen Treibers. Darüber hinaus kann die Funktionen dieser Klasse umschlossen werden, in einer internen Stream Objekt über die BaseStream -Eigenschaft, und übergeben Sie Klassen, die Streams umschließen oder verwenden.
Die SerialPort Klasse unterstützt die folgenden Codierungen: ASCIIEncoding , UTF8Encoding , UnicodeEncoding , UTF32Encoding , und jede Codierung in "mscorlib.dll", bei denen die Codepage ist kleiner als 50000 oder die Codepage 54936, definiert. Können Sie alternative Codierungen, aber verwenden Sie die ReadByte oder Write Methode und die Codierung selbst durchführen.
Verwenden Sie die GetPortNames Methode, um die gültige Ports für den aktuellen Computer abzurufen.
Wenn ein SerialPort Objekt während eines Lesevorgangs blockiert wird, brechen Sie den Thread nicht ab. Stattdessen entweder die Basis schließen streamen oder löschen Sie die SerialPort Objekt.
Das folgende Codebeispiel veranschaulicht die Verwendung der SerialPort -Klasse ermöglicht zwei Benutzern auf zwei verschiedenen Computern, die durch ein null-Modem-Kabel verbunden zu chatten. In diesem Beispiel werden die Benutzer für die Porteinstellungen und einen Benutzernamen vor chatten aufgefordert. Beide Computer müssen erzielen sämtliche Funktionen der in diesem Beispiel wird das Programm ausgeführt werden.
// Use this code inside a project created with the Visual C# > Windows Desktop > Console Application template.
// Replace the code in Program.cs with this code.
using System;
using System.IO.Ports;
using System.Threading;
public class PortChat
{
static bool _continue;
static SerialPort _serialPort;
public static void Main()
{
string name;
string message;
StringComparer stringComparer = StringComparer.OrdinalIgnoreCase;
Thread readThread = new Thread(Read);
// Create a new SerialPort object with default settings.
_serialPort = new SerialPort();
// Allow the user to set the appropriate properties.
_serialPort.PortName = SetPortName(_serialPort.PortName);
_serialPort.BaudRate = SetPortBaudRate(_serialPort.BaudRate);
_serialPort.Parity = SetPortParity(_serialPort.Parity);
_serialPort.DataBits = SetPortDataBits(_serialPort.DataBits);
_serialPort.StopBits = SetPortStopBits(_serialPort.StopBits);
_serialPort.Handshake = SetPortHandshake(_serialPort.Handshake);
// Set the read/write timeouts
_serialPort.ReadTimeout = 500;
_serialPort.WriteTimeout = 500;
_serialPort.Open();
_continue = true ;
readThread.Start();
Console.Write("Name: " );
name = Console.ReadLine();
Console.WriteLine("Type QUIT to exit" );
while (_continue)
{
message = Console.ReadLine();
if (stringComparer.Equals("quit" , message))
{
_continue = false ;
}
else
{
_serialPort.WriteLine(
String.Format("<{0}>: {1}" , name, message));
}
}
readThread.Join();
_serialPort.Close();
}
public static void Read()
{
while (_continue)
{
try
{
string message = _serialPort.ReadLine();
Console.WriteLine(message);
}
catch (TimeoutException) { }
}
}
// Display Port values and prompt user to enter a port.
public static string SetPortName(string defaultPortName)
{
string portName;
Console.WriteLine("Available Ports:" );
foreach (string s in SerialPort.GetPortNames())
{
Console.WriteLine(" {0}" , s);
}
Console.Write("Enter COM port value (Default: {0}): " , defaultPortName);
portName = Console.ReadLine();
if (portName == "" || !(portName.ToLower()).StartsWith("com" ))
{
portName = defaultPortName;
}
return portName;
}
// Display BaudRate values and prompt user to enter a value.
public static int SetPortBaudRate(int defaultPortBaudRate)
{
string baudRate;
Console.Write("Baud Rate(default:{0}): " , defaultPortBaudRate);
baudRate = Console.ReadLine();
if (baudRate == "" )
{
baudRate = defaultPortBaudRate.ToString();
}
return int .Parse(baudRate);
}
// Display PortParity values and prompt user to enter a value.
public static Parity SetPortParity(Parity defaultPortParity)
{
string parity;
Console.WriteLine("Available Parity options:" );
foreach (string s in Enum.GetNames(typeof (Parity)))
{
Console.WriteLine(" {0}" , s);
}
Console.Write("Enter Parity value (Default: {0}):" , defaultPortParity.ToString(), true );
parity = Console.ReadLine();
if (parity == "" )
{
parity = defaultPortParity.ToString();
}
return (Parity)Enum.Parse(typeof (Parity), parity, true );
}
// Display DataBits values and prompt user to enter a value.
public static int SetPortDataBits(int defaultPortDataBits)
{
string dataBits;
Console.Write("Enter DataBits value (Default: {0}): " , defaultPortDataBits);
dataBits = Console.ReadLine();
if (dataBits == "" )
{
dataBits = defaultPortDataBits.ToString();
}
return int .Parse(dataBits.ToUpperInvariant());
}
// Display StopBits values and prompt user to enter a value.
public static StopBits SetPortStopBits(StopBits defaultPortStopBits)
{
string stopBits;
Console.WriteLine("Available StopBits options:" );
foreach (string s in Enum.GetNames(typeof (StopBits)))
{
Console.WriteLine(" {0}" , s);
}
Console.Write("Enter StopBits value (None is not supported and \n" +
"raises an ArgumentOutOfRangeException. \n (Default: {0}):" , defaultPortStopBits.ToString());
stopBits = Console.ReadLine();
if (stopBits == "" )
{
stopBits = defaultPortStopBits.ToString();
}
return (StopBits)Enum.Parse(typeof (StopBits), stopBits, true );
}
public static Handshake SetPortHandshake(Handshake defaultPortHandshake)
{
string handshake;
Console.WriteLine("Available Handshake options:" );
foreach (string s in Enum.GetNames(typeof (Handshake)))
{
Console.WriteLine(" {0}" , s);
}
Console.Write("Enter Handshake value (Default: {0}):" , defaultPortHandshake.ToString());
handshake = Console.ReadLine();
if (handshake == "" )
{
handshake = defaultPortHandshake.ToString();
}
return (Handshake)Enum.Parse(typeof (Handshake), handshake, true );
}
}
SecurityPermission for the ability to call unmanaged code. Associated enumeration: F:System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode
.NET Framework
Verfügbar seit 2.0
Alle öffentlichen statischen Member (
Shared
in Visual Basic) dieses Typs sind threadsicher. Die Threadsicherheit für Instanzmember ist nicht garantiert.
Zurück zum Anfang