static void WriteDeviceItemInputParserResult(DeviceItemInputParser parser) { while (parser.HasChanged) { int changedIndex = parser.GetNextChangedIndex(); var previousDataValue = parser.GetPreviousValue(changedIndex); var dataValue = parser.GetValue(changedIndex); Console.WriteLine(string.Format(" {0}: {1} -> {2}", (Usage)dataValue.Usages.FirstOrDefault(), previousDataValue.GetPhysicalValue(), dataValue.GetPhysicalValue())); } }
void WriteDeviceItemInputParserResult(DeviceItemInputParser parser) { while (parser.HasChanged) { int changedIndex = parser.GetNextChangedIndex(); var previousDataValue = parser.GetPreviousValue(changedIndex); var dataValue = parser.GetValue(changedIndex); var value = dataValue.GetPhysicalValue(); Usage usage = (Usage)dataValue.Usages.FirstOrDefault(); value = value < 0 ? value / 127 : (value - 54) / 200; switch (usage) { case Usage.GenericDesktopX: controllerState.X = value; break; case Usage.GenericDesktopY: controllerState.Y = value; break; case Usage.GenericDesktopZ: controllerState.Z = value; break; case Usage.GenericDesktopRx: controllerState.RX = value; break; case Usage.GenericDesktopRy: controllerState.RY = value; break; case Usage.GenericDesktopRz: controllerState.RZ = value; break; case Usage.GenericDesktopSlider: if (changedIndex == 30) { controllerState.LeftSwitch = value >= 0; } else { controllerState.RightSwitch = value >= 0; } break; case Usage.Button1: Console.WriteLine("button 1 :" + value); break; case Usage.Button2: Console.WriteLine("button 2 :" + value); break; default: Console.WriteLine("unknown usage:" + usage); break; } } }
static void WriteDeviceItemInputParserResult(DeviceItemInputParser parser) { while (parser.HasChanged) { var changedIndex = parser.GetNextChangedIndex(); var previousDataValue = parser.GetPreviousValue(changedIndex); var dataValue = parser.GetValue(changedIndex); var y = (Usage)dataValue.Usages.FirstOrDefault(); var value = (int)dataValue.GetPhysicalValue(); //Console.WriteLine($"{(Usage) dataValue.Usages.FirstOrDefault()}: {previousDataValue.GetPhysicalValue()} -> {dataValue.GetPhysicalValue()}"); switch (y) { case Usage.GenericDesktopY: if (value == 255) { SerialPort.Write(BitConverter.GetBytes(4), 0, 1); } if (value == 0) { SerialPort.Write(BitConverter.GetBytes(3), 0, 1); } break; case Usage.GenericDesktopX: if (value == 255) { SerialPort.Write(BitConverter.GetBytes(7), 0, 1); } if (value == 0) { SerialPort.Write(BitConverter.GetBytes(8), 0, 1); } break; case Usage.Button1: //X if (value == 1) { SerialPort.Write(BitConverter.GetBytes(5), 0, 1); } break; case Usage.Button4: //Y if (value == 1) { SerialPort.Write(BitConverter.GetBytes(6), 0, 1); } break; case Usage.Button2: //A if (value == 1) { SerialPort.Write(BitConverter.GetBytes(2), 0, 1); } break; case Usage.Button3: //B if (value == 1) { SerialPort.Write(BitConverter.GetBytes(1), 0, 1); } break; case Usage.Button5: //L if (value == 1) { SerialPort.Write(BitConverter.GetBytes(9), 0, 1); } break; case Usage.Button6: //R if (value == 1) { SerialPort.Write(BitConverter.GetBytes(10), 0, 1); } break; default: break; } } }