Condividi tramite


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

  1. 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.
  2. Ottenere tutte le impostazioni definite nell'interfaccia come matrice di oggetti UsbInterfaceSetting ottenendo il valoredella 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'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);
}

Vedere anche