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

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

  1. 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 .
  2. Ottenere tutte le impostazioni definite nell'interfaccia come matrice di oggetti UsbInterfaceSetting ottenendo il valore della proprietà UsbInterface.InterfaceSettings .
  3. 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);
}

Vedere anche