SerialPort.Open Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Öffnet eine neue serielle Anschlussverbindung.
public:
void Open();
public void Open();
member this.Open : unit -> unit
Public Sub Open ()
Ausnahmen
Der Zugriff wird dem Port verweigert.
-oder-
Der aktuelle Prozess oder ein anderer Prozess im System hat bereits den angegebenen COM-Port entweder durch eine SerialPort Instanz oder in nicht verwaltetem Code geöffnet.
Mindestens eine der Eigenschaften für diese Instanz ist ungültig. Beispielsweise sind die , oder Eigenschaften ungültige Werte; dies ParityDataBits ist kleiner oder gleich Null; die Handshake Eigenschaft BaudRate ist kleiner als null und ist nicht ReadTimeout.WriteTimeoutInfiniteTimeout
Der Portname beginnt nicht mit "COM".
-oder-
Der Dateityp des Ports wird nicht unterstützt.
Der Port befindet sich in einem ungültigen Zustand.
-oder-
Fehler beim Versuch, den Status des zugrunde liegenden Ports festzulegen. Die parameter, die von diesem SerialPort Objekt übergeben wurden, waren beispielsweise ungültig.
Der angegebene Port für die aktuelle Instanz der Datei SerialPort ist bereits geöffnet.
Beispiele
Im folgenden Codebeispiel wird die Verwendung der SerialPort Klasse veranschaulicht, um zwei Benutzern das Chatten von zwei separaten Computern zu ermöglichen, die über ein NULL-Modemkabel verbunden sind. In diesem Beispiel werden die Benutzer vor dem Chatten zur Eingabe der Porteinstellungen und eines Benutzernamens aufgefordert. Dieses Codebeispiel ist Teil eines größeren Codebeispiels, das für die SerialPort Klasse bereitgestellt wird.
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) { }
}
}
Public Shared Sub Main()
Dim name As String
Dim message As String
Dim stringComparer__1 As StringComparer = StringComparer.OrdinalIgnoreCase
Dim readThread As New Thread(AddressOf 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__1.Equals("quit", message) Then
_continue = False
Else
_serialPort.WriteLine([String].Format("<{0}>: {1}", name, message))
End If
End While
readThread.Join()
_serialPort.Close()
End Sub
Public Shared Sub Read()
While _continue
Try
Dim message As String = _serialPort.ReadLine()
Console.WriteLine(message)
Catch generatedExceptionName As TimeoutException
End Try
End While
End Sub
Hinweise
Pro Objekt kann nur eine geöffnete Verbindung vorhanden sein SerialPort .
Die bewährte Methode für jede Anwendung besteht darin, nach dem Aufrufen der Close Methode einige Zeit zu warten, bevor Sie versuchen, die Open Methode aufzurufen, da der Port möglicherweise nicht sofort geschlossen wird.