[C#] HID Example von MSDN

Nyix

Lieutenant
Registriert
Mai 2011
Beiträge
770
Hallo,

ich würde den Example-Code von MSDN, welcher unten gepostet ist, gerne nutzen. Aber beim Kompilieren kommt immer:

Fehler 1 'await' erfordert, dass für Typ 'Windows.Foundation.IAsyncOperation<Windows.Devices.Enumeration.DeviceInformationCollection>' eine geeignete GetAwaiter-Methode angegeben ist. Fehlt eine Verwendungsdirektive für 'System'?

Was müsste ich hinzufügen/ändern?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Windows.Devices.Enumeration;
using Windows.Devices.HumanInterfaceDevice;
using Windows.Storage;
using Windows.Storage.Streams;

namespace HidSampleCS
{
class Enumeration
{
// Enumerate HID devices
private async void EnumerateHidDevices()
{
UInt32 vendorId = 0x045E;
UInt32 productId = 0x078F;
UInt32 usagePage = 0xFF00;
UInt32 usageId = 0x0001;

// Create a selector that gets a HID device using VID/PID and a
// VendorDefined usage
string selector = HidDevice.GetDeviceSelector(usagePage, usageId,
vendorId, productId);

// Enumerate devices using the selector
var devices = await DeviceInformation.FindAllAsync(selector);

if (devices.Count > 0)
{
// Open the target HID device
HidDevice device = await HidDevice.FromIdAsync(devices.ElementAt(0).Id,
FileAccessMode.ReadWrite);

// 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
}
else
{
// There were no HID devices that met the selector criteria
this.NotifyUser("MUTT HID device not found");
}
}
}
}
 
Probiere mal:
Code:
// Enumerate devices using the selector
 var devices = await DeviceInformation.FindAllAsync(selector, null);
 
Hm das bringt mich nicht wirklich weiter.

Der Nutzer Hjulle beschreibt genau den gleichen Fehler, den ich auch habe.

Diese Verweise nutze ich:
Windows.System.winmd
Windows.Devices.winmd
Windows.Storage.winmd
Windows.Foundation.winmd
System.Runtime.WindowsRuntime.dll
 
Was versuchst du denn zu entwickeln? Machst du das unter Windows 7 oder 8?
 
Ich möchte auf ein Custom HID Gerät zugreifen (senden/empfangen). Das Programm läuft erst ab Windows 8 und höher, weil die genutzten Verweise extra für Windows 8 Apps sind. Wenn ich die Version von Windows nicht festlege, dann kann ich die Verweise gar nicht erst nutzen.

Mir ist klar, dass es auch andere Bibliotheken gibt, aber damit habe ich schlechte Erfahrungen in puncto Pflege für spätere Versionen und Integration.

Irgendwie muss das Beispiel doch laufen, immerhin gibt es Microsoft direkt so vor.

Edit: Nutze Visual Studio 2013

Edit: Ich habe das Beispiel mal in einer Windows 8 App probiert, dort klappt es! Also muss irgendwie etwas fehlen in meiner Desktop-Version.
 
Zuletzt bearbeitet:
Genau das habe ich alles schon so gemacht, bis auf die CPU fürs Debuggen. Wenn das nicht richtig wäre, dann hört der Compiler schon auf, weil er den namespace HidDevice gar nicht kennt. Die Bibliotheken sind alle richtig eingebunden. Ich kann auch die Methoden aufrufen. Aber das await geht trotzdem nicht in meiner Desktop-Version.

Ich habe eben auch mal alle Verweise der App-Version in die Desktop-Version eingebunden. Der Fehler bleibt bestehen. Es muss noch irgendwie etwas weiteres geben.

Edit: Ich habe die Windows 8 App mal etwas weiter programmiert, dort wird das Gerät tadellos erkannt. Der Code funktioniert also. Ich habe jedoch UInt32 als ushort angepasst.
 
Zuletzt bearbeitet:
Zurück
Oben