SerialPort.Open Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Ouvre une nouvelle connexion de port série.
public:
void Open();
public void Open();
member this.Open : unit -> unit
Public Sub Open ()
Exceptions
L’accès est refusé au port.
-ou-
Le processus actuel, ou un autre processus sur le système, a déjà le port COM spécifié ouvert par une instance ou dans du SerialPort code non managé.
Une ou plusieurs des propriétés de cette instance ne sont pas valides. Par exemple, les Paritypropriétés ou Handshake les DataBitspropriétés ne sont pas des valeurs valides ; la BaudRate valeur est inférieure ou égale à zéro ; la ou WriteTimeout la ReadTimeout propriété est inférieure à zéro et n’est pas InfiniteTimeout.
Le nom du port ne commence pas par « COM ».
-ou-
Le type de fichier du port n’est pas pris en charge.
Le port est dans un état non valide.
-ou-
Une tentative de définition de l’état du port sous-jacent a échoué. Par exemple, les paramètres passés à partir de cet SerialPort objet n’étaient pas valides.
Le port spécifié sur l’instance actuelle du port SerialPort est déjà ouvert.
Exemples
L’exemple de code suivant illustre l’utilisation de la SerialPort classe pour permettre à deux utilisateurs de discuter à partir de deux ordinateurs distincts connectés par un câble de modem Null. Dans cet exemple, les utilisateurs sont invités à entrer les paramètres de port et un nom d’utilisateur avant de discuter. Cet exemple de code fait partie d’un exemple de code plus grand fourni pour la SerialPort classe.
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
Remarques
Une seule connexion ouverte peut exister par SerialPort objet.
La meilleure pratique pour toute application consiste à attendre un certain temps après l’appel de la Close méthode avant de tenter d’appeler la Open méthode, car le port peut ne pas être fermé instantanément.