Come selezionare un'impostazione dell'interfaccia USB (app UWP)
Questo articolo illustra come modificare un'impostazione all'interno di un'interfaccia USB. Utilizzare l'oggetto UsbInterfaceSetting per ottenere l'impostazione corrente e impostare un'impostazione nell'interfaccia.
Prima di iniziare
- È necessario aver aperto il dispositivo e ottenuto l'oggetto UsbDevice . Leggi Come connettersi a un dispositivo USB (app UWP).
- Gli esempi di codice sono basati sull'esempio CustomUSBDevice. È possibile scaricare l'esempio completo da questa tabella della raccolta codici.
Informazioni sulle impostazioni dell'interfaccia USB
Ogni interfaccia USB espone uno o più endpoint raggruppati in impostazioni dell'interfaccia. Queste impostazioni sono definite dal dispositivo e identificate con un numero denominato indice dell'impostazione. Ogni interfaccia deve avere una sola impostazione attiva. Per un dispositivo a più interfacce, ogni interfaccia deve avere un'impostazione attiva. Se un'impostazione è attiva, i dati possono essere trasferiti da o verso gli endpoint. Gli endpoint nelle impostazioni non attive sono disabilitati per i trasferimenti di dati.
Si dice che un'impostazione sia attiva dopo che è stata selezionata nel dispositivo. L'impostazione attiva predefinita è la prima impostazione di un'interfaccia.
Ogni impostazione è rappresentata da un oggetto UsbInterfaceSetting . Usando l'oggetto, l'app UWP può eseguire queste operazioni:
- Determinare se un'impostazione specifica è attiva durante l'enumerazione di tutte le impostazioni in un'interfaccia.
- Avviare una richiesta che seleziona un'impostazione.
Per informazioni sulle impostazioni dell'interfaccia USB, vedere Layout del dispositivo USB.
Ottenere l'impostazione attiva di un'interfaccia USB
- Ottenere l'oggetto UsbInterface dall'oggetto UsbDevice ottenuto in precedenza. Questo esempio di codice ottiene la prima interfaccia nella configurazione USB. Per un dispositivo a più interfacce, puoi ottenere l'oggetto UsbInterface che vuoi usare enumerando tutte le interfacce. È possibile ottenere tale matrice tramite il valore della proprietà UsbConfiguration.UsbInterfaces .
- Ottenere tutte le impostazioni definite nell'interfaccia come matrice di oggetti UsbInterfaceSetting ottenendo il valore della proprietà UsbInterface.InterfaceSettings .
- Enumerare la matrice e in ogni iterazione verificare se l'impostazione è attiva controllando la proprietà UsbInterfaceSetting.Selected .
Questo codice di esempio mostra come ottenere il numero di impostazione per tutte le impostazioni definite nell'interfaccia predefinita.
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;
}
}
}
Impostare un'impostazione dell'interfaccia USB
Per selezionare un'impostazione non attiva, è necessario trovare l'oggetto UsbInterfaceSetting per l'impostazione da selezionare e quindi avviare un'operazione asincrona chiamando il metodo UsbInterfaceSetting.SelectSettingAsync . L'operazione non restituisce un valore.
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);
}