Come selezionare un'impostazione dell'interfaccia USB (app UWP)
Questo articolo illustra come modificare un'impostazione all'interno di un'interfaccia USB. Usa l'oggettousbInterfaceSettingper ottenere l'impostazione corrente e impostare un'impostazione nell'interfaccia.
Prima di iniziare
- È necessario aver aperto il dispositivo e ottenuto l'oggetto UsbDevice. Leggere Come connettersi a un dispositivo USB (app UWP).
- Gli esempi di codice sono basati sull'esempio CustomUSBDevice. È possibile scaricare l'esempio completo da questa pagina della galleria del codice.
Informazioni sulle impostazioni dell'interfaccia USB
Ogni interfaccia USB espone uno o più endpoint raggruppati nelle impostazioni dell'interfaccia . Queste impostazioni sono definite dal dispositivo e identificate con un numero denominato indice dell'impostazione . Ogni interfaccia deve avere solo un'impostazione attiva. Per un dispositivo a interfaccia multipla, 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'oggettousbInterfaceottenuto in precedenza oggetto UsbDevice. 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 valoredella 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'oggettousbInterfaceSettingper l'impostazione da selezionare e quindi avviare un'operazione asincrona chiamando il metodoUsbInterfaceSetting.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);
}