protected virtual void OnHIDInputReceived(object sender, EventArgs e) { var inputReportBuffer = new byte[DeviceMaximumInputReportLen]; //Flush pending report buffer while (DeviceInputHandler.TryRead(inputReportBuffer, 0, out _)) { //Dispatch by removing the report ID DispatchInterfaceZeroResponse(inputReportBuffer.Skip(1).ToArray()); } }
public void Connect() { HidDevice iface0Device; if ((iface0Device = Utils.GetHidDevice(2821, DevicePID, 1, 0xFF00, out DeviceReportIDToUse)) != null) { DeviceHIDStream = iface0Device.Open(); DeviceHIDStream.ReadTimeout = 3000; DeviceInputHandler = iface0Device.GetReportDescriptor().CreateHidDeviceInputReceiver(); DeviceInputHandler.Received += new EventHandler(OnHIDInputReceived); DeviceInputHandler.Start(DeviceHIDStream); DeviceMaximumInputReportLen = iface0Device.GetMaxInputReportLength(); } }