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


Выбор параметра интерфейса 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);
}

См. также: