Auswählen einer USB-Schnittstelleneinstellung (UWP-App)
In diesem Artikel wird veranschaulicht, wie Sie eine Einstellung innerhalb einer USB-Schnittstelle ändern. Verwenden Sie das UsbInterfaceSetting-Objekt , um die aktuelle Einstellung abzurufen und eine Einstellung in der Schnittstelle festzulegen.
Vorbereitung
- Sie müssen das Gerät geöffnet und das UsbDevice-Objekt abgerufen haben. Weitere Informationen finden Sie unter Herstellen einer Verbindung mit einem USB-Gerät (UWP-App).
- Codebeispiele basieren auf dem CustomUSBDevice-Beispiel. Sie können das vollständige Beispiel von dieser Codekatalogseite herunterladen.
Informationen zu USB-Schnittstelleneinstellungen
Jede USB-Schnittstelle macht einen oder mehrere Endpunkte verfügbar, die in Schnittstelleneinstellungen gruppiert sind. Diese Einstellungen sind gerätedefiniert und mit einer Zahl namens Einstellungsindex gekennzeichnet. Jede Schnittstelle darf nur eine aktive Einstellung aufweisen. Für ein Gerät mit mehreren Schnittstellen muss jede Schnittstelle über eine aktive Einstellung verfügen. Wenn eine Einstellung aktiv ist, können Daten an oder von ihren Endpunkten übertragen werden. Endpunkte in nicht aktiven Einstellungen sind für Datenübertragungen deaktiviert.
Eine Einstellung soll aktiv sein, nachdem sie auf dem Gerät ausgewählt wurde. Die standardaktive Einstellung ist die erste Einstellung einer Schnittstelle.
Jede Einstellung wird durch ein UsbInterfaceSetting-Objekt dargestellt. Mithilfe des -Objekts kann Ihre UWP-App die folgenden Vorgänge ausführen:
- Bestimmen Sie, ob eine bestimmte Einstellung aktiv ist, während Sie alle Einstellungen in einer Schnittstelle auflisten.
- Initiieren Sie eine Anforderung, die eine Einstellung auswählt.
Informationen zu USB-Schnittstelleneinstellungen finden Sie unter USB-Gerätelayout.
Abrufen der aktiven Einstellung einer USB-Schnittstelle
- Rufen Sie das UsbInterface-Objekt aus dem zuvor abgerufenen UsbDevice-Objekt ab. In diesem Codebeispiel wird die erste Schnittstelle in der USB-Konfiguration abgerufen. Für ein Gerät mit mehreren Schnittstellen können Sie das UsbInterface-Objekt abrufen, das Sie verwenden möchten, indem Sie alle Schnittstellen auflisten. Sie können dieses Array über den Wert der UsbConfiguration.UsbInterfaces-Eigenschaft abrufen.
- Rufen Sie alle in der Schnittstelle definierten Einstellungen als Array von UsbInterfaceSetting-Objekten ab, indem Sie den Wert der UsbInterface.InterfaceSettings-Eigenschaft abrufen.
- Führen Sie das Array auf, und überprüfen Sie in jeder Iteration, ob die Einstellung aktiv ist, indem Sie die UsbInterfaceSetting.Selected-Eigenschaft überprüfen.
In diesem Beispielcode wird veranschaulicht, wie Sie die Einstellungsnummer für alle in der Standardschnittstelle definierten Einstellungen abrufen.
void GetInterfaceSetting (UsbDevice device)
{
auto interfaceSettings = device.InterfaceSettings;
for each(UsbInterfaceSetting interfaceSetting in interfaceSettings)
{
if (interfaceSetting->Selected)
{
uint8 interfaceSettingNumber = interfaceSetting.InterfaceDescriptor.AlternateSettingNumber;
// Use the interface setting number. Not shown.
break;
}
}
}
Festlegen einer USB-Schnittstelleneinstellung
Um eine Einstellung auszuwählen, die derzeit nicht aktiv ist, müssen Sie das UsbInterfaceSetting-Objekt für die Einstellung auswählen und dann einen asynchronen Vorgang starten, indem Sie die UsbInterfaceSetting.SelectSettingAsync-Methode aufrufen. Der Vorgang gibt keinen Wert zurück.
private async void SetInterfaceSetting(UsbDevice device, Byte settingNumber)
{
var interfaceSetting = device.DefaultInterface.InterfaceSettings[settingNumber];
await interfaceSetting.SelectSettingAsync();
MainPage.Current.NotifyUser("Interface Setting is set to " + settingNumber, NotifyType.StatusMessage);
}