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);
    }
Beispiel #4
0
 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));
    }
Beispiel #7
0
        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);
        }
Beispiel #8
0
 private void OnMovementDataReceived(JoystickData data)
 {
     IsMoving = _canMoveCheck.Invoke() && (data.Direction.magnitude > _minimumJoystickMagnitude);
     if (!IsMoving)
     {
         return;
     }
     if (!_hasMoved)
     {
         _controller.OnStartMoving();
     }
     _hasMoved = true;
     _moveData = data;
 }
Beispiel #9
0
        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);
            }
        }
Beispiel #10
0
        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;
 }
Beispiel #13
0
 static JoystickHat TranslateJoystickHat(JoystickData joy, IOHIDElementRef elem)
 {
     JoystickHat hat;
     if (joy.ElementToHat.TryGetValue(elem, out hat))
     {
         return hat;
     }
     return JoystickHat.Last + 1;
 }
Beispiel #14
0
 static JoystickButton TranslateJoystickButton(JoystickData joy, int usage)
 {
     JoystickButton button;
     if (joy.ElementUsageToButton.TryGetValue(usage, out button))
     {
         return button;
     }
     return JoystickButton.Last + 1;
 }
Beispiel #15
0
        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;
            }
        }
Beispiel #16
0
        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;
        }
Beispiel #17
0
        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;
        }
Beispiel #18
0
 private void OnMoveStart(JoystickData data)
 {
     //OnMovementDataReceived(data);
     _hasMoved = false;
 }
Beispiel #19
0
 private void OnMoveEvent(JoystickData data)
 {
     OnMovementDataReceived(data);
 }
 public virtual void ReportReceived(JoystickData report)
 {
     Console.WriteLine("Data received.");
 }
Beispiel #21
0
 private void OnMoveEnd(JoystickData data)
 {
     StopMoving();
 }