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
Наследование
Object Platform::Object IInspectable HidDevice
Атрибуты
Реализации

Требования к 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 допустимыми значениями.

  1. Открыть диспетчер устройств
  2. Разверните раздел "Устройства человеческого интерфейса"
  3. Поиск устройства HID (в этом примере мы выбрали устройство конфигурации ввода Майкрософт)
  4. Щелкните устройство правой кнопкой мыши и выберите Свойства.
  5. В разделе Свойства выберите вкладку Сведения .
  6. На вкладке Сведения выберите Идентификаторы оборудования в раскрывающемся списке Свойство .
  7. Сведения о 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).

Применяется к

См. также раздел