HidLibrary是相當不錯,與我用過的其他人相比,所以嘗試堅持下去。
當數據進來時,它會激發您在初始化HidDevice時分配的「OnReport」處理程序。
E.g.
_myDevice = HidDevices.Enumerate(myVendorId, myProductId).FirstOrDefault();
if (_myDevice != null)
{
_myDevice.OpenDevice();
_myDevice.Inserted += DeviceAttachedHandler;
_myDevice.Removed += DeviceRemovedHandler;
_myDevice.MonitorDeviceEvents = true;
// this is where we start listening for data
_myDevice.ReadReport(OnReport);
}
在這種情況下,「OnReport」是事件處理程序的名稱,只要將數據從設備到達時,它會被調用。 「OnReport」這個名稱不是很具描述性,但是這些例子都使用這個名字,所以我在代碼中也使用了它。重要的是,在處理程序結束時,要求設備在更多數據到達後再次觸發,因此OnReport函數中的最後一行再次調用ReadReport。
private void OnReport(HidReport report)
{
if (attached == false) { return; }
// process your data here
var byteFromMyDevice = report.Data[0];
// we need to start listening again for more data
_myDevice.ReadReport(OnReport);
}
我用你的代碼把我的設備置於讀取模式。當設備處於此模式時,無論我在哪裏調用_myDevice.WriteReport,HIDLibrary都會在NativeMethods.WriteFile中凍結。你知道爲什麼嗎? – RHaguiuda