HidDevice Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет коллекцию верхнего уровня и соответствующее устройство.
public ref class HidDevice sealed : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class HidDevice final : IClosable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class HidDevice : System.IDisposable
Public NotInheritable Class HidDevice
Implements IDisposable
- Наследование
- Атрибуты
- Реализации
Требования к Windows
Семейство устройств |
Windows 10 (появилось в 10.0.10240.0 - for Xbox, see UWP features that aren't yet supported on Xbox)
|
API contract |
Windows.Foundation.UniversalApiContract (появилось в v1.0)
|
Примеры
Полный пример использования этого класса см. в разделе Пример пользовательского устройства HID.
В следующем примере показано, как приложение UWP, созданное с помощью XAML и C#, использует метод GetDeviceSelector для создания селектора для конкретного устройства HID (в данном случае устройства конфигурации ввода Майкрософт), а затем использует метод FromIdAsync для открытия подключения к этому устройству.
Примечание
Этот фрагмент кода пытается найти устройство HID, которое может отсутствовать в системе. Для успешного тестирования кода в системе необходимо обновить vendorId, productId, usagePage, usageId, usageId допустимыми значениями.
- Открыть диспетчер устройств
- Разверните раздел "Устройства человеческого интерфейса"
- Поиск устройства HID (в этом примере мы выбрали устройство конфигурации ввода Майкрософт)
- Щелкните устройство правой кнопкой мыши и выберите Свойства.
- В разделе Свойства выберите вкладку Сведения .
- На вкладке Сведения выберите Идентификаторы оборудования в раскрывающемся списке Свойство .
- Сведения о HID отображаются в поле Значение :
using System;
using System.Linq;
using Windows.Devices.Enumeration;
using Windows.Devices.HumanInterfaceDevice;
using Windows.Storage;
using Windows.UI.Xaml.Controls;
namespace HIDdeviceTest
{
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
EnumerateHidDevices();
}
// Find HID devices.
private async void EnumerateHidDevices()
{
// Microsoft Input Configuration Device.
ushort vendorId = 0x045E;
ushort productId = 0x07CD;
ushort usagePage = 0x000D;
ushort usageId = 0x000E;
// Create the selector.
string selector =
HidDevice.GetDeviceSelector(usagePage, usageId, vendorId, productId);
// Enumerate devices using the selector.
var devices = await DeviceInformation.FindAllAsync(selector);
if (devices.Any())
{
// At this point the device is available to communicate with
// So we can send/receive HID reports from it or
// query it for control descriptions.
info.Text = "HID devices found: " + devices.Count;
// Open the target HID device.
HidDevice device =
await HidDevice.FromIdAsync(devices.ElementAt(0).Id,
FileAccessMode.ReadWrite);
if (device != null)
{
// Input reports contain data from the device.
device.InputReportReceived += async (sender, args) =>
{
HidInputReport inputReport = args.Report;
IBuffer buffer = inputReport.Data;
// Create a DispatchedHandler as we are interracting with the UI directly and the
// thread that this function is running on might not be the UI thread;
// if a non-UI thread modifies the UI, an exception is thrown.
await this.Dispatcher.RunAsync(
CoreDispatcherPriority.Normal,
new DispatchedHandler(() =>
{
info.Text += "\nHID Input Report: " + inputReport.ToString() +
"\nTotal number of bytes received: " + buffer.Length.ToString();
}));
};
}
}
else
{
// There were no HID devices that met the selector criteria.
info.Text = "HID device not found";
}
}
}
}
Комментарии
Дополнительные сведения об использовании этого класса, включая ограничения, см. в разделах Поддержка устройств HID и Пример пользовательского устройства HID.
Приложения, использующие этот класс для доступа к устройству HID, должны включать определенные данные DeviceCapability в узле Возможности своего манифеста. Эти данные определяют устройство и его назначение (или функцию). Дополнительные сведения см. в разделе Как указать возможности устройства для HID.
Свойства
ProductId |
Возвращает идентификатор продукта для данного устройства HID. |
UsageId |
Возвращает идентификатор использования для данного устройства HID. |
UsagePage |
Возвращает страницу использования коллекции верхнего уровня. |
VendorId |
Возвращает идентификатор поставщика для данного устройства HID. |
Version |
Возвращает номер версии или редакции для данного устройства HID. |
Методы
Close() |
Закрывает подключение между узлом и данным устройством HID. |
CreateFeatureReport() |
Создает единственный или стандартный отчет о функциях, который узел будет отправлять на устройство. |
CreateFeatureReport(UInt16) |
Создает отчет о функциях, определяемый параметром reportId , который узел будет отправлять на устройство. |
CreateOutputReport() |
Создает единственный или стандартный выходной отчет, который узел будет отправлять на устройство. |
CreateOutputReport(UInt16) |
Создает выходной отчет, определенный параметром reportId , который узел будет отправлять на устройство. |
Dispose() |
Выполняет определяемые приложением задачи, связанные с удалением, высвобождением или сбросом неуправляемых ресурсов. |
FromIdAsync(String, FileAccessMode) |
Открывает дескриптор устройства, определяемого параметром deviceId . Тип доступа определяется параметром accessMode . |
GetBooleanControlDescriptions(HidReportType, UInt16, UInt16) |
Извлекает описания логических элементов управления для данного устройства HID. |
GetDeviceSelector(UInt16, UInt16) |
Извлекает строку расширенного синтаксиса запросов (AQS) на основе заданных значений usagePage и usageId. |
GetDeviceSelector(UInt16, UInt16, UInt16, UInt16) |
Извлекает строку расширенного синтаксиса запросов (AQS) на основе заданного usagePage, usageId, vendorId и productId. |
GetFeatureReportAsync() |
Асинхронно извлекает первый или стандартный отчет о функциях с заданного устройства HID. |
GetFeatureReportAsync(UInt16) |
Асинхронно извлекает отчет о функциях, определенный параметром reportId , для данного устройства HID. |
GetInputReportAsync() |
Асинхронно извлекает входной отчет по умолчанию или первый из заданного устройства HID. |
GetInputReportAsync(UInt16) |
Асинхронно извлекает входной отчет, определенный параметром reportId , с заданного устройства HID. |
GetNumericControlDescriptions(HidReportType, UInt16, UInt16) |
Извлекает описания числовых элементов управления для данного устройства HID. |
SendFeatureReportAsync(HidFeatureReport) |
Асинхронно отправляет отчет о функциях с узла на устройство. |
SendOutputReportAsync(HidOutputReport) |
Асинхронно отправляет выходной отчет с узла на устройство. |
События
InputReportReceived |
Устанавливает прослушиватель событий для обработки входных отчетов, выданных устройством при вызове метода GetInputReportAsync() или GetInputReportAsync(System.UInt16 reportId). |