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 definir uma configuração na interface .
Antes de começar
- Você deve ter aberto o dispositivo e obtido o objeto UsbDevice . Leia Como se conectar a um dispositivo USB (aplicativo UWP).
- Os exemplos de código são baseados no exemplo CustomUSBDevice. Você pode baixar o exemplo completo nesta página da galeria de códigos.
Sobre as configurações da interface USB
Cada interface USB expõe um ou mais pontos de extremidade agrupados em 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.
Uma configuração é considerada 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 selecione uma configuração.
Para obter informações sobre as configurações da interface USB, consulte Layout do dispositivo USB.
Obter a configuração ativa de uma interface USB
- Obtenha o objeto UsbInterface 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 por meio do valor da propriedade UsbConfiguration.UsbInterfaces .
- Obtenha todas as configurações definidas na interface como uma matriz de objetos UsbInterfaceSetting obtendo o valor da propriedade UsbInterface.InterfaceSettings .
- Enumerar a matriz e em cada iteração marcar se a configuração está ativa verificando a propriedade UsbInterfaceSetting.Selected.
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 esteja ativa no momento, você deve encontrar o objeto UsbInterfaceSetting para que a configuração selecione e inicie 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);
}