Software Captacion Datos (multi-Simuladores) + Arduino

Otros sistemas para obtener Displays. (Software, plugins...etc)

Moderador: XRStaff

jaht
Espectador
Espectador
Mensajes: 19
Registrado: 10 Feb 2017 07:33
Volante: G27 con cambio

Re: Software Captacion Datos (multi-Simuladores) + Arduino

Mensaje por jaht »

Hola chicos.
Por fin encontré lo que queria.
Después de analizar Simhub(por sugerencia de Vojvoda), SimDash de Symprojects, X-sim (por sujerencia de Psarias, de 900grados.es) no me convencia nada. Todo andaba enfocado a arduino, no se explica de donde salen las cosas, que se envia por el puerto serie (hay que ir buceando en los códigos de arduino), y con la premisa de hacer todo en código abierto, encontré en un foro la referencia a un trabajo de ArduinoRacingDash

El código en cuestión es
https://github.com/WarriorOfAvalon/ArduinoRacingDash
Lo primero que pensé era en usar la iRacingSdkWrapper.dll en mi entorno de programación en QT y tras pasar unas horas buscando y no tenerlo claro no me ha quedado mas remedio que aceptar usar C#.
Hay un pdf que explica bien el funcionamiento de la dll, e incluso he llegado a encontrar una versión en python que tampoco domino.

Me he instalado el Visual Studio 2017, pero me petaban los programas descargados, asi que he instalado el Visual Studio 2013 y voila, ya tengo un código en C# que saca los datos del juego y los puede enviar a mi pantalla.

La primera curiosidad que he visto es que el código espera una placa arduino, como la mia no es, menos mal que he visto el fuente y lo cambiaré para que use lo que yo quiera.

for (int i = 0; i < cbo.Items.Count; i++)
{
if (cbo.Items.ToString().Contains("Arduino"))
{
String port = Regex.Match(cbo.Items.ToString(), @"\(([^)]*)\)").Groups[1].Value;
console("Found Arduino On Port: " + port);
startMethod(port);

for (int j = 0; j < SerialPort.GetPortNames().Length; j++)
{
if (SerialPort.GetPortNames()[j].Equals(port))
startPort = j;
}

break;
}
}

Por otro lado tengo control total sobre que se envía a mi placa y en que posiciones.

public byte[] compile(Boolean spdUnit, int intensity){

int iSpeed = spdUnit ? Convert.ToInt16(Speed * 2.23693629) : Convert.ToInt16(Speed * (2.23693629 * 1.609344));
int iShift = Convert.ToInt16(Math.Round((Shift * 100 * 16) / 100));

serialdata[0] = 255;
serialdata[1] = Convert.ToByte((DeltaNeg << 7) | (intensity << 4) | 0);
serialdata[2] = Convert.ToByte(Gear + 1);
serialdata[3] = Convert.ToByte((iSpeed >> 8) & 0x00FF);
serialdata[4] = Convert.ToByte(iSpeed & 0x00FF);
serialdata[5] = Convert.ToByte((RPM >> 8) & 0x00FF);
serialdata[6] = Convert.ToByte(RPM & 0x00FF);
serialdata[7] = Convert.ToByte((Fuel >> 8) & 0x00FF);
serialdata[8] = Convert.ToByte(Fuel & 0x00FF);
serialdata[9] = Convert.ToByte(iShift);
serialdata[10] = Engine;
serialdata[11] = Convert.ToByte(Lap);
serialdata[12] = 0;
serialdata[13] = Convert.ToByte((Delta >> 8) & 0x00FF);
serialdata[14] = Convert.ToByte(Delta & 0x00FF);
serialdata[15] = Convert.ToByte(Mins);
return serialdata;

Espero tenerlo listo este fin de semana para el Iracing el leer los datos y mandarlos a mi pantalla.

Para los botones y rotarys he pensado en un software que los mapee como un jostick y asignarlos dentro del juego, pero eso es la segunda parte.

En cuanto tenga imágenes lo pongo, y si alguien se anima crearé un repositorio en Github (nunca lo he usado, supongo se podrá) para que pueda colaborar, y sino cuando lo termine lo colgaré de todos modos con todos los fuentes y referencias a los trabajos de donde he partido.
Sito206
Primeras curvas
Primeras curvas
Mensajes: 131
Registrado: 09 Jun 2012 14:36
Volante: Thrustmaster TS-PC Racer
Ubicación: Cádiz
Contactar:

Re: Software Captacion Datos (multi-Simuladores) + Arduino

Mensaje por Sito206 »

jaht escribió: 14 Abr 2017 20:40 Bueno, ya me he leido todo el hilo.
Me he bajado el InPut 0.0.7 y los plugins de rfactor.
Ahora programaré un puerto serie en mi placa y a leer datos. Por lo que he podido entender el input manda datos sin parar por el puerto serie en formato ascii, separando con letras cada dato.
Lo que no he visto es el enviarle los botones de mi placa al juego.
He encontrado como hacer una dll de rfactor con rfInternalsPluginsV3.
El programa InPutDataFisic veo que está hecho en Visual C. No me llevo muy bien con Visual C. Lo he usado pero he estado muchos años con Borland y ahora trabajo con QT. Mi intención era hacer un programa como el se Sito en QT.
También he visto que Vojvoda propone relanzar este hilo de nuevo.

Mi idea es llegar a algo como esto

Gastando lo menos posible y publicar todo para que cualquiera pueda llegar a hacerlo.

Saludos
Hola.

Es c# no C. Por otro lado no uso los botones de la placa ni recojo sus pulsos, que seria fácil hacerlo, lo que yo uso son los botones del volante para interactuar con arduino.

De lo poco que me falta ( o mucho ) , es incluir IRACING .

Tengo el proyecto algo parado por el foro, peto me pongo en mis ratos libres... que no son muchos ahora.

Saludos

Código: Seleccionar todo

if(!borracho)
{
MessageBox.Show("Disfruta conduciendo, no podemos conducir por ti");
}
else
{
MessageBox.Show("Hoy toca bus");
}
jaht
Espectador
Espectador
Mensajes: 19
Registrado: 10 Feb 2017 07:33
Volante: G27 con cambio

Re: Software Captacion Datos (multi-Simuladores) + Arduino

Mensaje por jaht »

Hola Sito
Gracias por contestar.
Ya se que C# no es C, ni siquiera C++. He trabajado mucho en C, y para objetos o clases Delphi. C# es la apuesta de Microsoft frente al Java de Sun.
Lo de que los botones es facil hacerlo, no lo sé. He pensado en que cuando quite el volante y ponga el mio, parte de los botones los cablearé a la placa del G27. Pero los rotarys los leeré con mi micro y los enviaré por USB al programa de PC que estoy preparando. Lo que entiendo es que no es sencillo poner esos datos en la memoria. Para sacar datos del Iracing se leen de la memoria con la dll iRacingSdkWrapper.dll. Pero poner datos en la memoria del juego es otra cosa. Supongo que está muy capado para impedir que la gente haga trampas jugando y que la solución es que se vea como un josticg mi placa y asignarle funciones en el juego.

Para el Iracing el proyecto iRacingSLI dentro de ArduinoRacingDash es el que demuestra como usar la dll y las clase de telemetría y información de sesión.

Espero el lunes poder subir un video funcionando el Iracing con mi pantalla.

Saludos
Sito206
Primeras curvas
Primeras curvas
Mensajes: 131
Registrado: 09 Jun 2012 14:36
Volante: Thrustmaster TS-PC Racer
Ubicación: Cádiz
Contactar:

Re: Software Captacion Datos (multi-Simuladores) + Arduino

Mensaje por Sito206 »

Para enviar comando de teclas a un juego usa "sendkeys ".

Swtich (botonRecibido)
{
case "repartoFrenada":
sendKeys.send("Q"); //Q sería la tecla asignada en el juego para el repartí de frenada
Break;

case..... //resto de código

Código: Seleccionar todo

if(!borracho)
{
MessageBox.Show("Disfruta conduciendo, no podemos conducir por ti");
}
else
{
MessageBox.Show("Hoy toca bus");
}
jaht
Espectador
Espectador
Mensajes: 19
Registrado: 10 Feb 2017 07:33
Volante: G27 con cambio

Re: Software Captacion Datos (multi-Simuladores) + Arduino

Mensaje por jaht »

Gracias Sito por el apunte. Lo probaré en cuanto pueda.

De momento, gracias a este fin de semana largo ya he conseguido que me comunicara mi placa con el PC (me dio la lata el sábado que no se veia, al final tema de cloks de la placa), y luego me ha llevado unas cuantas horas añadir a la pantalla una fuente de letra mas grande de las que lleva nativas solo para la puñetera marcha (todo por un número) pero bueno, ya está funcionando con Iracing. Ahora a dar formato a los datos de tiempo. En el video que os pongo se envia la marcha, la vuelta, el fuel (que no se en que unidades está) y la velocidad.



En el vídeo se ven dos USB uno es el de cargar el software a la placa y el otro es el de comunicación de la placa con el PC

Voy a ir preparando también una placa con los botones y rotarys y los led para las revoluciones.
jaht
Espectador
Espectador
Mensajes: 19
Registrado: 10 Feb 2017 07:33
Volante: G27 con cambio

Re: Software Captacion Datos (multi-Simuladores) + Arduino

Mensaje por jaht »

Bueno, para los que querais ver como evoluciona mi volante, lo teneis en el hilo

viewtopic.php?f=45&t=12368
jaht
Espectador
Espectador
Mensajes: 19
Registrado: 10 Feb 2017 07:33
Volante: G27 con cambio

Re: Software Captacion Datos (multi-Simuladores) + Arduino

Mensaje por jaht »

Ya va tomando forma



Imagen

Un poco desastre el cableado, pero es el primer prototipo.

Imagen

La idea es terminarlo y con todo resuelto y funcionando, ver las mejoras (que serán muchas)
Titobial
Espectador
Espectador
Mensajes: 2
Registrado: 03 Jul 2017 20:41
Volante: THRUSTMASTER TMX

Re: Software Captacion Datos (multi-Simuladores) + Arduino

Mensaje por Titobial »

(No encuentro el tema apropiado, lo siento. A ver si me podeis echar un cable).
Hola! Tengo un simulador 2dof construido con arduino, moto monsther y x-Sim. Y me funcionaba bien. El tema es que he cambiado a las IBT2 para alimentar cada motor a 24v y ya no va igual. Tengo que cambiar el firmrware a la Arduino? Por otro lado, para usar el Simtools,(ya tengo la licencia) es el mismo cableado y conexionado? Muchas gracias por vuestra ayuda e interes. Un saludo.Héctor.
Responder