Поделиться через


Выбор параметра USB-интерфейса (приложение UWP)

В этой статье показано, как изменить параметр в USB-интерфейсе. Используйте объект UsbInterfaceSetting, чтобы получить текущий параметр и задать параметр в интерфейсе.

Перед началом работы

Сведения о параметрах USB-интерфейса

Каждый USB-интерфейс предоставляет одну или несколько конечных точек, сгруппированных в параметры интерфейса . Эти параметры определяются устройством и идентифицируются номером, называемым индексом настройки . Каждый интерфейс должен иметь только один активный параметр. Для нескольких устройств интерфейса каждый интерфейс должен иметь активный параметр. Если параметр активен, данные можно передавать в конечные точки или из них. Конечные точки в неактивных условиях отключены для передачи данных.

Параметр, как сообщается, активен после выбора на устройстве. Активный параметр по умолчанию — это первый параметр интерфейса.

Каждый параметр представлен объектом UsbInterfaceSetting. Используя объект, приложение UWP может выполнять следующие операции:

  • Определите, активен ли конкретный параметр при перечислении всех параметров в интерфейсе.
  • Инициируйте запрос, который выбирает параметр.

Сведения о параметрах USB-интерфейса см. в макете USB-устройства.

Получение активного параметра USB-интерфейса

  1. Получите объект UsbInterface из предыдущего полученного объекта UsbDevice. Этот пример кода получает первый интерфейс в конфигурации USB. Для устройства с несколькими интерфейсами можно получить объект UsbInterface, который требуется использовать, перечислив все интерфейсы. Этот массив можно получить через значение свойства UsbConfiguration.UsbInterfaces.
  2. Получите все параметры, определенные в интерфейсе как массив объектов UsbInterfaceSetting, получив значение свойства UsbInterface.InterfaceSettings.
  3. Переберите массив и в каждой итерации проверьте, активен ли параметр, проверив свойство UsbInterfaceSetting.Selected.

В этом примере кода показано, как получить номер параметра для всех параметров, определенных в интерфейсе по умолчанию.

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

Настройка параметра USB-интерфейса

Чтобы выбрать параметр, который сейчас не активен, необходимо найти объект UsbInterfaceSetting для выбора параметра, а затем запустить асинхронную операцию, вызвав метод UsbInterfaceSetting.SelectSettingAsync. Операция не возвращает значение.

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

См. также