public void Read() { HidDeviceData dataPoint = usbDevice.Read(); if (dataPoint.Status != HidDeviceData.ReadStatus.Success) { throw new InvalidOperationException($"Cannot read from USB device! State was {dataPoint.Status}"); } // this is the same behaviour as the CAM software. // Somehow it sometimes spits random, fixed values and nobody really knows why. if (dataPoint.Data[10] != deviceId) { return; } if (dataPoint.Data[0] == 4) { LastStates.Enqueue(ParseDataPackage(dataPoint)); } while (LastStates.Count > 255) { LastStates.Dequeue(); } }
private async void ReadLoop() { HidDeviceData dataPoint = await usbDevice.ReadAsync(); GetDeviceId(dataPoint); while (keepReading) { dataPoint = await usbDevice.ReadAsync(); if (dataPoint.Status != HidDeviceData.ReadStatus.Success) { throw new InvalidOperationException($"Cannot read from USB device! State was {dataPoint.Status}"); } // this is the same behaviour as the CAM software. // Somehow it sometimes spits random, fixed values and nobody really knows why. if (dataPoint.Data[10] != deviceId) { // Console.WriteLine("Disposed"); continue; } if (dataPoint.Data[0] == 4) { LastStates.Enqueue(ParseDataPackage(dataPoint)); } while (LastStates.Count > 255) { LastStates.Dequeue(); } } }