Freigeben über


SerialDevice Klasse

Definition

Stellt einen seriellen Port dar. Das -Objekt stellt Methoden und Eigenschaften bereit, die eine App zum Suchen und Interagieren mit seriellen Ports im System verwenden kann.

public ref class SerialDevice sealed : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class SerialDevice final : IClosable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class SerialDevice : System.IDisposable
Public NotInheritable Class SerialDevice
Implements IDisposable
Vererbung
Object Platform::Object IInspectable SerialDevice
Attribute
Implementiert

Windows-Anforderungen

Gerätefamilie
Windows 10 (eingeführt in 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (eingeführt in v1.0)

Beispiele

using System;
using Windows.Devices.Enumeration;
using Windows.Devices.SerialCommunication;
using Windows.Storage.Streams;

...

DeviceInformationCollection serialDeviceInfos = await DeviceInformation.FindAllAsync(SerialDevice.GetDeviceSelector());

foreach (DeviceInformation serialDeviceInfo in serialDeviceInfos)
{
    try
    {
        SerialDevice serialDevice = await SerialDevice.FromIdAsync(serialDeviceInfo.Id);

        if (serialDevice != null)
        {
            // Found a valid serial device.

            // Reading a byte from the serial device.
            DataReader dr = new DataReader(serialDevice.InputStream);
            int readByte = dr.ReadByte();

            // Writing a byte to the serial device.
            DataWriter dw = new DataWriter(serialDevice.OutputStream);
            dw.WriteByte(0x42);
        }
    }
    catch (Exception)
    {
        // Couldn't instantiate the device
    }
}

Hinweise

Die serielle Gerätefunktion ist erforderlich, serialCommunicationum die SerialDevice -Klasse zu verwenden. Weitere Informationen finden Sie unter Windows.Devices.SerialCommunication.

Erstellen eines SerialDevice-Objekts

  1. Generieren Sie eine AQS-Zeichenfolge (Advanced Query Syntax), die Suchkriterien für die Suche nach dem Gerät in der aufgezählten Gerätesammlung enthält. Wenn Sie über die Anbieter- und Produktbezeichner verfügen, rufen Sie GetDeviceSelectorFromUsbVidPid auf.
  2. Übergeben Sie die abgerufene Zeichenfolge an FindAllAsync. Der Aufruf ruft ein DeviceInformationCollection-Objekt ab.
  3. Schleife durch die Auflistung. Jede Iteration ruft ein DeviceInformation-Objekt ab.
  4. Rufen Sie den DeviceInformation.Id-Eigenschaftswert ab. Der Zeichenfolgenwert ist der Geräteschnittstellenpfad. (z. B \\?\usb#vid_03eb&pid_2157&mi_01#7&1435ec7f&0&0001#{86e0d1e0-8089-11d0-9ce4-08003e301f73}. ).
  5. Rufen Sie FromIdAsync auf, indem Sie die Geräteschnittstellenzeichenfolge übergeben und das SerialDevice Objekt abrufen. Wenn dadurch eine Ausnahme ausgelöst wird oder NULL zurückgegeben wird, ist dies wahrscheinlich:
    • Der Geräteschnittstellenpfad ist ungültig.
    • Der Geräteschnittstellenpfad stellt kein serielles Gerät wieder dar.
    • Der Anwendung fehlt die serialCommunication Funktion
    • Auf das serielle Gerät kann nicht zugegriffen werden. (siehe Windows.Devices.SerialCommunication)

Lesen und Schreiben von Daten

Anschließend können Sie das SerialDevice-Objekt verwenden, um aus dem seriellen Port zu lesen oder in den seriellen Port zu schreiben, indem Sie den Windows.Storage.Streams-Namespace verwenden.

  1. Rufen Sie einen Verweis auf den Eingabedatenstrom ab, indem Sie die SerialDevice.InputStream-Eigenschaft abrufen.
  2. Erstellen Sie ein DataReader-Objekt , indem Sie den Eingabedatenstrom im DataReader-Konstruktor angeben.
  3. Rufen Sie einen Verweis auf den Ausgabestream ab, indem Sie die SerialDevice.OutputStream-Eigenschaft abrufen.
  4. Erstellen Sie ein DataWriter-Objekt , indem Sie den Ausgabestream im DataWriter-Konstruktor angeben.

Eigenschaften

BaudRate

Ruft die Baudrate ab oder legt sie fest.

BreakSignalState

Ruft den Zustand bei einer Signalunterbrechung ab oder legt diesen fest.

BytesReceived

Stellt die Anzahl der Bytes dar, die vom letzten Lesevorgang des Eingabestreams empfangen wurden.

CarrierDetectState

Ruft den Zustand der CD-Zeile (Carrier Detect) ab.

ClearToSendState

Ruft den Zustand der CTS-Zeile (Clear-to-Send) ab.

DataBits

Die Anzahl der Datenbits in jedem Zeichenwert, der übertragen oder empfangen wird, und enthält keine Paritätsbits oder Stoppbits.

DataSetReadyState

Ruft den Zustand des DSR (Data Set Ready)-Signals ab.

Handshake

Ruft das Handshakingprotokoll für die Flusssteuerung ab oder legt es fest.

InputStream

Eingabedatenstrom, der die am seriellen Port empfangenen Daten enthält.

IsDataTerminalReadyEnabled

Ruft einen Wert ab, der das DTR-Signal (Data Terminal Ready) aktiviert, oder legt diesen fest.

IsRequestToSendEnabled

Ruft einen Wert ab, der das RTS-Signal (Request to Send) aktiviert, oder legt diesen fest.

OutputStream

Ruft einen Ausgabedatenstrom ab, in den die App Daten schreiben kann, die über den seriellen Port übertragen werden sollen.

Parity

Ruft das Paritätsbit für die Fehlerüberprüfung ab oder legt es fest.

PortName

Ruft den Portnamen für die serielle Kommunikation ab.

ReadTimeout

Ruft den Timeoutwert für einen Lesevorgang ab oder legt diese fest.

StopBits

Ruft die Standardanzahl von Stoppbits pro Byte ab oder legt diese fest.

UsbProductId

Ruft das Feld idProduct des USB-Gerätedeskriptors ab. Dieser Wert gibt den gerätespezifischen Produktbezeichner an und wird vom Hersteller zugewiesen.

UsbVendorId

Ruft das Feld idVendor des USB-Gerätedeskriptors ab. Der Wert gibt den Anbieterbezeichner für das Gerät an, der vom USB-Spezifikationsausschuss zugewiesen wurde.

WriteTimeout

Ruft den Timeoutwert für einen Schreibvorgang ab oder legt diese fest.

Methoden

Close()

Gibt den Verweis auf das SerialDevice-Objekt frei, das zuvor durch Aufrufen von FromIdAsync abgerufen wurde.

Dispose()

Führt anwendungsspezifische Aufgaben durch, die mit der Freigabe, der Zurückgabe oder dem Zurücksetzen von nicht verwalteten Ressourcen zusammenhängen.

FromIdAsync(String)

Startet einen asynchronen Vorgang, der ein SerialDevice-Objekt erstellt.

GetDeviceSelector()

Ruft eine AQS-Zeichenfolge (Advanced Query Syntax) ab, die die App an DeviceInformation.FindAllAsync übergeben kann, um alle seriellen Geräte im System zu finden.

GetDeviceSelector(String)

Ruft eine AQS-Zeichenfolge (Advanced Query Syntax) ab, die die App an DeviceInformation.FindAllAsync übergeben kann, um ein serielles Gerät durch Angabe des Portnamens zu finden.

GetDeviceSelectorFromUsbVidPid(UInt16, UInt16)

Ruft eine AQS-Zeichenfolge (Advanced Query Syntax) ab, die die App an DeviceInformation.FindAllAsync übergeben kann, um ein bestimmtes Serial-to-USB-Gerät zu finden, indem sie dessen VID und PID angeben.

Ereignisse

ErrorReceived

Ereignishandler, der aufgerufen wird, wenn ein Fehler am seriellen Port auftritt.

PinChanged

Ereignishandler, der aufgerufen wird, wenn sich der Zustand eines Signals oder einer Zeile am seriellen Port ändert.

Gilt für:

Weitere Informationen