SerialPort Klas

Definitie

Vertegenwoordigt een seriële poortresource.

public ref class SerialPort : System::ComponentModel::Component
public class SerialPort : System.ComponentModel.Component
type SerialPort = class
    inherit Component
Public Class SerialPort
Inherits Component
Overname

Voorbeelden

Het volgende codevoorbeeld laat het gebruik van de SerialPort klasse zien, zodat twee gebruikers kunnen chatten vanaf twee afzonderlijke computers die zijn verbonden met een null-modemkabel. In dit voorbeeld worden de gebruikers gevraagd om de poortinstellingen en een gebruikersnaam voordat ze chatten. Beide computers moeten het programma uitvoeren om volledige functionaliteit van dit voorbeeld te bereiken.

// 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);
    }
}
' Use this code inside a project created with the Visual Basic > Windows Desktop > Console Application template.
' Replace the default code in Module1.vb with this code. Then right click the project in Solution Explorer,
' select Properties, and set the Startup Object to PortChat.

Imports System.IO.Ports
Imports System.Threading

Public Class PortChat
    Shared _continue As Boolean
    Shared _serialPort As SerialPort

    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

    ' Display Port values and prompt user to enter a port.
    Public Shared Function SetPortName(defaultPortName As String) As String
        Dim portName As String

        Console.WriteLine("Available Ports:")
        For Each s As String In SerialPort.GetPortNames()
            Console.WriteLine("   {0}", s)
        Next

        Console.Write("Enter COM port value (Default: {0}): ", defaultPortName)
        portName = Console.ReadLine()

        If portName = "" OrElse Not (portName.ToLower()).StartsWith("com") Then
            portName = defaultPortName
        End If
        Return portName
    End Function
    ' Display BaudRate values and prompt user to enter a value.
    Public Shared Function SetPortBaudRate(defaultPortBaudRate As Integer) As Integer
        Dim baudRate As String

        Console.Write("Baud Rate(default:{0}): ", defaultPortBaudRate)
        baudRate = Console.ReadLine()

        If baudRate = "" Then
            baudRate = defaultPortBaudRate.ToString()
        End If

        Return Integer.Parse(baudRate)
    End Function

    ' Display PortParity values and prompt user to enter a value.
    Public Shared Function SetPortParity(defaultPortParity As Parity) As Parity
        Dim parity As String

        Console.WriteLine("Available Parity options:")
        For Each s As String In [Enum].GetNames(GetType(Parity))
            Console.WriteLine("   {0}", s)
        Next

        Console.Write("Enter Parity value (Default: {0}):", defaultPortParity.ToString(), True)
        parity = Console.ReadLine()

        If parity = "" Then
            parity = defaultPortParity.ToString()
        End If

        Return CType([Enum].Parse(GetType(Parity), parity, True), Parity)
    End Function
    ' Display DataBits values and prompt user to enter a value.
    Public Shared Function SetPortDataBits(defaultPortDataBits As Integer) As Integer
        Dim dataBits As String

        Console.Write("Enter DataBits value (Default: {0}): ", defaultPortDataBits)
        dataBits = Console.ReadLine()

        If dataBits = "" Then
            dataBits = defaultPortDataBits.ToString()
        End If

        Return Integer.Parse(dataBits.ToUpperInvariant())
    End Function
    ' Display StopBits values and prompt user to enter a value.

    Public Shared Function SetPortStopBits(defaultPortStopBits As StopBits) As StopBits
        Dim stopBits As String

        Console.WriteLine("Available StopBits options:")
        For Each s As String In [Enum].GetNames(GetType(StopBits))
            Console.WriteLine("   {0}", s)
        Next

        Console.Write("Enter StopBits value (None is not supported and " &
                      vbLf & "raises an ArgumentOutOfRangeException. " &
                      vbLf & " (Default: {0}):", defaultPortStopBits.ToString())
        stopBits = Console.ReadLine()

        If stopBits = "" Then
            stopBits = defaultPortStopBits.ToString()
        End If

        Return CType([Enum].Parse(GetType(StopBits), stopBits, True), StopBits)
    End Function
    Public Shared Function SetPortHandshake(defaultPortHandshake As Handshake) As Handshake
        Dim handshake As String

        Console.WriteLine("Available Handshake options:")
        For Each s As String In [Enum].GetNames(GetType(Handshake))
            Console.WriteLine("   {0}", s)
        Next

        Console.Write("Enter Handshake value (Default: {0}):", defaultPortHandshake.ToString())
        handshake = Console.ReadLine()

        If handshake = "" Then
            handshake = defaultPortHandshake.ToString()
        End If

        Return CType([Enum].Parse(GetType(Handshake), handshake, True), Handshake)
    End Function
End Class

Opmerkingen

Gebruik deze klasse om een bron voor seriële poortbestanden te beheren. Deze klasse biedt synchrone en gebeurtenisgestuurde I/O, toegang tot statussen voor vastmaken en verbreken en toegang tot seriële stuurprogramma-eigenschappen. Daarnaast kan de functionaliteit van deze klasse worden verpakt in een intern Stream object, toegankelijk via de BaseStream eigenschap en worden doorgegeven aan klassen die stromen verpakken of gebruiken.

De SerialPort klasse ondersteunt de volgende coderingen: ASCIIEncoding, UTF8Encoding, UnicodeEncoding, en UTF32Encodingalle coderingen die zijn gedefinieerd in mscorlib.dll waarbij de codepagina kleiner is dan 50000 of de codepagina 54936 is. U kunt alternatieve coderingen gebruiken, maar u moet de ReadByte of Write methode gebruiken en de codering zelf uitvoeren.

U gebruikt de GetPortNames methode om de geldige poorten voor de huidige computer op te halen.

Als een SerialPort object wordt geblokkeerd tijdens een leesbewerking, moet u de thread niet afbreken. Sluit in plaats daarvan de basisstroom of verwijder het SerialPort object.

Constructors

Name Description
SerialPort()

Initialiseert een nieuw exemplaar van de SerialPort klasse.

SerialPort(IContainer)

Initialiseert een nieuw exemplaar van de SerialPort klasse met behulp van het opgegeven IContainer object.

SerialPort(String, Int32, Parity, Int32, StopBits)

Initialiseert een nieuw exemplaar van de SerialPort klasse met behulp van de opgegeven poortnaam, baudrate, pariteitsbit, gegevensbits en stop-bit.

SerialPort(String, Int32, Parity, Int32)

Initialiseert een nieuw exemplaar van de SerialPort klasse met behulp van de opgegeven poortnaam, baudrate, pariteitsbit en gegevensbits.

SerialPort(String, Int32, Parity)

Initialiseert een nieuw exemplaar van de SerialPort klasse met behulp van de opgegeven poortnaam, baudrate en pariteitsbit.

SerialPort(String, Int32)

Initialiseert een nieuw exemplaar van de SerialPort klasse met behulp van de opgegeven poortnaam en baudrate.

SerialPort(String)

Initialiseert een nieuw exemplaar van de SerialPort klasse met behulp van de opgegeven poortnaam.

Velden

Name Description
InfiniteTimeout

Geeft aan dat er geen time-out moet optreden.

Eigenschappen

Name Description
BaseStream

Hiermee haalt u het onderliggende Stream object voor een SerialPort object op.

BaudRate

Hiermee haalt u de seriële baudrate op of stelt u deze in.

BreakState

Hiermee haalt of stelt u de status van het onderbrekingssignaal in.

BytesToRead

Hiermee haalt u het aantal bytes aan gegevens op in de ontvangstbuffer.

BytesToWrite

Hiermee haalt u het aantal bytes aan gegevens op in de verzendbuffer.

CanRaiseEvents

Hiermee wordt een waarde opgehaald die aangeeft of het onderdeel een gebeurtenis kan genereren.

(Overgenomen van Component)
CDHolding

Hiermee haalt u de status van de Carrier Detect-regel voor de poort op.

Container

Hiermee haalt u het IContainer bestand op dat de Component.

(Overgenomen van Component)
CtsHolding

Hiermee haalt u de status van de regel Clear-to-Send op.

DataBits

Hiermee wordt de standaardlengte van gegevensbits per byte opgehaald of ingesteld.

DesignMode

Hiermee wordt een waarde opgehaald die aangeeft of de Component momenteel in de ontwerpmodus is.

(Overgenomen van Component)
DiscardNull

Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of null-bytes worden genegeerd wanneer deze wordt verzonden tussen de poort en de ontvangstbuffer.

DsrHolding

Hiermee haalt u de status van het DSR-signaal (Data Set Ready) op.

DtrEnable

Hiermee wordt een waarde opgehaald of ingesteld waarmee het DTR-signaal (Data Terminal Ready) tijdens seriële communicatie wordt ingeschakeld.

Encoding

Hiermee wordt de bytecodering opgehaald of ingesteld voor de conversie van tekst vóór en na verzending.

Events

Hiermee haalt u de lijst met gebeurtenis-handlers op die aan dit Componentbestand zijn gekoppeld.

(Overgenomen van Component)
Handshake

Hiermee wordt het handshakingprotocol opgehaald of ingesteld voor het verzenden van gegevens via seriële poort met behulp van een waarde van Handshake.

IsOpen

Hiermee wordt een waarde opgehaald die de geopende of gesloten status van het SerialPort object aangeeft.

NewLine

Hiermee wordt de waarde opgehaald of ingesteld die wordt gebruikt om het einde van een aanroep naar de ReadLine() en WriteLine(String) methoden te interpreteren.

Parity

Hiermee wordt het protocol voor pariteitscontrole ophaalt of ingesteld.

ParityReplace

Hiermee wordt de byte opgehaald of ingesteld die ongeldige bytes in een gegevensstroom vervangt wanneer er een pariteitsfout optreedt.

PortName

Hiermee haalt u de poort voor communicatie op, inclusief maar niet beperkt tot alle beschikbare COM-poorten.

ReadBufferSize

Hiermee haalt u de grootte van de invoerbuffer op of stelt u deze SerialPort in.

ReadTimeout

Hiermee wordt het aantal milliseconden opgehaald of ingesteld voordat er een time-out optreedt wanneer een leesbewerking niet is voltooid.

ReceivedBytesThreshold

Hiermee haalt of stelt u het aantal bytes in de interne invoerbuffer op voordat een DataReceived gebeurtenis plaatsvindt.

RtsEnable

Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of het RTS-signaal (Request to Send) is ingeschakeld tijdens seriële communicatie.

Site

Haalt of stelt de ISite van de Component.

(Overgenomen van Component)
StopBits

Hiermee haalt u het standaardaantal stopbits per byte op of stelt u deze in.

WriteBufferSize

Hiermee haalt u de grootte van de uitvoerbuffer van de seriële poort op of stelt u deze in.

WriteTimeout

Hiermee wordt het aantal milliseconden opgehaald of ingesteld voordat er een time-out optreedt wanneer een schrijfbewerking niet is voltooid.

Methoden

Name Description
Close()

Sluit de poortverbinding, stelt de IsOpen eigenschap falsein op en verwijdert het interne Stream object.

CreateObjRef(Type)

Hiermee maakt u een object dat alle relevante informatie bevat die nodig is om een proxy te genereren die wordt gebruikt om te communiceren met een extern object.

(Overgenomen van MarshalByRefObject)
DiscardInBuffer()

Hiermee worden gegevens verwijderd uit de ontvangstbuffer van het seriële stuurprogramma.

DiscardOutBuffer()

Hiermee worden gegevens verwijderd uit de verzendbuffer van het seriële stuurprogramma.

Dispose()

Alle resources die worden gebruikt door de Component.

(Overgenomen van Component)
Dispose(Boolean)

Publiceert de niet-beheerde resources die worden gebruikt door de SerialPort beheerde resources en brengt eventueel de beheerde resources vrij.

Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetLifetimeService()

Hiermee haalt u het huidige levensduurserviceobject op waarmee het levensduurbeleid voor dit exemplaar wordt beheerd.

(Overgenomen van MarshalByRefObject)
GetPortNames()

Hiermee haalt u een matrix met seriële poortnamen op voor de huidige computer.

GetService(Type)

Hiermee wordt een object geretourneerd dat een service vertegenwoordigt die wordt geleverd door of door de Component service Container.

(Overgenomen van Component)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
InitializeLifetimeService()

Hiermee haalt u een levensduurserviceobject op om het levensduurbeleid voor dit exemplaar te beheren.

(Overgenomen van MarshalByRefObject)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
MemberwiseClone(Boolean)

Hiermee maakt u een ondiepe kopie van het huidige MarshalByRefObject object.

(Overgenomen van MarshalByRefObject)
Open()

Hiermee opent u een nieuwe seriële poortverbinding.

Read(Byte[], Int32, Int32)

Leest een aantal bytes uit de SerialPort invoerbuffer en schrijft deze bytes naar een bytematrix op de opgegeven offset.

Read(Char[], Int32, Int32)

Leest een aantal tekens uit de SerialPort invoerbuffer en schrijft deze in een matrix met tekens op een bepaalde offset.

ReadByte()

Hiermee wordt één byte gelezen uit de SerialPort invoerbuffer.

ReadChar()

Leest synchroon één teken uit de SerialPort invoerbuffer.

ReadExisting()

Leest alle direct beschikbare bytes, op basis van de codering, in zowel de stroom als de invoerbuffer van het SerialPort object.

ReadLine()

Hiermee wordt de NewLine waarde in de invoerbuffer gelezen.

ReadTo(String)

Hiermee leest u een tekenreeks tot aan de opgegeven value in de invoerbuffer.

ToString()

Retourneert een String met de naam van de Component, indien van toepassing. Deze methode mag niet worden overschreven.

(Overgenomen van Component)
Write(Byte[], Int32, Int32)

Hiermee schrijft u een opgegeven aantal bytes naar de seriële poort met behulp van gegevens uit een buffer.

Write(Char[], Int32, Int32)

Schrijft een opgegeven aantal tekens naar de seriële poort met behulp van gegevens uit een buffer.

Write(String)

Hiermee schrijft u de opgegeven tekenreeks naar de seriële poort.

WriteLine(String)

Hiermee schrijft u de opgegeven tekenreeks en de NewLine waarde naar de uitvoerbuffer.

gebeurtenis

Name Description
DataReceived

Geeft aan dat gegevens zijn ontvangen via een poort die wordt vertegenwoordigd door het SerialPort object.

Disposed

Treedt op wanneer het onderdeel wordt verwijderd door een aanroep naar de Dispose() methode.

(Overgenomen van Component)
ErrorReceived

Geeft aan dat er een fout is opgetreden met een poort die wordt vertegenwoordigd door een SerialPort object.

PinChanged

Geeft aan dat er een niet-gegevenssignaalgebeurtenis is opgetreden op de poort die wordt vertegenwoordigd door het SerialPort object.

Van toepassing op