Partilhar via


Como selecionar uma configuração de interface USB (aplicativo UWP)

Este artigo demonstra como alterar uma configuração dentro de uma interface USB. Use o objeto UsbInterfaceSetting para obter a configuração atual e configurar a interface.

Antes de começar

Sobre as configurações da interface USB

Cada interface USB expõe um ou mais terminais agrupados nas configurações de interface. Essas configurações são definidas pelo dispositivo e identificadas com um número chamado índice de configuração . Cada interface deve ter apenas uma configuração ativa. Para um dispositivo de interface múltipla, cada interface deve ter uma configuração ativa. Se uma configuração estiver ativa, os dados poderão ser transferidos de ou para seus pontos de extremidade. Os pontos de extremidade em configurações não ativas são desabilitados para transferências de dados.

Diz-se que uma configuração está ativa depois de ter sido selecionada no dispositivo. A configuração ativa padrão é a primeira configuração de uma interface.

Cada configuração é representada por um objeto UsbInterfaceSetting. Usando o objeto, seu aplicativo UWP pode executar estas operações:

  • Determine se uma configuração específica está ativa ao enumerar todas as configurações em uma interface.
  • Inicie uma solicitação que seleciona uma configuração.

Para obter informações sobre as configurações da interface USB, consulte layout do dispositivo USB.

Obtenha a configuração ativa de uma interface USB

  1. Obtenha o objeto UsbInterface a partir do objeto UsbDevice obtido anteriormente. Este exemplo de código obtém a primeira interface na configuração USB. Para um dispositivo de várias interfaces, você pode obter o objeto UsbInterface que deseja usar enumerando todas as interfaces. Você pode obter essa matriz através do valor da propriedade UsbConfiguration.UsbInterfaces.
  2. Obtenha todas as configurações definidas na interface como uma matriz de objetos UsbInterfaceSetting ao obter o valor da propriedade UsbInterface.InterfaceSettings.
  3. Enumere a matriz e, em cada iteração, verifique se a configuração está ativa, verificando a UsbInterfaceSetting.Selected propriedade.

Este código de exemplo mostra como obter o número de configuração para todas as configurações definidas na interface padrão.

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;
            }
        }
}

Definir uma configuração de interface USB

Para selecionar uma configuração que não está ativa no momento, deve-se encontrar o objeto UsbInterfaceSetting para selecionar a configuração e, em seguida, iniciar uma operação assíncrona chamando o método UsbInterfaceSetting.SelectSettingAsync. A operação não retorna um valor.

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);
}

Ver também