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