SerialDevice Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
- 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, serialCommunication
um die SerialDevice
-Klasse zu verwenden. Weitere Informationen finden Sie unter Windows.Devices.SerialCommunication.
Erstellen eines SerialDevice-Objekts
- 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.
- Übergeben Sie die abgerufene Zeichenfolge an FindAllAsync. Der Aufruf ruft ein DeviceInformationCollection-Objekt ab.
- Schleife durch die Auflistung. Jede Iteration ruft ein DeviceInformation-Objekt ab.
- 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}
. ). - 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.
- Rufen Sie einen Verweis auf den Eingabedatenstrom ab, indem Sie die SerialDevice.InputStream-Eigenschaft abrufen.
- Erstellen Sie ein DataReader-Objekt , indem Sie den Eingabedatenstrom im DataReader-Konstruktor angeben.
- Rufen Sie einen Verweis auf den Ausgabestream ab, indem Sie die SerialDevice.OutputStream-Eigenschaft abrufen.
- 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. |