Foro x-plane.es

Foro General => X-Plane10 => Mensaje iniciado por: alnloras en 03 Julio, 2016, 19:13:20



Título: UDP VEH1/VEHA
Publicado por: alnloras en 03 Julio, 2016, 19:13:20
Hola compañeros.

Soy nuevo por estos lares y por el mundo de x-plane 10.
Estoy intentando conseguir colocar mi avión en localizaciones y posiciones que yo quiera, de forma automática con mi propio programa en c# y usando Visual Studio 2013.
De momento he conseguido recibir todos los datos que quiero por UDP pero al intentar cargar de la misma forma los datos de pitch/roll/lat/lon/ etc. Solo cambian cuando el simulador está pausado.

En la información del juego he encontrado que hay que utilizar la estructura VEH1/VEHA, pero no entiendo bien como usarlas...

Podríais indicarme como se usan o un tutorial donde lo haga?

Muchas gracias de antemano  ;)


Título: Re: UDP VEH1/VEHA
Publicado por: Juanjo463 en 03 Julio, 2016, 22:33:11
Bienvenido al foro.

Creo que lo primero es leer el tutorial de uso del foro y presentarte en la sección correspondiente.


Título: Re: UDP VEH1/VEHA
Publicado por: alnloras en 04 Julio, 2016, 07:35:20
Bienvenido al foro.

Creo que lo primero es leer el tutorial de uso del foro y presentarte en la sección correspondiente.

Perdona Juanjo463 tienes razón, dónde están mis modales ;)

Ya me presenté en la sección correspondiente.


Título: Re: UDP VEH1/VEHA
Publicado por: alnloras en 05 Julio, 2016, 09:05:22
Hola compañeros.

Soy nuevo por estos lares y por el mundo de x-plane 10.
Estoy intentando conseguir colocar mi avión en localizaciones y posiciones que yo quiera, de forma automática con mi propio programa en c# y usando Visual Studio 2013.
De momento he conseguido recibir todos los datos que quiero por UDP pero al intentar cargar de la misma forma los datos de pitch/roll/lat/lon/ etc. Solo cambian cuando el simulador está pausado.

En la información del juego he encontrado que hay que utilizar la estructura VEH1/VEHA, pero no entiendo bien como usarlas...

Podríais indicarme como se usan o un tutorial donde lo haga?

Muchas gracias de antemano  ;)

Una ayudita de alguien que sepa, por favor  :'(


Título: Re: UDP VEH1/VEHA
Publicado por: Cestomano en 05 Julio, 2016, 11:40:44
Los siento, mis conocimientos no llegan hasta ese punto...  :(


Título: Re: UDP VEH1/VEHA
Publicado por: jorduran en 05 Julio, 2016, 18:34:36
Quizas mejor preguntar en el foro del .ORG


Título: Re: UDP VEH1/VEHA
Publicado por: grrr05 en 05 Julio, 2016, 21:20:25
Yo tampoco conozco el C ni ninguna de sus variantes, pero creo que te estas complicando la vida o no has entendiro bien eso del VEH1/VEHA, que por lo que acabo de leer es sólo para aviones de la IA.

Tenía por ahí algunos scripts en C++ creados partiendo de unos ejemplos encontrados para Arduino y no era tan complicado enviar y recibir mensajes UDP, tenía un par de ellos para funciones sencillas como subir y bajar el tren y que se encendieran los leds (comunicación bidireccional). Sólo era cuestión de enviar la cadena correctamente con sus dataref correspondientes.

Lo que tienes que mirar es la estructura DREF.


Título: Re: UDP VEH1/VEHA
Publicado por: alnloras en 15 Julio, 2016, 10:53:06
Yo tampoco conozco el C ni ninguna de sus variantes, pero creo que te estas complicando la vida o no has entendiro bien eso del VEH1/VEHA, que por lo que acabo de leer es sólo para aviones de la IA.

Tenía por ahí algunos scripts en C++ creados partiendo de unos ejemplos encontrados para Arduino y no era tan complicado enviar y recibir mensajes UDP, tenía un par de ellos para funciones sencillas como subir y bajar el tren y que se encendieran los leds (comunicación bidireccional). Sólo era cuestión de enviar la cadena correctamente con sus dataref correspondientes.

Lo que tienes que mirar es la estructura DREF.


Al parecer haciendolo por DREF está el problema de que solo se puede modificar las coordenadas locales (He conseguido modifcarlo de por este modo) y la lat,lon habría que usar el SDK pero quiero poder hacer mi propia app por UDP. Existe otra función VHE1 y VHEA pero por más que lo intento no consigo que lo cambie.

Os dejo el código a ver si veis donde puede estar el fallo (también lo he publicado en xplane.org)

 static void Main(string[] args)
        {
            TextReader tr = new StreamReader(@"C:\Proyectos\X-Plane10 Load\X-Plane10 Load\DataList.text");

            UdpClient server = new UdpClient("127.0.0.1", 49000);

            //X-Plane VEH1 Packet Structure
            // 57 bytes
            byte[] XPData = new byte[57];
            byte[] pitchArray;
           
           
           while (true)
           {
                   
                    // Header
                    pitchArray = Encoding.ASCII.GetBytes("VEH10");
                    int count = 0;
                    foreach (var Byte in pitchArray)
                    {
                        XPData[count] = Byte;
                        count++;
                    }

                    // Index
                    pitchArray = BitConverter.GetBytes(0);
                    foreach (var Byte in pitchArray)
                    {
                        XPData[count] = Byte;
                        count++;
                    }
                 

                    // Latitude
                    pitchArray = BitConverter.GetBytes(32.07);
                    foreach (var Byte in pitchArray)
                    {
                        XPData[count] = Byte;
                        count++;
                    }

                    // Longitude
                    pitchArray = BitConverter.GetBytes(73.76);
                    foreach (var Byte in pitchArray)
                    {
                        XPData[count] = Byte;
                        count++;
                    }

                    // Altitude
                    pitchArray = BitConverter.GetBytes(2292.0);
                    foreach (var Byte in pitchArray)
                    {
                        XPData[count] = Byte;
                        count++;
                    }

                    // Pitch
                    Console.WriteLine(Convert.ToSingle(tr.ReadLine()));
                    pitchArray = BitConverter.GetBytes(0);
                    foreach (var Byte in pitchArray)
                    {
                        XPData[count] = Byte;
                        count++;
                    }


                    // Roll
                    Console.WriteLine(Convert.ToSingle(tr.ReadLine()));
                    pitchArray = BitConverter.GetBytes(0);
                    foreach (var Byte in pitchArray)
                    {
                        XPData[count] = Byte;
                        count++;
                    }

                   
                    // True Heading
                    pitchArray = BitConverter.GetBytes(0);
                    foreach (var Byte in pitchArray)
                    {
                        XPData[count] = Byte;
                        count++;
                    }


                    // Gear 0/1
                    pitchArray = BitConverter.GetBytes(0);
                    foreach (var Byte in pitchArray)
                    {
                        XPData[count] = Byte;
                        count++;
                    }

                    // Flap 0/1
                    pitchArray = BitConverter.GetBytes(0);
                    foreach (var Byte in pitchArray)
                    {
                        XPData[count] = Byte;
                        count++;
                    }

                    // Vect 0/1
                    pitchArray = BitConverter.GetBytes(0);
                    foreach (var Byte in pitchArray)
                    {
                        XPData[count] = Byte;
                        count++;
                    }
         
             
                    server.Send(XPData, XPData.Length);
                    System.Threading.Thread.Sleep(2000);
                    //Console.ReadKey(true);

            }

           

           
            //Console.ReadKey(true); // Wait for keypress to close program
            //server.Close();
           

        } // End Main




LOG.txt

WE ARE SENDING     0.00 kilo-bytes per second (1,200 kilo-bytes per second is a low-end LAN)
WE ARE RECEIVING   0.03 kilo-bytes per second (1,200 kilo-bytes per second is a low-end LAN)
time=  8617.9, RECV label=VEH1 fr IP 127.0.0.1-50720. Length after packaging removal=52
time=  8618.0, RECV label=BECN fr IP 169.254.249.184-49001. Length after packaging removal=20