HidDevice Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Rappresenta una raccolta di primo livello e il dispositivo corrispondente.
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
- Ereditarietà
- Attributi
- Implementazioni
Requisiti Windows
Famiglia di dispositivi |
Windows 10 (è stato introdotto in 10.0.10240.0 - for Xbox, see UWP features that aren't yet supported on Xbox)
|
API contract |
Windows.Foundation.UniversalApiContract (è stato introdotto in v1.0)
|
Esempio
Per un esempio completo che illustra come usare questa classe, vedere Esempio di dispositivo HID personalizzato.
Nell'esempio seguente viene illustrato come un'app UWP compilata con XAML e C# usi il metodo GetDeviceSelector per creare un selettore per un dispositivo HID specifico (in questo caso, Dispositivo configurazione input Microsoft) e quindi usa il metodo FromIdAsync per aprire una connessione a tale dispositivo.
Nota
Questo frammento di codice tenta di trovare un dispositivo HID che potrebbe non essere presente nel sistema. Per testare correttamente il codice nel sistema, è necessario aggiornare vendorId, productId, usagePage, usageId con valori validi.
- Aprire Gestione dispositivi
- Espandere Dispositivi di interfaccia umana
- Individuare un dispositivo HID (per questo esempio abbiamo scelto Microsoft Input Configuration Device)
- Fare clic con il pulsante destro del mouse sul dispositivo e selezionare Proprietà
- In Proprietà selezionare la scheda Dettagli
- Nella scheda Dettagli selezionare Id hardware nell'elenco a discesa Proprietà
- I dettagli HID vengono visualizzati nella casella Valore :
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";
}
}
}
}
Commenti
Per altre informazioni sull'uso di questa classe, incluse le limitazioni, vedere Supporto di dispositivi di interfaccia umana (HID) e esempio di dispositivo HID personalizzato.
Le app che usano questa classe per accedere a un dispositivo HID devono includere dati DeviceCapability specifici nel nodo Funzionalità del manifesto. Questi dati identificano il dispositivo e il relativo scopo (o funzione). Per altre informazioni, vedere Come specificare le funzionalità del dispositivo per HID.
Proprietà
ProductId |
Ottiene l'identificatore del prodotto per il dispositivo HID specificato. |
UsageId |
Ottiene l'identificatore di utilizzo per il dispositivo HID specificato. |
UsagePage |
Ottiene la pagina di utilizzo della raccolta di primo livello. |
VendorId |
Ottiene l'identificatore del fornitore per il dispositivo HID specificato. |
Version |
Ottiene la versione o la revisione, numero per il dispositivo HID specificato. |
Metodi
Close() |
Chiude la connessione tra l'host e il dispositivo HID specificato. |
CreateFeatureReport() |
Crea l'unico report predefinito o predefinito che l'host invierà al dispositivo. |
CreateFeatureReport(UInt16) |
Crea un report di funzionalità, identificato dal parametro reportId , che l'host invierà al dispositivo. |
CreateOutputReport() |
Crea l'unico report di output o predefinito che l'host invierà al dispositivo. |
CreateOutputReport(UInt16) |
Crea un report di output, identificato dal parametro reportId , che l'host invierà al dispositivo. |
Dispose() |
Esegue attività definite dall'applicazione, come rilasciare o reimpostare risorse non gestite. |
FromIdAsync(String, FileAccessMode) |
Apre un handle al dispositivo identificato dal parametro deviceId . Il tipo di accesso viene specificato dal parametro accessMode . |
GetBooleanControlDescriptions(HidReportType, UInt16, UInt16) |
Recupera le descrizioni dei controlli booleani per il dispositivo HID specificato. |
GetDeviceSelector(UInt16, UInt16) |
Recupera una stringa AQS (Advanced Query Syntax) in base all'utilizzo specificatoPage e usageId. |
GetDeviceSelector(UInt16, UInt16, UInt16, UInt16) |
Recupera una stringa AQS (Advanced Query Syntax) in base all'utilizzo specificatoPage, usageId, vendorId e productId. |
GetFeatureReportAsync() |
Recupera in modo asincrono il primo report delle funzionalità o predefinito dal dispositivo HID specificato. |
GetFeatureReportAsync(UInt16) |
Recupera in modo asincrono un report delle funzionalità, identificato dal parametro reportId , per il dispositivo HID specificato. |
GetInputReportAsync() |
Recupera in modo asincrono il report di input predefinito o primo dal dispositivo HID specificato. |
GetInputReportAsync(UInt16) |
Recupera in modo asincrono un report di input, identificato dal parametro reportId , dal dispositivo HID specificato. |
GetNumericControlDescriptions(HidReportType, UInt16, UInt16) |
Recupera le descrizioni dei controlli numerici per il dispositivo HID specificato. |
SendFeatureReportAsync(HidFeatureReport) |
Invia un report delle funzionalità in modo asincrono dall'host al dispositivo. |
SendOutputReportAsync(HidOutputReport) |
Invia un report di output in modo asincrono dall'host al dispositivo. |
Eventi
InputReportReceived |
Stabilisce un listener eventi per gestire i report di input emessi dal dispositivo quando viene chiamato GetInputReportAsync() o GetInputReportAsync(System.UInt16 reportId). |