Выбор параметра интерфейса USB (приложение UWP)
В этой статье показано, как изменить параметр в ИНТЕРФЕЙСе USB. Используйте объект UsbInterfaceSetting , чтобы получить текущий параметр и задать параметр в интерфейсе .
Перед началом работы
- Необходимо открыть устройство и получить объект UsbDevice . См. статью Подключение к USB-устройству (приложению UWP).
- Примеры кода основаны на примере CustomUSBDevice. Полный пример можно скачать на этой странице коллекции кода.
Сведения о параметрах интерфейса USB
Каждый ИНТЕРФЕЙС USB предоставляет одну или несколько конечных точек, сгруппированных в параметрах интерфейса. Эти параметры определяются устройством и идентифицируются с помощью числа, называемого индексом параметров. Каждый интерфейс должен иметь только один активный параметр. Для устройства с несколькими интерфейсами каждый интерфейс должен иметь активный параметр. Если параметр активен, данные можно передавать в его конечные точки или из нее. Конечные точки в неактивных параметрах отключены для передачи данных.
Параметр считается активным после того, как он был выбран на устройстве. Активный параметр по умолчанию является первым параметром интерфейса.
Каждый параметр представлен объектом UsbInterfaceSetting . С помощью объекта приложение UWP может выполнять следующие операции:
- Определите, активен ли конкретный параметр при перечислении всех параметров в интерфейсе.
- Инициировать запрос, который выбирает параметр.
Сведения о параметрах интерфейса USB см. в разделе Макет USB-устройства.
Получение активного параметра ИНТЕРФЕЙСА USB
- Получите объект UsbInterface из предыдущего полученного объекта UsbDevice . В этом примере кода возвращается первый интерфейс в конфигурации USB. Для устройства с несколькими интерфейсами можно получить объект UsbInterface , который вы хотите использовать, перечислив все интерфейсы. Этот массив можно получить с помощью значения свойства UsbConfiguration.UsbInterfaces .
- Получение всех параметров, определенных в интерфейсе в виде массива объектов UsbInterfaceSetting, путем получения значения свойства UsbInterface.InterfaceSettings .
- Перечислите массив и в каждой итерации проверка, активен ли параметр, проверив свойство 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);
}