Cómo seleccionar una configuración de interfaz USB (aplicación para UWP)
En este artículo se muestra cómo cambiar una configuración dentro de una interfaz USB. Utilice el objeto UsbInterfaceSetting para obtener la configuración actual y establecer una configuración en la interfaz.
Antes de empezar
- Debe haber abierto el dispositivo y obtenido el objeto UsbDevice . Lea Cómo conectarse a un dispositivo USB (aplicación para UWP).
- Los ejemplos de código se basan en el ejemplo CustomUSBDevice. Puede descargar el ejemplo completo de esta página de la galería de códigos.
Acerca de la configuración de la interfaz USB
Cada interfaz USB expone uno o varios puntos de conexión que se agrupan en la configuración de la interfaz. Esa configuración se define por el dispositivo y se identifica con un número denominado índice de configuración. Cada interfaz debe tener solo una configuración activa. Para un dispositivo de interfaz múltiple, cada interfaz debe tener una configuración activa. Si una configuración está activa, los datos se pueden transferir a sus puntos de conexión o desde ellos. Los puntos de conexión en la configuración no activa están deshabilitados para las transferencias de datos.
Se dice que una configuración está activa después de que se haya seleccionado en el dispositivo. La configuración activa predeterminada es la primera configuración de una interfaz.
Cada configuración se representa mediante un objeto UsbInterfaceSetting . Mediante el uso del objeto , la aplicación para UWP puede realizar estas operaciones:
- Determine si una configuración determinada está activa al enumerar todas las configuraciones de una interfaz.
- Inicie una solicitud que seleccione una configuración.
Para obtener información sobre la configuración de la interfaz USB, consulte Diseño del dispositivo USB.
Obtener la configuración activa de una interfaz USB
- Obtenga el objeto UsbInterface del objeto UsbDevice obtenido anteriormente. Este ejemplo de código obtiene la primera interfaz de la configuración USB. Para un dispositivo de varias interfaces, puede obtener el objeto UsbInterface que desea usar mediante la enumeración de todas las interfaces. Puede obtener esa matriz a través del valor de la propiedad UsbConfiguration.UsbInterfaces .
- Obtenga toda la configuración definida en la interfaz como una matriz de objetos UsbInterfaceSetting obteniendo el valor de la propiedad UsbInterface.InterfaceSettings .
- Enumere la matriz y, en cada iteración, compruebe si la configuración está activa comprobando la propiedad UsbInterfaceSetting.Selected .
En este código de ejemplo se muestra cómo obtener el número de configuración de todas las opciones definidas en la interfaz predeterminada.
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;
}
}
}
Establecer una configuración de interfaz USB
Para seleccionar una configuración que no está activa actualmente, debe encontrar el objeto UsbInterfaceSetting para que la configuración se seleccione y, a continuación, inicie una operación asincrónica llamando al método UsbInterfaceSetting.SelectSettingAsync . La operación no devuelve un 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);
}