Lingua

SerialPort.Open Metodo

Definizione

Apre una nuova connessione alla porta seriale.

public:
 void Open();
public void Open();
member this.Open : unit -> unit
Public Sub Open ()

Eccezioni

L'accesso viene negato alla porta.

oppure

Il processo corrente, o un altro processo nel sistema, dispone già della porta COM specificata aperta da un'istanza SerialPort o in codice non gestito.

Una o più proprietà per questa istanza non sono valide. Ad esempio, le Parityproprietà , DataBitso Handshake non sono valori validi; BaudRate è minore o uguale a zero; la ReadTimeout proprietà o WriteTimeout è minore di zero e non InfiniteTimeoutè .

Il nome della porta non inizia con "COM".

oppure

Il tipo di file della porta non è supportato.

La porta è in uno stato non valido.

oppure

Tentativo di impostare lo stato della porta sottostante non riuscita. Ad esempio, i parametri passati da questo SerialPort oggetto non sono validi.

La porta specificata nell'istanza corrente di SerialPort è già aperta.

Esempio

Nell'esempio di codice seguente viene illustrato l'uso della SerialPort classe per consentire a due utenti di chattare da due computer separati collegati da un cavo modem Null. In questo esempio, agli utenti vengono richieste le impostazioni della porta e un nome utente prima della chat. Questo esempio di codice fa parte di un esempio di codice più ampio fornito per 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

Commenti

È possibile che esista una sola connessione aperta per SerialPort oggetto.

La procedura consigliata per qualsiasi applicazione consiste nell'attendere un certo periodo di tempo dopo aver chiamato il Close metodo prima di tentare di chiamare il Open metodo, perché la porta potrebbe non essere chiusa immediatamente.

Si applica a