コード例 #1
0
ファイル: Form1.cs プロジェクト: bli19/dronespersonalizados
        private void backgroundWorker_joystick_DoWork(object sender, DoWorkEventArgs e)
        {
            while (true)
            {
                Thread.Sleep(10);
                try
                {
                    Gamepad_State_SlimDX joy = new Gamepad_State_SlimDX(SlimDX.XInput.UserIndex.One);
                    joy.Update();

                    joystick js = new joystick();
                    js.pitch    = (Int16)(joy.LeftStick.Position.Y * 250);
                    js.roll     = (Int16)(joy.LeftStick.Position.X * 250);
                    js.throttle = (Int16)(joy.RightStick.Position.Y * 10);
                    js.yaw      = (Int16)(joy.RightStick.Position.X * 250);

                    if (joy.B)
                    {
                        js.emergency = 1;
                    }
                    else
                    {
                        js.emergency = 0;
                    }

                    if (joy.A)
                    {
                        js.takeoff = 1;
                    }
                    else
                    {
                        js.takeoff = 0;
                    }

                    string json = JsonConvert.SerializeObject(js);

                    udp_send_recv(3000, json, 5);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }
            }
        }
コード例 #2
0
ファイル: Game.cs プロジェクト: bli19/dronespersonalizados
        public void OnRenderFrame(object s, FrameEventArgs e)
        {
            Gamepad_State_SlimDX joy = new Gamepad_State_SlimDX(SlimDX.XInput.UserIndex.One);

            joy.Update();

            node.Pitch(joy.LeftStick.Position.Y);
            node.Roll(joy.LeftStick.Position.X);
            node.Yaw(joy.RightStick.Position.X);


            node.Position += new Vector3(0, joy.RightStick.Position.Y, 0);

            if (node.Position.y < 25)
            {
                node.Position = new Vector3(node.Position.x, 25, node.Position.z);
            }

            HandleKeyboardInput(e);
        }
コード例 #3
0
        static void Main(string[] args)
        {
            try
            {
                Gamepad_State_SlimDX joy  = new Gamepad_State_SlimDX(SlimDX.XInput.UserIndex.One);
                SerialPort           port = new SerialPort();
                port.PortName = "COM4";
                port.BaudRate = 115200;
                port.Open();

                while (true)
                {
                    joy.Update();


                    string cmd = "pilot(";
                    cmd += range_get(joy.LeftStick.Position.X, 0, 254);
                    cmd += ",";
                    cmd += range_get(joy.LeftStick.Position.Y, 0, 254);
                    cmd += ",";
                    cmd += range_get(joy.RightStick.Position.X, 0, 254);
                    cmd += ",";
                    cmd += range_get(joy.RightStick.Position.Y, 0, 254);
                    cmd += ",";

                    if (joy.A)
                    {
                        cmd += "1";
                    }
                    else
                    {
                        cmd += "0";
                    }

                    cmd += ",";

                    if (joy.B)
                    {
                        cmd += "1";
                    }
                    else
                    {
                        cmd += "0";
                    }

                    cmd += ")";

                    //Console.Write(cmd);

                    DateTime t_start = DateTime.Now;
                    port.DiscardOutBuffer();
                    port.DiscardInBuffer();
                    port.ReadTimeout = 30;
                    port.WriteLine(cmd + "\r");
                    try
                    {
                        string txt = port.ReadTo("ok");
                        Console.Write(txt.Replace("\r", "").Replace("\n", ""));
                        TimeSpan diff = DateTime.Now - t_start;
                        Console.WriteLine(" dt=" + diff.TotalMilliseconds);
                    }
                    catch (Exception) {
                        TimeSpan diff = DateTime.Now - t_start;
                        Console.WriteLine(" dt=" + diff.TotalMilliseconds);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.ReadKey();
            }
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: bli19/dronespersonalizados
        static void Main(string[] args)
        {
            while (true)
            {
                try
                {
                    Gamepad_State_SlimDX joy       = new Gamepad_State_SlimDX(SlimDX.XInput.UserIndex.One);
                    UdpClient            udpClient = new UdpClient();

                    udpClient.Connect("192.168.1.1", 3000);

                    Int16 pitch_now    = 0;
                    Int16 roll_now     = 0;
                    Int16 yaw_now      = 0;
                    Int16 throttle_now = 0;
                    Int16 emergency    = 0;
                    Int16 takeoff      = 0;

                    int    tx_count         = 0;
                    int    tx_timeout_count = 0;
                    double timeouts_perct   = 0;

                    while (true)
                    {
                        joy.Update();

                        pitch_now    = (Int16)(joy.LeftStick.Position.Y * 128);
                        roll_now     = (Int16)(joy.LeftStick.Position.X * 128);
                        yaw_now      = (Int16)(joy.RightStick.Position.X * 128);
                        throttle_now = (Int16)(joy.RightStick.Position.Y * 128);

                        emergency = 0;
                        if (joy.B || joy.RightTrigger > 0.5)
                        {
                            emergency = 1;
                        }

                        takeoff = 0;
                        if (joy.A)
                        {
                            takeoff = 1;
                        }

                        //
                        string cmd = pitch_now + "|" + roll_now + "|" + throttle_now + "|" + yaw_now + "|" + takeoff + "|" + emergency + "|";

                        //
                        //Console.WriteLine(cmd);

                        //
                        Byte[] sendBytes = Encoding.ASCII.GetBytes(cmd);
                        udpClient.Send(sendBytes, sendBytes.Length);
                        tx_count++;
                        DateTime start = DateTime.Now;

                        while (true)
                        {
                            TimeSpan timeItTook = DateTime.Now - start;
                            if (timeItTook.Milliseconds > 17) //1s/60Hz=16.66ms
                            {
                                tx_timeout_count++;
                                timeouts_perct = ((double)tx_timeout_count / (double)tx_count) * 100;
                                Console.WriteLine("pkt=" + tx_count + " rtt timeouts=" + tx_timeout_count + " (" + timeouts_perct + "%)");
                                break;
                            }
                            if (udpClient.Available > 0)
                            {
                                IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
                                Byte[]     receiveBytes     = udpClient.Receive(ref RemoteIpEndPoint);
                                Console.WriteLine("pkt=" + tx_count + " rtt=" + timeItTook.TotalMilliseconds + " timeouts=" + tx_timeout_count + " (" + timeouts_perct + "%)");
                                break;
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }
            }
        }