SerialPort.Open Méthode

Définition

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.

S’applique à