private void OnJoystickMove(JoystickData data) { float angle360 = data.angle360; if (m_Player.isDead) { return; } if (angle360 >= 45 && angle360 < 135) { m_Player.SetChangeDirection(Direction.Up); } else if (angle360 >= 135 && angle360 < 225) { m_Player.SetChangeDirection(Direction.Left); } else if (angle360 >= 225 && angle360 < 315) { m_Player.SetChangeDirection(Direction.Down); } else { m_Player.SetChangeDirection(Direction.Right); } // print(angle360); }
private void OnJoystickMove(JoystickData data) { float mx = Mathf.Cos(data.radians) * speed * Time.deltaTime * data.power; float my = Mathf.Sin(data.radians) * speed * Time.deltaTime * data.power; target.Translate(mx, my, 0); /* * if (angle360 >= 45 && angle360 < 135) * { * print("UP"); * } * else if (angle360 >= 135 && angle360 < 225) * { * print("Left"); * } * else if (angle360 >= 225 && angle360 < 315) * { * print("Down"); * } * else * { * print("Right"); * } */ // print(angle360); }
private void OnJoystickMove(JoystickData data) { float mx = Mathf.Cos(data.radians) * speed * Time.deltaTime * data.power; float mz = Mathf.Sin(data.radians) * speed * Time.deltaTime * data.power; target.transform.Translate(mx, 0, mz); }
public SendData() { Joysticks = new JoystickData[6]; for (int i = 0; i < 6; i++) { Joysticks[i] = new JoystickData(); } DigitalHdrs = new long[10]; for (int i = 0; i < 10; i++) { DigitalHdrs[i] = 0; } DigitalMxp = new OutputDigitalMxp[16]; for (int i = 0; i < 16; i++) { DigitalMxp[i] = new OutputDigitalMxp(); } Encoders = new EncoderData[8]; for (int i = 0; i < 8; i++) { Encoders[i] = new EncoderData(); } MatchInfo = new MatchInfo(); RobotMode = new RobotMode(); }
public JoystickData Parse(byte[] data) { var joystickData = new JoystickData { ForwardBack = data[1], LeftRight = data[2], UpDown = data[4], RotateLeftRight = data[3] }; byte b5 = (byte)(data[5] - 0xF); byte b6 = data[6]; // b[5](0:2) , b[6](0:3) int ub = b6 & 0xF; int ob = GetButtonNumber(b5) << 4; joystickData.Buttons = (byte)(ob + ub); // b[6](4:5) , b[5](4:7) ub = (b5 & 0xF0) >> 4; ob = b6 & 0x30; joystickData.AdditionalButtons = (byte)(ob + ub); return joystickData; }
private void OnjoystickMove(JoystickData joysticData) { float moveX = Mathf.Cos(joysticData.radians) * moveSpeed * Time.deltaTime * joysticData.power; float moveZ = Mathf.Sin(joysticData.radians) * moveSpeed * Time.deltaTime * joysticData.power; moveTarget.Translate(new Vector3(moveX, 0, moveZ)); }
public void SendJoystickInput(JoystickData input) { int contentSize = 0; BasicTypeSerializer.Put(SendContext, (UInt16)RGBLedDisplayCommand.UpdateJoystick); BasicTypeSerializer.Put(SendContext, (ushort)input.X); BasicTypeSerializer.Put(SendContext, (ushort)input.Y); var buffer = SendContext.GetBuffer(out contentSize); ComPort.Send(buffer, 0, (byte)contentSize); }
private void OnMovementDataReceived(JoystickData data) { IsMoving = _canMoveCheck.Invoke() && (data.Direction.magnitude > _minimumJoystickMagnitude); if (!IsMoving) { return; } if (!_hasMoved) { _controller.OnStartMoving(); } _hasMoved = true; _moveData = data; }
public static void Main() { System.IO.Ports.SerialPort NUC_serialPort = new System.IO.Ports.SerialPort(CTRE.HERO.IO.Port1.UART, 115200); NUC_serialPort.Open(); int s = 0; NUC_serialPort.DiscardInBuffer(); /* loop forever */ while (true) { byte[] _rx = new byte[128]; CTRE.Phoenix.Watchdog.Feed(); if (NUC_serialPort.BytesToRead >= 128) { int size = NUC_serialPort.Read(_rx, 0, 128); byte type = _rx[0]; if (type == DASHBOARD_TYPE) { DecodeDashboardState.DecodeDashboardStateData(_rx); } else if (type == JOYSTICK_TYPE) { JoystickData.DecodeJoystickData(_rx); } else { Debug.Print("INVALID TYPE: " + type); } } /* wait a bit */ System.Threading.Thread.Sleep(1); } }
public virtual int RunFilter(ref int[] channelData, int channelCount) { var jsData = new JoystickData(channelCount, channelData) as IJoystickData; var result = 0; var jsFilterOut = Process(jsData, 1023, 0); if (jsFilterOut != null && jsFilterOut.Count > 0 && jsFilterOut.Count <= Constants.MAX_JS_CH) { for (var i = 0; i < jsFilterOut.Count; i++) { channelData[i] = jsFilterOut.Data[i]; jsFilterOut.Data[i] = 0; } result = jsFilterOut.Count; jsFilterOut.Count = 0; } return(result); }
public override void ReportReceived(JoystickData report) { // Event appears 130 times per sec. Reduce it to 13 times (about 72ms solving package). _reportArray[_count++] = report; // Send one package with averaged data. if (_count == _reportsInPackage) { _count = 0; var averageReport = new JoystickData { UpDown = Convert.ToByte(_reportArray.Average(x => x.UpDown)), RotateLeftRight = Convert.ToByte(_reportArray.Average(x => x.RotateLeftRight)), ForwardBack = Convert.ToByte(_reportArray.Average(x => x.ForwardBack)), LeftRight = Convert.ToByte(_reportArray.Average(x => x.LeftRight)), Buttons = _reportArray.Last().Buttons, Button4PressingDegree = Convert.ToByte(_reportArray.Average(x => x.Button4PressingDegree)), Button5PressingDegree = Convert.ToByte(_reportArray.Average(x => x.Button5PressingDegree)), Button6PressingDegree = Convert.ToByte(_reportArray.Average(x => x.Button6PressingDegree)), Button7PressingDegree = Convert.ToByte(_reportArray.Average(x => x.Button7PressingDegree)), AdditionalButtons = _reportArray.Last().AdditionalButtons, AdditionalButton0PressingDegree = Convert.ToByte(_reportArray.Average(x => x.AdditionalButton0PressingDegree)), AdditionalButton1PressingDegree = Convert.ToByte(_reportArray.Average(x => x.AdditionalButton1PressingDegree)), AdditionalButton2PressingDegree = Convert.ToByte(_reportArray.Average(x => x.AdditionalButton2PressingDegree)), AdditionalButton3PressingDegree = Convert.ToByte(_reportArray.Average(x => x.AdditionalButton3PressingDegree)), AdditionalButton4PressingDegree = Convert.ToByte(_reportArray.Average(x => x.AdditionalButton4PressingDegree)), AdditionalButton5PressingDegree = Convert.ToByte(_reportArray.Average(x => x.AdditionalButton5PressingDegree)), AdditionalButton6PressingDegree = Convert.ToByte(_reportArray.Average(x => x.AdditionalButton6PressingDegree)), AdditionalButton7PressingDegree = Convert.ToByte(_reportArray.Average(x => x.AdditionalButton7PressingDegree)) }; if (OnPackageAvailableEvent != null) { OnPackageAvailableEvent(averageReport.ToQuadCopterByteArray()); } } }
private void OnJoystickMove(JoystickData joystickData) { //Debug.Log(1); moveTarget.GetComponent <move>().moveh = Mathf.Cos(joystickData.radians) * joystickData.power; moveTarget.GetComponent <move>().movev = Mathf.Sin(joystickData.radians) * joystickData.power; }
static JoystickHat TranslateJoystickHat(JoystickData joy, IOHIDElementRef elem) { JoystickHat hat; if (joy.ElementToHat.TryGetValue(elem, out hat)) { return hat; } return JoystickHat.Last + 1; }
static JoystickButton TranslateJoystickButton(JoystickData joy, int usage) { JoystickButton button; if (joy.ElementUsageToButton.TryGetValue(usage, out button)) { return button; } return JoystickButton.Last + 1; }
static void UpdateJoystick(JoystickData joy, IOHIDValueRef val) { IOHIDElementRef elem = NativeMethods.IOHIDValueGetElement(val); HIDPage page = NativeMethods.IOHIDElementGetUsagePage(elem); int usage = NativeMethods.IOHIDElementGetUsage(elem); switch (page) { case HIDPage.GenericDesktop: switch ((HIDUsageGD)usage) { case HIDUsageGD.X: case HIDUsageGD.Y: case HIDUsageGD.Z: case HIDUsageGD.Rx: case HIDUsageGD.Ry: case HIDUsageGD.Rz: case HIDUsageGD.Slider: case HIDUsageGD.Dial: case HIDUsageGD.Wheel: short offset = GetJoystickAxis(val, elem); JoystickAxis axis = TranslateJoystickAxis(usage); if (axis >= JoystickAxis.Axis0 && axis <= JoystickAxis.Last) { joy.State.SetAxis(axis, offset); } break; case HIDUsageGD.Hatswitch: HatPosition position = GetJoystickHat(val, elem); JoystickHat hat = TranslateJoystickHat(joy, elem); if (hat >= JoystickHat.Hat0 && hat <= JoystickHat.Last) { joy.State.SetHat(hat, new JoystickHatState(position)); } break; } break; case HIDPage.Simulation: switch ((HIDUsageSim)usage) { case HIDUsageSim.Rudder: case HIDUsageSim.Throttle: short offset = GetJoystickAxis(val, elem); JoystickAxis axis = TranslateJoystickAxis(usage); if (axis >= JoystickAxis.Axis0 && axis <= JoystickAxis.Last) { joy.State.SetAxis(axis, offset); } break; } break; case HIDPage.Button: { bool pressed = GetJoystickButton(val, elem); JoystickButton button = TranslateJoystickButton(joy, usage); if (button >= JoystickButton.Button0 && button <= JoystickButton.Last) { joy.State.SetButton(button, pressed); } } break; } }
JoystickData CreateJoystick(IntPtr sender, IntPtr device) { JoystickData joy = null; // Retrieve all elements of this device CFArrayRef element_array_ref = NativeMethods.IOHIDDeviceCopyMatchingElements(device, IntPtr.Zero, IntPtr.Zero); if (element_array_ref != IntPtr.Zero) { joy = new JoystickData(); int axes = 0; int buttons = 0; int hats = 0; CFStringRef name_ref = NativeMethods.IOHIDDeviceGetProperty(device, NativeMethods.IOHIDProductKey); string name = CF.CFStringGetCString(name_ref); Guid guid = CreateJoystickGuid(device, name); List<int> button_elements = new List<int>(); List<IOHIDElementRef> hat_elements = new List<CFAllocatorRef>(); CFArray element_array = new CFArray(element_array_ref); for (int i = 0; i < element_array.Count; i++) { IOHIDElementRef element_ref = element_array[i]; IOHIDElementType type = NativeMethods.IOHIDElementGetType(element_ref); HIDPage page = NativeMethods.IOHIDElementGetUsagePage(element_ref); int usage = NativeMethods.IOHIDElementGetUsage(element_ref); switch (page) { case HIDPage.GenericDesktop: switch ((HIDUsageGD)usage) { case HIDUsageGD.X: case HIDUsageGD.Y: case HIDUsageGD.Z: case HIDUsageGD.Rx: case HIDUsageGD.Ry: case HIDUsageGD.Rz: case HIDUsageGD.Slider: case HIDUsageGD.Dial: case HIDUsageGD.Wheel: axes++; break; case HIDUsageGD.Hatswitch: hats++; hat_elements.Add(element_ref); break; } break; case HIDPage.Simulation: switch ((HIDUsageSim)usage) { case HIDUsageSim.Rudder: case HIDUsageSim.Throttle: axes++; break; } break; case HIDPage.Button: button_elements.Add(usage); break; } } if (axes > JoystickState.MaxAxes) { Debug.Print("[Mac] JoystickAxis limit reached ({0} > {1}), please report a bug at http://www.opentk.com", axes, JoystickState.MaxAxes); axes = JoystickState.MaxAxes; } if (buttons > JoystickState.MaxButtons) { Debug.Print("[Mac] JoystickButton limit reached ({0} > {1}), please report a bug at http://www.opentk.com", buttons, JoystickState.MaxButtons); buttons = JoystickState.MaxButtons; } if (hats > JoystickState.MaxHats) { Debug.Print("[Mac] JoystickHat limit reached ({0} > {1}), please report a bug at http://www.opentk.com", hats, JoystickState.MaxHats); hats = JoystickState.MaxHats; } joy.Name = name; joy.Guid = guid; joy.State.SetIsConnected(true); joy.Capabilities = new JoystickCapabilities(axes, buttons, hats, true); // Map button elements to JoystickButtons for (int button = 0; button < button_elements.Count; button++) { joy.ElementUsageToButton.Add(button_elements[button], JoystickButton.Button0 + button); } for (int hat = 0; hat < hat_elements.Count; hat++) { joy.ElementToHat.Add(hat_elements[hat], JoystickHat.Hat0 + hat); } } CF.CFRelease(element_array_ref); return joy; }
JoystickData CreateJoystick(IntPtr sender, IntPtr device) { JoystickData joy = null; // Retrieve all elements of this device CFArrayRef element_array_ref = NativeMethods.IOHIDDeviceCopyMatchingElements(device, IntPtr.Zero, IntPtr.Zero); if (element_array_ref != IntPtr.Zero) { joy = new JoystickData(); int axes = 0; int buttons = 0; int dpads = 0; CFStringRef name_ref = NativeMethods.IOHIDDeviceGetProperty(device, NativeMethods.IOHIDProductKey); string name = CF.CFStringGetCString(name_ref); Guid guid = CreateJoystickGuid(device, name); List<int> button_elements = new List<int>(); CFArray element_array = new CFArray(element_array_ref); for (int i = 0; i < element_array.Count; i++) { IOHIDElementRef element_ref = element_array[i]; IOHIDElementType type = NativeMethods.IOHIDElementGetType(element_ref); HIDPage page = NativeMethods.IOHIDElementGetUsagePage(element_ref); int usage = NativeMethods.IOHIDElementGetUsage(element_ref); switch (page) { case HIDPage.GenericDesktop: switch ((HIDUsageGD)usage) { case HIDUsageGD.X: case HIDUsageGD.Y: case HIDUsageGD.Z: case HIDUsageGD.Rx: case HIDUsageGD.Ry: case HIDUsageGD.Rz: case HIDUsageGD.Slider: case HIDUsageGD.Dial: case HIDUsageGD.Wheel: axes++; break; case HIDUsageGD.Hatswitch: dpads++; break; } break; case HIDPage.Simulation: switch ((HIDUsageSim)usage) { case HIDUsageSim.Rudder: case HIDUsageSim.Throttle: axes++; break; } break; case HIDPage.Button: button_elements.Add(usage); break; } } joy.Name = name; joy.Guid = guid; joy.State.SetIsConnected(true); joy.Capabilities = new JoystickCapabilities(axes, buttons, true); // Map button elements to JoystickButtons for (int button = 0; button < button_elements.Count; button++) { joy.ElementUsageToButton.Add(button_elements[button], JoystickButton.Button0 + button); } } CF.CFRelease(element_array_ref); return joy; }
private void OnMoveStart(JoystickData data) { //OnMovementDataReceived(data); _hasMoved = false; }
private void OnMoveEvent(JoystickData data) { OnMovementDataReceived(data); }
public virtual void ReportReceived(JoystickData report) { Console.WriteLine("Data received."); }
private void OnMoveEnd(JoystickData data) { StopMoving(); }