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 设备示例

以下示例演示了使用 XAML 和 C# 生成的 UWP 应用如何使用 GetDeviceSelector 方法为特定 HID 设备创建选择器 (,在这种情况下,Microsoft 输入配置设备) 然后使用 FromIdAsync 方法打开与该设备的连接。

注意

此代码片段尝试查找系统中可能不存在的 HID 设备。 若要在系统上成功测试代码,应使用有效值更新 vendorId、productId、usagePage、usageId。

  1. 打开设备管理器
  2. 展开 人机接口设备
  3. 在本示例中找到 HID 设备 (,我们选择了 Microsoft 输入配置设备)
  4. 右键单击设备并选择 “属性”
  5. 在“属性”中,选择“ 详细信息 ”选项卡
  6. 在“详细信息”选项卡上,从“属性”下拉列表中选择“硬件 ID
  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)

根据给定 usagePageusageId 检索 AQS) 字符串 (高级查询语法。

GetDeviceSelector(UInt16, UInt16, UInt16, UInt16)

根据给定 usagePageusageIdvendorIdproductId 检索 AQS) 字符串 (高级查询语法。

GetFeatureReportAsync()

从给定 HID 设备异步检索第一个或默认功能报告。

GetFeatureReportAsync(UInt16)

为给定 HID 设备异步检索 由 reportId 参数标识的特征报告。

GetInputReportAsync()

从给定 HID 设备异步检索默认或第一个输入报告。

GetInputReportAsync(UInt16)

从给定 HID 设备异步检索由 reportId 参数标识的输入报表。

GetNumericControlDescriptions(HidReportType, UInt16, UInt16)

检索给定 HID 设备的数值控件的说明。

SendFeatureReportAsync(HidFeatureReport)

以异步方式将功能报告从主机发送到设备。

SendOutputReportAsync(HidOutputReport)

将输出报告从主机异步发送到设备。

事件

InputReportReceived

建立一个事件侦听器,以处理在调用 System.UInt16 reportId) GetInputReportAsync () GetInputReportAsync (时 设备发出的输入报告。

适用于

另请参阅