示例#1
0
        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();
            }
        }
示例#2
0
        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();
                }
            }
        }