Software Captacion Datos (multi-Simuladores) + Arduino

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

Moderador: XRStaff

Avatar de Usuario
txinas
Primeras curvas
Primeras curvas
Mensajes: 127
Registrado: 07 Feb 2013 21:22
Volante: TS-.PC RACER

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

Mensaje por txinas »

No te va a sacar el dato del cambio por un fallo. Lleva asi mucho tiempo. Tendras q sacar con otro programa.
#FORSA JULES
Avatar de Usuario
Jaio
Espectador
Espectador
Mensajes: 16
Registrado: 27 Ago 2016 23:47
Volante: logitech momo racing

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

Mensaje por Jaio »

txinas escribió:No te va a sacar el dato del cambio por un fallo. Lleva asi mucho tiempo. Tendras q sacar con otro programa.
Si amigo note q lleva mucho tiempo este tema sin actualizacion.. y el creador del software al parecer abandono el tema pero indagando note q el dato lo saca muy inestablemente por la via de configuracion Arduino + Lkm1638

Imagen

y la trama de datos esta estructurada asi:
Speed 3 digitos, (S000) RPM 4 digitos (R0000) y Marcha "GEAR" 1 Digito (G0)

quedando la salida serial asi: "S000R0000G0"

Cosa q para las marchas hay un detalle el cual ya logra hacer funcional pero solo con las marchas de Neutral y las velocidades del 1-9 pero por ejemplo en Dirt3 q es el q estoy usando para la funcion de "Retroseso"... Dicho juego envia el valor de "10" por lo cual cuan al ser un solo digito el programa InPutDataFisic solo encia 1 digito Ejemplo... (G0 = Neutral, G1-9 Velocidades y la falla es con Retroceso q al ser "10" este solo envia G1 anulando el "0" del final y cuando meto marcha atras me marca solo un "1" en el Display... :llorar:

Asi q lamentablemente asi como hice con mi programa tendre q extraer la telemetria del InPutDataFisic asi como hacia OUTSIMDirt2...

porq no consigo como descopilar el programa cosa q no veo nada facil para reeditarlo y retomar el proyecto del Autor del programa...

y perdon por haberte reportado confundi el boton de responder y reportar.... :roll:
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 »

Hola a todos.

Mi última versión fue esta, la 0.0.0.6

https://mega.nz/#!IY01gRzC!KpDJKrGZqFlu ... JexI8VPeZ4

Código: Seleccionar todo

if(!borracho)
{
MessageBox.Show("Disfruta conduciendo, no podemos conducir por ti");
}
else
{
MessageBox.Show("Hoy toca bus");
}
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 »

Hola


Hardware

Ajustes para Arduino y otros equipos conectados
Imagen
Imagen



Mas Hardware

Ajustes para Arduino y placa LKM1638

TM1638 -> Arduino
------------------
VCC -> 5v
GND -> GND
CLK -> Pin 9
DIO -> Pin 8
STB0 -> Pin 7

Imagen

Libreria TM1638

Pincha para ir a la descarga Libreria TM1638

Code for Arduino and LKM1638
#include <TM1638.h>
TM1638 module(8, 9, 7);
int rpm_maxima = 8800;
boolean parpadea = false;
long previousMillis = 0;
long interval = 50;
long intervalPit = 100;
long intervalo_v = 500;
long VMillis = 0;
int Button;
int ModeIzquierda = 0;
int ModeDerecha = 0;
int Agua;
int Oil;
int Fuel;
int Gear;
int Rpm;
int Speed;
int ultima_vuelta_tiempo = -1;
int ultima_vuelta_tiempo_m = -1;
int PitLine = 0;
unsigned long currentMillis;
unsigned long currentMillisV;
boolean encendido_tiempo = false;
int numero_veces = 0;

int pos_speed = 5;
int pos_rpm = 0;
int pos_gear = 0;
int pos_fuel = 0;
int pos_agua = 0;
int pos_oil = 0;

int leds[] = { 0b0000000000000000, 0b0000000000000000, 0b0000000000000000, 0b0000000000000001, 0b0000000000000011, 0b0000000000000111, 0b0000000000001111, 0b0000000000011111, 0b0010000000011111, 0b0110000000011111, 0b1110000000011111, 0b1111111100000000, 0b1111111100000000};

void setup()
{
Serial.begin(38500);
}

void loop()
{
while(Serial.available() > 1)
{

char comandos = Serial.read();
if (comandos == 'S') Speed = Serial.parseInt();
if (comandos == 'R') Rpm = Serial.parseInt();
if(comandos == 'G') Gear = Serial.parseInt();
if(comandos == 'A') Agua = Serial.parseInt();
if(comandos == 'O') Oil = Serial.parseInt();
if(comandos == 'F') Fuel = Serial.parseInt();
if(comandos == 'C') Button = Serial.parseInt();
if(comandos == 'P') PitLine = Serial.parseInt();
if(comandos == 'M') rpm_maxima = Serial.parseInt();
if(comandos == 'T') ultima_vuelta_tiempo = Serial.parseInt();
if(comandos == 'N') ultima_vuelta_tiempo_m = Serial.parseInt();

}


if(ultima_vuelta_tiempo > 0 && ultima_vuelta_tiempo_m > 0)
{
rpm_luz(Rpm);
currentMillisV = millis();
if(currentMillisV - VMillis > intervalo_v)
{
VMillis = currentMillisV;
if(encendido_tiempo)
{
numero_veces++;
encendido_tiempo = false;

switch(String(ultima_vuelta_tiempo).length())
{
case 2:
module.setDisplayToString("00"+String(ultima_vuelta_tiempo)+String(ultima_vuelta_tiempo_m), 0b01010000, 1);
break;

case 3:
module.setDisplayToString("0"+String(ultima_vuelta_tiempo)+String(ultima_vuelta_tiempo_m), 0b01010000, 1);
break;

case 4:
module.setDisplayToString(String(ultima_vuelta_tiempo)+String(ultima_vuelta_tiempo_m), 0b01010000, 1);
break;
}
}
else
{
encendido_tiempo = true;
module.clearDisplay();

}

if(numero_veces > 8)
{
numero_veces = 0;
ultima_vuelta_tiempo = -1;
ultima_vuelta_tiempo_m = -1;
}

}



}
else
{

switch(PitLine)
{
case 0:
//currentMillisButtons = millis();
// if(currentMillisButtons - ButtonsMillis > intervalo_boton) //if
// {

switch(Button)
{

case 1:
Button = 0;
// ButtonsMillis = currentMillisButtons;
ModeIzquierda++;

module.clearDisplay();

break;

case 2:
Button = 0;
// ButtonsMillis = currentMillisButtons;
ModeDerecha++;


module.clearDisplay();

break;

} //switch(Button)
// } // if(currentMillis - ButtonsMillis > intervalo_boton)

switch(ModeIzquierda)
{
case 0:
pos_rpm = 0;
Read_Rpm();
break;

case 1:
pos_gear = 0;
Read_Gear();
break;

case 2:
pos_fuel = 0;
Read_Fuel();
break;

case 3:
pos_agua = 0;
Read_Agua();
break;

case 4:
pos_oil = 0;
Read_Oil();
break;

case 5:
pos_speed = 0;
Read_Speed();
break;

case 6:
ModeIzquierda = 0;
Read_Rpm();
break;
} //switch(ModeIzquierda)

switch(ModeDerecha)
{
case 0:
pos_speed = 4;
Read_Speed();
break;

case 1:
pos_gear = 4;
Read_Gear();
break;

case 2:
pos_fuel = 4;
Read_Fuel();
break;

case 3:
pos_agua = 4;
Read_Agua();
break;

case 4:
pos_oil = 4;
Read_Oil();
break;

case 5:
pos_rpm = 4;
Read_Rpm();
break;

default:
ModeDerecha =0;
Read_Speed();
break;
} //switch(ModeDerecha)

rpm_luz(Rpm);
break;

case 1:
module.setDisplayToString("LANE", 0, 0);
rpm_luz_pitline();
pos_speed = 4;
Read_Speed();
break;
} //switch(PitLine)
}//else tiempo
} // loop

void Read_Gear()
{
switch(Gear)
{
case 0:
module.setDisplayToString("GN",0b10000000 ,pos_gear);
module.clearDisplayDigit(pos_gear+2, false);
module.clearDisplayDigit(pos_gear+3, false);
break;

case -1:
module.setDisplayToString("GR",0b10000000 ,pos_gear);
module.clearDisplayDigit(pos_gear+2, false);
module.clearDisplayDigit(pos_gear+3, false);
break;

case 9:
module.setDisplayToString("GR",0b10000000 ,pos_gear);
module.clearDisplayDigit(pos_gear+2, false);
module.clearDisplayDigit(pos_gear+3, false);
break;

default:
module.setDisplayToString("G"+String(Gear),0b10000000 ,pos_gear);
module.clearDisplayDigit(pos_gear+2, false);
module.clearDisplayDigit(pos_gear+3, false);
break;
}

}

void Read_Oil()
{
switch(String(Oil).length()+1)
{
case 2:
module.clearDisplayDigit(pos_oil+2, false);
module.clearDisplayDigit(pos_oil+3, false);
break;
case 3:
module.clearDisplayDigit(pos_oil+3, false);
break;

default:

break;

}

module.setDisplayToString("O", 0b10000000, pos_oil);
module.setDisplayToString(String(Oil), 0, pos_oil+1);
}

void Read_Agua()
{
switch(String(Agua).length()+1)
{
case 2:
module.clearDisplayDigit(pos_agua+2, false);
module.clearDisplayDigit(pos_agua+3, false);
break;
case 3:
module.clearDisplayDigit(pos_agua+3, false);
break;

default:

break;

}

module.setDisplayToString("A", 0b10000000, pos_agua);
module.setDisplayToString(String(Agua), 0, pos_agua+1);
}

void Read_Fuel()
{
switch(String(Fuel).length()+1)
{
case 2:
module.clearDisplayDigit(pos_fuel+2, false);
module.clearDisplayDigit(pos_fuel+3, false);
break;
case 3:
module.clearDisplayDigit(pos_fuel+3, false);
break;

default:

break;

}

module.setDisplayToString("F", 0b10000000, pos_fuel);
module.setDisplayToString(String(Fuel), 0, pos_fuel+1);

}

void Read_Speed()
{
if(Speed >= 100)
{
module.setDisplayToString(String(Speed), 0, pos_speed+1); //aquí va tu funcion
module.clearDisplayDigit(pos_speed, false);
}

if(Speed >= 10 && Speed < 100)
{
module.setDisplayToString(String(Speed), 0, pos_speed+2); //aquí va tu funcion
module.clearDisplayDigit(pos_speed, false);
module.clearDisplayDigit(pos_speed+1, false);
}

if(Speed >= 0 && Speed <10)
{
module.setDisplayToString(String(Speed), 0, pos_speed+3); //aquí va tu funcion

module.clearDisplayDigit(pos_speed, false);
module.clearDisplayDigit(pos_speed+1, false);
module.clearDisplayDigit(pos_speed+2, false);
}

}

void Read_Rpm()
{
switch(String(Rpm).length())
{
case 1:
module.clearDisplayDigit(pos_rpm+1, false);
module.clearDisplayDigit(pos_rpm+2, false);
module.clearDisplayDigit(pos_rpm+3, false);
break;
case 2:
module.clearDisplayDigit(pos_rpm+2, false);
module.clearDisplayDigit(pos_rpm+3, false);
break;

case 3:
module.clearDisplayDigit(pos_rpm+3, false);
break;

default:

break;

}

module.setDisplayToString(String(Rpm),0 ,pos_rpm);

}

void rpm_luz_pitline()
{
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > intervalPit)
{
previousMillis = currentMillis;

if(parpadea == false)
{
module.setLEDs(0b0000000011111111);
parpadea = true;
}
else
{
module.setLEDs(leds[0]);
parpadea = false;
}
}
}

void rpm_luz(int rpm_actual)
{
int calculo = map(rpm_actual, 0, rpm_maxima, 0, 100);
if(calculo >= 50 && calculo < 98)
{
int calculo_tmp = map(calculo, 50, 98, 0, 11);
module.setLEDs(leds[calculo_tmp]);
}

if(calculo >=98)
{
//calculo = map(calculo, 50, 100, 0, 13);
currentMillis = millis();
if(currentMillis - previousMillis > interval)
{
previousMillis = currentMillis;

if(parpadea == false)
{
module.setLEDs(leds[12]);
parpadea = true;
}
else
{
module.setLEDs(leds[0]);
parpadea = false;
}
}
}
}
Imagen
Imagen

LKM1638

Imagen

Arduino uno

Imagen

Configurar InPutDataFisic Arduino y lkm1638





Segundo Monitor

Sin Imagen

En otro PC a través de la conexión local



Lista De Juegos Compatibles

Assetto Corsa
Dirt 2
Dirt 3
F1 2010, 11 , 12, 13 and 14
Grid
Grid 2
GTR
GTR 2
Live for speed
nKpro
Race 07 y todas sus expensiones(Race on, Race Injection.... )
rFactor
rFactor 2



Descargar InPutDataFisic

Pincha para ir a la descarga InPutDataFisic V0.0.0.6

Descargar InPutDataFisicMonition (para conectarse a un segundo PC a través de LAN y mostrar los valores )

Pincha para ir a la descarga InPutDataFisicMonition V0.0.0.2

Plugins

Pincha para ir a la descarga rFactor Plugins V1.0

Pincha para ir a la descarga rFactor 2 Plugins V1.0

Otras Versiones

Pincha para ir a la descarga InPutDataFisic V0.0.0.5

Pincha para ir a la descarga InPutDataFisic V0.0.0.4

Saludos!
Última edición por Sito206 el 30 Ago 2016 18:15, editado 1 vez en total.

Código: Seleccionar todo

if(!borracho)
{
MessageBox.Show("Disfruta conduciendo, no podemos conducir por ti");
}
else
{
MessageBox.Show("Hoy toca bus");
}
Avatar de Usuario
Jaio
Espectador
Espectador
Mensajes: 16
Registrado: 27 Ago 2016 23:47
Volante: logitech momo racing

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

Mensaje por Jaio »

Amigo Sito206 Muchas Gracias por retomar el tema y con mucha mas informacion.. ahora me pondre a trabajar de nuevo en mi Tablero... :aplau: :aplausoup:
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 »

Jaio escribió:Amigo Sito206 Muchas Gracias por retomar el tema y con mucha mas informacion.. ahora me pondre a trabajar de nuevo en mi Tablero... :aplau: :aplausoup:
De nada, Cualquier duda estoy por aquí.

saludos

Código: Seleccionar todo

if(!borracho)
{
MessageBox.Show("Disfruta conduciendo, no podemos conducir por ti");
}
else
{
MessageBox.Show("Hoy toca bus");
}
Avatar de Usuario
Jaio
Espectador
Espectador
Mensajes: 16
Registrado: 27 Ago 2016 23:47
Volante: logitech momo racing

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

Mensaje por Jaio »

Sito206 escribió:
De nada, Cualquier duda estoy por aquí.

saludos
tengo un detalle con mi codigo y te preguntaras porq no simplemente copio tu cogido... es simple solo necesito leer la cadena de datos q envia tu programa y pasarlo a mi LCD y un Display Alfanumerico. pues no cuento con un Display TM1638

mi pregunta: tal cual como explique mas arriba estoy en lo correcto cierto? con realacion al como esta estructurada la cadena de datos enviada por tu programa

habia dicho q la estructura para Speed, RPM y Gear era asi "S000R0000G0" claro q habia cometido un error pues ciertamente la cadena despues de G esta acompañada de 2 digitos si el valor de G es mayor a 9 quedando asi G00 en el caso de la marcha atras q muestra DiRT3 q es un valor de "10"

logre leer el valor de G10 con estos pasos...

Despues de leer el COMANDO "G" paso a Read_Gear();

void Read_Gear()
{
delay(1);
Gear10 = Serial.read() - 48; // para leer el primer digito del 0-9
Gear1 = Serial.read() - 48; // para leer el ultimo digito 0

if (Gear10 == 1 and Gear1 == 0 ) // si el primer digito es igual a "1" y el segundo digito es igual a "0" escribe en Gear el valor "10"
{
Gear = 10; //Valor "10" para determinarlo como Retroceso y escribir la "R" en el Display Alfanumerico
lcd.print("Marcha Atras"); // imprimir en la LCD la funcion
}
else
{
Gear = Gear10; // Valor de 0-9 para escribir en el Display Alfanumerico (N=0 y Marchas 1-9)
}

}

hasta aqui todo bien pero me presenta un detalle q este valor en el display y en la LCD parpadeo a veces con numeros al azar desde 326542 / -326542

El problema solo pasa cuando leo las variables Speed y RPM... si modifico todo el codigo solo para leer GEAR todo perfecto sin parpadeo.


me gustaria saber exactamente cual es la cadena de caracteres q envia tu programa solo si quiero enviar los valores de Speed,Rpm y Gear sino es mucha molestia...
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 »

No recuerdo bien ahora. Pero por lo que dices , el dirt3 devuelve una línea de dos dígitos con la marcha , siendo 10 la marcha atrás. Tendre que instalar el juego y mirar . En estos días te digo algo

Código: Seleccionar todo

if(!borracho)
{
MessageBox.Show("Disfruta conduciendo, no podemos conducir por ti");
}
else
{
MessageBox.Show("Hoy toca bus");
}
Avatar de Usuario
Jaio
Espectador
Espectador
Mensajes: 16
Registrado: 27 Ago 2016 23:47
Volante: logitech momo racing

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

Mensaje por Jaio »

Si amigo asi es DiRT3 en Marcha atras envia un valor de "10"
Imagen

Como dije eso ya lo resolvi con las lineas de codigo adicional q puse en Read_Gear... lo q quiciera saber es como es la cadena de caracteres enviado desde tu programa al arduino... :blush:
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 »

Bueno, aquí tienes la función que se encarga de enviar los datos.

Espero lo entiendas.

Código: Seleccionar todo

public static void enviar()
       {
           switch (InPutDataFisic.Properties.Settings.Default.salida)
           {
               #region ARDUINO
               case "arduino":
                   if (serialPort1.IsOpen)
                   {
                       if (InPutDataFisic.Properties.Settings.Default.Arduino_speed == "1")
                       {
                           serialPort1.Write("S" + LeerDatos.Velocidad1.ToString("000")); //velocidad
                       }
                       if (InPutDataFisic.Properties.Settings.Default.Arduino_Rpm == "1")
                       {
                           serialPort1.Write("R" + LeerDatos.Rmp1.ToString("0000")); //rpm
                       }
                       if (InPutDataFisic.Properties.Settings.Default.Arduino_Fuel == "1")
                       {
                           serialPort1.Write("F"+LeerDatos.FuelLitros1.ToString("000")); //Fuel
                       }
                       if(InPutDataFisic.Properties.Settings.Default.Arduino_Oil == "1")
                       {
                           serialPort1.Write("O"+LeerDatos.OilTemp1.ToString("000")); //Oil temperatura
                       }
                       if(InPutDataFisic.Properties.Settings.Default.Arduino_Agua == "1")
                       {
                           serialPort1.Write("A"+LeerDatos.AguaTemp1.ToString("000")); //agua temperatura
                       }


                     
                   }
                   break;
               #endregion

               case "Lkm1638":

                   if (serialPort1.IsOpen)
                   {
                       
                       serialPort1.Write("S" + LeerDatos.Velocidad1.ToString("000")); //velocidad
                           serialPort1.Write("R" + LeerDatos.Rmp1.ToString("0000")); //rpm
                           serialPort1.Write("F" + LeerDatos.FuelLitros1.ToString("000")); //Fuel
                           serialPort1.Write("O" + LeerDatos.OilTemp1.ToString("000")); //Oil temperatura
                           serialPort1.Write("A" + LeerDatos.AguaTemp1.ToString("000")); //agua temperatura
                           serialPort1.Write("G" + LeerDatos.Gear1.ToString("0")); //Marcha

                           #region tiempo ultima vuelta
                           if (DatosActivosDeConfiguracion.tiempo_ultima_vuelta_mostrar)
                           {
                               if ((int)LeerDatos.Vuelta_Actual1 > vuelta_anterior && LeerDatos.LastTimeTime1 > new TimeSpan(0))
                               {
                                   vuelta_anterior = (int)LeerDatos.Vuelta_Actual1;
                                   serialPort1.Write("T" + LeerDatos.LastTimeTime1.Minutes.ToString("00") + LeerDatos.LastTimeTime1.Seconds.ToString("00"));
                                   serialPort1.Write("N" + LeerDatos.LastTimeTime1.Milliseconds.ToString("000"));
                               }

                               if ((int)LeerDatos.Vuelta_Actual1 == 0)
                               {
                                   vuelta_anterior = 0;
                               }
                           }

                           #endregion

                           #region RPM MAXIMA
                           if (LeerDatos.Rpm_maxima1 > 500 && !envia_rpm_maxima)
                           {
                               Rpm_anterior = (int)LeerDatos.Rpm_maxima1;
                               serialPort1.Write("M" + LeerDatos.Rpm_maxima1.ToString("0000")); //Rpm maxima
                               envia_rpm_maxima = true;
                           }
                           if (LeerDatos.Rpm_maxima1 > 500 && (int)LeerDatos.Rpm_maxima1 != Rpm_anterior)
                           {
                               Rpm_anterior = (int)LeerDatos.Rpm_maxima1;
                               serialPort1.Write("M" + LeerDatos.Rpm_maxima1.ToString("0000")); //Rpm maxima
                           }
                           #endregion

                           #region control de botones para enviar

                           if (DatosActivosDeConfiguracion.buton_fuel)
                           {
                               TimeSpan tiempo = DateTime.Now.TimeOfDay;
                               if (tiempo - TiempoRestado > intervalo)
                               {
                                   TiempoRestado = tiempo;
                                   serialPort1.Write("C" + "1");
                                   DatosActivosDeConfiguracion.buton_fuel = false;
                               }
                               else
                               {
                                   DatosActivosDeConfiguracion.buton_fuel = false;
                               }
                           }

                           if (DatosActivosDeConfiguracion.buton_speed)
                           {
                               TimeSpan tiempo = DateTime.Now.TimeOfDay;
                               if (tiempo - TiempoRestado > intervalo)
                               {
                                   TiempoRestado = tiempo;
                                   serialPort1.Write("C" + "2");
                                   DatosActivosDeConfiguracion.buton_speed = false;
                               }
                               else
                               {
                                   DatosActivosDeConfiguracion.buton_speed = false;
                               }
                           }

                           if (DatosActivosDeConfiguracion.buton_oil)
                           {
                               TimeSpan tiempo = DateTime.Now.TimeOfDay;
                               if (tiempo - TiempoRestado > intervalo)
                               {
                                   TiempoRestado = tiempo;
                                   serialPort1.Write("C" + "3");
                                   DatosActivosDeConfiguracion.buton_oil = false;
                               }
                               else
                               {
                                   DatosActivosDeConfiguracion.buton_oil = false;
                               }
                           }

                           if (DatosActivosDeConfiguracion.buton_rpm)
                           {
                               TimeSpan tiempo = DateTime.Now.TimeOfDay;
                               if (tiempo - TiempoRestado > intervalo)
                               {
                                   TiempoRestado = tiempo;
                                   serialPort1.Write("C" + "4");
                                   DatosActivosDeConfiguracion.buton_rpm = false;
                               }
                               else
                               {
                                   DatosActivosDeConfiguracion.buton_rpm = false;
                               }
                           }

                           if (DatosActivosDeConfiguracion.buton_water)
                           {
                               TimeSpan tiempo = DateTime.Now.TimeOfDay;
                               if (tiempo - TiempoRestado > intervalo)
                               {
                                   TiempoRestado = tiempo;
                                   serialPort1.Write("C" + "5");
                                   DatosActivosDeConfiguracion.buton_water = false;
                               }
                               else
                               {
                                   DatosActivosDeConfiguracion.buton_water = false;
                               }
                           }

                           #endregion

                           #region control de pitlane

                           if (LeerDatos.DentroPitLine1 == true)
                           {
                               serialPort1.Write("P" + "1");
                           }
                           else
                           {
                               serialPort1.Write("P" + "0");
                           }

                           #endregion

                   }
                   break;
               #region segundo monitor
               case "2_monitor":

                   if (Ventanas.cuadro)
                   {
                       Ventanas.v_cuadro.Invoke(new aviso_cuadro(Ventanas.v_cuadro.cuadro), new object[] { int.Parse(LeerDatos.Velocidad1.ToString("000")) });
                       Ventanas.v_cuadro.Invoke(new aviso_cuadro(Ventanas.v_cuadro.Marcha), new object[] { int.Parse(LeerDatos.Gear1.ToString("0")) });
                       Ventanas.v_cuadro.Invoke(new aviso_cuadro(Ventanas.v_cuadro.Rpm), new object[] { int.Parse(LeerDatos.Rmp1.ToString("0000")) });
                       Ventanas.v_cuadro.Invoke(new aviso_cuadro(Ventanas.v_cuadro.Fuel), new object[] { int.Parse(LeerDatos.FuelLitros1.ToString("0")) });
                       Ventanas.v_cuadro.Invoke(new aviso_cuadro(Ventanas.v_cuadro.Agua), new object[] { int.Parse(LeerDatos.AguaTemp1.ToString("0")) });
                       Ventanas.v_cuadro.Invoke(new aviso_cuadro(Ventanas.v_cuadro.Oil), new object[] { int.Parse(LeerDatos.OilTemp1.ToString("0")) });
                   }


                   break;
               #endregion

               #region Red Lan
               case "red_lan":
                   try
                   {
                       if (lista.Pending())
                       {
                           cliente = lista.AcceptTcpClient();


                           sw = new StreamWriter(cliente.GetStream());
                       }
                       if (cliente.Connected)
                       {

                           cliente.NoDelay = true;
                           sw.WriteLine(LeerDatos.Velocidad1.ToString("000") + "*" + //velocidad
                           LeerDatos.Rmp1.ToString("0000") + "*" + //rpm
                           LeerDatos.Gear1.ToString() + "*" + //marcha
                           LeerDatos.FuelLitros1.ToString() + "*" + //combustible
                           LeerDatos.AguaTemp1.ToString() + "*" + // temperatura agua
                           LeerDatos.OilTemp1.ToString() + "*" + // temperatura aceite
                           LeerDatos.Temp_f_di1.ToString("0") + "*" + //temperatura freno delantero izquierdo
                           LeerDatos.Temp_f_dd1.ToString("0") + "*" + //temperatura freno delantero derecho
                           LeerDatos.Temp_f_ti1.ToString("0") + "*" + //temperatura freno trasero izquierdo
                           LeerDatos.Temp_f_td1.ToString("0") + "*" + //temperatura freno trasero derecho
                           LeerDatos.Temp_n_di_i1.ToString("0") + "*" + //temperatura neumatico delantero izquierdo parte izquierda
                           LeerDatos.Temp_n_di_c1.ToString("0") + "*" + //temperatura neumatico delantero izquierdo parte centro
                           LeerDatos.Temp_n_di_d1.ToString("0") + "*" + //temperatura neumatico delantero izquierdo parte derecha
                           LeerDatos.Temp_n_dd_i1.ToString("0") + "*" + //temperatura neumatico delantero derecho parte izquierda
                           LeerDatos.Temp_n_dd_c1.ToString("0") + "*" +//temperatura neumatico delantero derecho parte centro
                           LeerDatos.Temp_n_dd_d1.ToString("0") + "*" + //temperatura neumatico delantero derecho parte derecha
                           LeerDatos.Temp_n_ti_i1.ToString("0") + "*" + //temperatura neumatico trasero izquierdo parte izquierda
                           LeerDatos.Temp_n_ti_c1.ToString("0") + "*" + //temperatura neumatico trasero izquierdo parte centro
                           LeerDatos.Temp_n_ti_d1.ToString("0") + "*" + //temperatura neumatico trasero izquierdo parte derecha
                           LeerDatos.Temp_n_td_i1.ToString("0") + "*" + //temperatura neumatico trasero derecho parte izquierda
                           LeerDatos.Temp_n_td_c1.ToString("0") + "*" + //temperatura neumatico trasero derecho parte centro
                           LeerDatos.Temp_n_td_d1.ToString("0") + "*" + //temperatura neumatico trasero derecho parte derecha
                           LeerDatos.Acelerador1.ToString() + "*" + //pulsador del acelerador
                           LeerDatos.Freno1.ToString() + "*" + //pulsador del freno
                           LeerDatos.Vuelta_Actual1.ToString() + "/" + LeerDatos.Vueltas_maxima.ToString() + "*" + //vuelta actual
                           LeerDatos.BestLapTime1+ "*" +
                           LeerDatos.LastLapTime1+"*" +
                           LeerDatos.TiempoActual1+ "*" +
                           LeerDatos.Sector11 + "*" +
                           LeerDatos.Sector21 + "*" +
                           LeerDatos.Sector31 + "*" +
                           LeerDatos.Rpm_maxima1.ToString() + "*" +
                           LeerDatos.Fuerza_x.ToString("0.##") + "*" + LeerDatos.Fuerza_z.ToString("0.##"));
                           sw.Flush();
                       }



                   }
                   catch
                   {
                       return;
                   }

                   break;
               #endregion
           }
           
       }

Código: Seleccionar todo

if(!borracho)
{
MessageBox.Show("Disfruta conduciendo, no podemos conducir por ti");
}
else
{
MessageBox.Show("Hoy toca bus");
}
Avatar de Usuario
Jaio
Espectador
Espectador
Mensajes: 16
Registrado: 27 Ago 2016 23:47
Volante: logitech momo racing

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

Mensaje por Jaio »

Gracias y ciertamente estaba en lo correcto la trama es como imaginaba en la Region CASE "ARDUINO" te falto colocar esta seccion resaltada por eso cuando seleccionaba arduinoen configuracionno me trabajaba solo trabajaba cuando seleccionaba Arduino + Lkm1638

"serialPort1.Write("G" + LeerDatos.Gear1.ToString("0")); //Marcha"
#region ARDUINO
case "arduino":
if (serialPort1.IsOpen)
{
if (InPutDataFisic.Properties.Settings.Default.Arduino_speed == "1")
{
serialPort1.Write("S" + LeerDatos.Velocidad1.ToString("000")); //velocidad
}
if (InPutDataFisic.Properties.Settings.Default.Arduino_Rpm == "1")
{
serialPort1.Write("R" + LeerDatos.Rmp1.ToString("0000")); //rpm
}
if (InPutDataFisic.Properties.Settings.Default.Arduino_Gear == "1")
{
serialPort1.Write("G" + LeerDatos.Gear1.ToString("0")); //Marcha
}

if (InPutDataFisic.Properties.Settings.Default.Arduino_Fuel == "1")
{
serialPort1.Write("F"+LeerDatos.FuelLitros1.ToString("000")); //Fuel
}
if(InPutDataFisic.Properties.Settings.Default.Arduino_Oil == "1")
{
serialPort1.Write("O"+LeerDatos.OilTemp1.ToString("000")); //Oil temperatura
}
if(InPutDataFisic.Properties.Settings.Default.Arduino_Agua == "1")
{
serialPort1.Write("A"+LeerDatos.AguaTemp1.ToString("000")); //agua temperatura
}
}
break;
#endregion
almenos ya me funciona la data Gear pero lo q es el parpadeo creo q es en mi arduino con los tiempos de escritura de la LCD y el display q de algun modo genera rebotes en la lectura y me causa el problema mensionado...
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 »

Puedes mostrarme el código que usas en tu arduino?, Voy a ver donde podría estar el fallo.

Código: Seleccionar todo

if(!borracho)
{
MessageBox.Show("Disfruta conduciendo, no podemos conducir por ti");
}
else
{
MessageBox.Show("Hoy toca bus");
}
Avatar de Usuario
Jaio
Espectador
Espectador
Mensajes: 16
Registrado: 27 Ago 2016 23:47
Volante: logitech momo racing

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

Mensaje por Jaio »

Amigo Sito206

Aqui mi codigo basico de pruebas y ya definitivamente ubique el problema... :cabezazos: nose en q estaba pensando en no preveer q lo q pasaba es q estoy uso una pantalla OLED de 128x64 con comunicacion i2C y el retardo de escritura en la LCD es lo q causa el problema... si envio el valor de RPM o SPEED directamente al display alfanumerito tomando el primer valor de las variables RPM y SPEED este se muestra en tiempo real... osea a la perfeccion... :oops:

Aqui esta mi codigo...
//Listo para Leer InPutDataFisic en Display y OLED(algunos errores)

#include <U8glib.h>
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0 | U8G_I2C_OPT_NO_ACK | U8G_I2C_OPT_FAST); // Fast I2C / TWI

int a = 2;
int b = 3;
int c = 4;
int d = 5;
int e = 6;
int f = 7;
int g = 8;

int Speed;
int Rpm;
int Gear;
int Gear1;
int Gear10;



void setup()
{
Serial.begin(38400);
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);

//Display NONE
digitalWrite (a, LOW);
digitalWrite (b, LOW);
digitalWrite (c, LOW);
digitalWrite (d, LOW);
digitalWrite (e, LOW);
digitalWrite (f, LOW);
digitalWrite (g, HIGH);
digitalWrite (9, LOW);
digitalWrite (10, LOW);
}

void loop()
{
while(Serial.available() > 0)
{
char comandos = Serial.read();
if (comandos == 'S') Read_Speed();
if (comandos == 'R') Read_Rpm();
if (comandos == 'G') Read_Gear();
Escribir();
}
}


void Read_Speed()
{
delay(1);
int Speed100 = Serial.read() - 48;
int Speed10 = Serial.read() - 48;
int Speed1 = Serial.read() - 48;
Speed = 100*Speed100 + 10*Speed10 + Speed1;
}

void Read_Rpm()
{
delay(1);
int Rpm1000 = Serial.read() - 48;
int Rpm100 = Serial.read() - 48;
int Rpm10 = Serial.read() - 48;
int Rpm1 = Serial.read() - 48;
Rpm = 1000*Rpm1000 + 100*Rpm100 + 10*Rpm10 + Rpm1;
}

void Read_Gear()
{
delay(1);
Gear10 = Serial.read() - 48;
Gear1 = Serial.read() - 48;

if (Gear10 == 1 and Gear1 == 0 )
{
Gear = 9;
}
else
{
Gear = Gear10;
}

if (Gear >= 0 and Gear <=9 ){
switch (Gear) {
case 0: //Gear NEUTRAK
digitalWrite (a, LOW);
digitalWrite (b, HIGH);
digitalWrite (c, HIGH);
digitalWrite (d, LOW);
digitalWrite (e, HIGH);
digitalWrite (f, HIGH);
digitalWrite (g, LOW);
digitalWrite (9, HIGH);
digitalWrite (10, HIGH);
break;
case 1:
digitalWrite (a, LOW);
digitalWrite (b, HIGH);
digitalWrite (c, HIGH);
digitalWrite (d, LOW);
digitalWrite (e, LOW);
digitalWrite (f, LOW);
digitalWrite (g, LOW);
digitalWrite (9, LOW);
digitalWrite (10, LOW);
break;
case 2:
digitalWrite (a, HIGH);
digitalWrite (b, HIGH);
digitalWrite (c, LOW);
digitalWrite (d, HIGH);
digitalWrite (e, HIGH);
digitalWrite (f, LOW);
digitalWrite (g, HIGH);
digitalWrite (9, LOW);
digitalWrite (10, LOW);
break;
case 3:
digitalWrite (a, HIGH);
digitalWrite (b, HIGH);
digitalWrite (c, HIGH);
digitalWrite (d, HIGH);
digitalWrite (e, LOW);
digitalWrite (f, LOW);
digitalWrite (g, HIGH);
digitalWrite (9, LOW);
digitalWrite (10, LOW);
break;
case 4:
digitalWrite (a, LOW);
digitalWrite (b, HIGH);
digitalWrite (c, HIGH);
digitalWrite (d, LOW);
digitalWrite (e, LOW);
digitalWrite (f, HIGH);
digitalWrite (g, HIGH);
digitalWrite (9, LOW);
digitalWrite (10, LOW);
break;
case 5:
digitalWrite (a, HIGH);
digitalWrite (b, LOW);
digitalWrite (c, HIGH);
digitalWrite (d, HIGH);
digitalWrite (e, LOW);
digitalWrite (f, HIGH);
digitalWrite (g, HIGH);
digitalWrite (9, LOW);
digitalWrite (10, LOW);
break;
case 6:
digitalWrite (a, HIGH);
digitalWrite (b, LOW);
digitalWrite (c, HIGH);
digitalWrite (d, HIGH);
digitalWrite (e, HIGH);
digitalWrite (f, HIGH);
digitalWrite (g, HIGH);
digitalWrite (9, LOW);
digitalWrite (10, LOW);
break;
case 7:
digitalWrite (a, HIGH);
digitalWrite (b, HIGH);
digitalWrite (c, HIGH);
digitalWrite (d, LOW);
digitalWrite (e, LOW);
digitalWrite (f, LOW);
digitalWrite (g, LOW);
digitalWrite (9, LOW);
digitalWrite (10, LOW);
break;
case 8:
digitalWrite (a, HIGH);
digitalWrite (b, HIGH);
digitalWrite (c, HIGH);
digitalWrite (d, HIGH);
digitalWrite (e, HIGH);
digitalWrite (f, HIGH);
digitalWrite (g, HIGH);
digitalWrite (9, LOW);
digitalWrite (10, LOW);
break;
case 9:
//Display RETROCESO
digitalWrite (a, HIGH);
digitalWrite (b, HIGH);
digitalWrite (c, LOW);
digitalWrite (d, LOW);
digitalWrite (e, HIGH);
digitalWrite (f, HIGH);
digitalWrite (g, HIGH);
digitalWrite (9, HIGH);
digitalWrite (10, LOW);
break;
}
}
}

void Escribir()
{
u8g.firstPage();
do {
u8g.setColorIndex(1);

u8g.setFont(u8g_font_unifont);
u8g.setPrintPos(75, 20);
u8g.print("Km/H");
u8g.setFont(u8g_font_timB24r);
u8g.setPrintPos(0, 25);
u8g.print(Speed);

u8g.setFont(u8g_font_unifont);
u8g.setPrintPos(75, 60);
u8g.print("RPM");
u8g.setFont(u8g_font_timB24r);
u8g.setPrintPos(0, 64);
u8g.print(Rpm);

} while (u8g.nextPage());
}
Adicionalmente como favor... que posibilidad hay de que nos facilites informacion de como extraes la telemetria de los video juegos... me serviria para probar con otros juegos... :alabar:
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 »

Pues depende del juego, cada juego lo hace de una forma, bien por memoria compartida, mediante LAN (TCP /IP ) o mediante plugin como el rFactor, que a su vez es un dll en C++ que comparte sus datos por memoria compartida.

Código: Seleccionar todo

if(!borracho)
{
MessageBox.Show("Disfruta conduciendo, no podemos conducir por ti");
}
else
{
MessageBox.Show("Hoy toca bus");
}
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 »

Estoy añadiendo las fuerzas G de X Y Z para rFactor, lo añadiré también a otros simuladores, pero por el momento estoy con rFactor.

serialPort1.Write("S" + LeerDatos.Velocidad1.ToString("000")); //velocidad
serialPort1.Write("R" + LeerDatos.Rmp1.ToString("0000")); //rpm
serialPort1.Write("F" + LeerDatos.FuelLitros1.ToString("000")); //Fuel
serialPort1.Write("O" + LeerDatos.OilTemp1.ToString("000")); //Oil temperatura
serialPort1.Write("A" + LeerDatos.AguaTemp1.ToString("000")); //agua temperatura
serialPort1.Write("G" + LeerDatos.Gear1.ToString("0")); //Marcha
serialPort1.Write("X" +LeerDatos.Fuerza_x.ToString("000")); //Fuerza G x
serialPort1.Write("Y" + LeerDatos.Fuerza_y.ToString("000")); // Fuerza G Y
serialPort1.Write("Z" + LeerDatos.Fuerza_z.ToString("000")); //Fuerzaz G Z

Código: Seleccionar todo

if(!borracho)
{
MessageBox.Show("Disfruta conduciendo, no podemos conducir por ti");
}
else
{
MessageBox.Show("Hoy toca bus");
}
Avatar de Usuario
Jaio
Espectador
Espectador
Mensajes: 16
Registrado: 27 Ago 2016 23:47
Volante: logitech momo racing

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

Mensaje por Jaio »

mmmm si eso e notado en los foros q e leido pero no tengo conocimientos muy muy amplios en C++ de hecho solo e hecho programas basicos armados de forma de rompe cabeza usando partes de otros ejemplos, por eso esperaba ver si podias pasarme alguna informacion en realcion a la captura de dichos datos pues me gustaria hacer un programita mas compacto solo para mi Display y por eso pregunto si puedes compartir el codigo fuente de tu programa para usar solo lo q necesito... claro si puedes. algo asi como el mio

Imagen

en este programita q use uso la funcion
FindWindow y FindWindowEx (hwnd)
para extraer la informacion del programa OUTSIMDiRT2 q ejecuta el mismo programa XSIM pero esto esta remotamente lejos de lo q es extraerlos directamente del video juego.. :llorar:
Avatar de Usuario
Jaio
Espectador
Espectador
Mensajes: 16
Registrado: 27 Ago 2016 23:47
Volante: logitech momo racing

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

Mensaje por Jaio »

Sito206 escribió:Estoy añadiendo las fuerzas G de X Y Z para rFactor, ...

serialPort1.Write("X" +LeerDatos.Fuerza_x.ToString("000")); //Fuerza G x
serialPort1.Write("Y" + LeerDatos.Fuerza_y.ToString("000")); // Fuerza G Y
serialPort1.Write("Z" + LeerDatos.Fuerza_z.ToString("000")); //Fuerzaz G Z

Vez esta cosa va por buen camino teniendo esos datos se podria hacer lo mismo q hace X-SIM para manipurar una controladora e inicialmente a su vez 2 motores (2DOF)
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 »

Realmente ya recogía los datos... simplemente no los enviaba al arduino... no recuerdo porque lo dejé así.

El código como tal no te lo puedo pasar, son muchas horas las que pasé programando :P , lo que podría es añadir o intentar añadir lo que te haga falta.

Código: Seleccionar todo

if(!borracho)
{
MessageBox.Show("Disfruta conduciendo, no podemos conducir por ti");
}
else
{
MessageBox.Show("Hoy toca bus");
}
Avatar de Usuario
Jaio
Espectador
Espectador
Mensajes: 16
Registrado: 27 Ago 2016 23:47
Volante: logitech momo racing

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

Mensaje por Jaio »

Cierto amigo tiene toda la razon una cosa es compartir informacion otra es compartir todaaa la informacion... pero almenos sime gustaria almenos ver como extraes la telemetria del Dirt3 q es inicialmente el juego q usare con mi simulador... solo como la extraes y yo me encargaria de hacer mi programita unicamente para el Dirt3 y poro a poco sufrir como lo haz hecho tu en tu desarrollo...
Avatar de Usuario
Jaio
Espectador
Espectador
Mensajes: 16
Registrado: 27 Ago 2016 23:47
Volante: logitech momo racing

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

Mensaje por Jaio »

Sito206 escribió:Realmente ya recogía los datos... simplemente no los enviaba al arduino... no recuerdo porque lo dejé así.
olvide decirte q con la version final q me pasaste la "V0.0.06" no e logrado hacerlo funcional... con el mismo codigo en cambio con la "V0.0.05" funciona perfectamente puedo ver los valores de Spedd, Rpm y Gear... :oks:
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 »

Ok. Como estoy trabajando en la nueva versión que incluye algunas mejoras como exportar los tiempos por vueltas , revisaré el funcionamiento

Código: Seleccionar todo

if(!borracho)
{
MessageBox.Show("Disfruta conduciendo, no podemos conducir por ti");
}
else
{
MessageBox.Show("Hoy toca bus");
}
Avatar de Usuario
Jaio
Espectador
Espectador
Mensajes: 16
Registrado: 27 Ago 2016 23:47
Volante: logitech momo racing

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

Mensaje por Jaio »

Un detallito bueno y estetico seria q al conectar el programa puedas minimizarlo como opcion a la bandeja alando del Reloj... ;) en lo personal me gusta tener la barra de tareas libre de programas abiertos.. :wink:
Avatar de Usuario
Jaio
Espectador
Espectador
Mensajes: 16
Registrado: 27 Ago 2016 23:47
Volante: logitech momo racing

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

Mensaje por Jaio »

Amigo Sito206 ya tengo casi listo mi Dashboard Arduino... estoy haciendo un Display de 7Seg de 7 Digitos para mostar los siguiente:

Imagen

en los Digitos de 1,2,3 = SPEED (Velocidad)
en el Digito 4 = GEAR (Marcha)
y en los Digitos de 5,6,7 = Posicion en la Carrera.. En los Display los mostrare asi "P02" siendo este valor la posicion en "2do Lugar" como se muestra en el volante

pero estoy notando q tu programa no entrega ni muestra en su ventana el valor de Posicion... Solo muestra "POSICION = 0/0"

Imagen

nose q mas decir sera q eso se puede solucionar...?
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 »

Tengo que mirar si el dirt3 me puede dar ese valor. Lo que haré es pasarte un programa que hice para obtener valores y tu interés tas averiguar dónde está la posición . Luego te lo paso, que estoy liado instalando un cajero.
Saludos

Código: Seleccionar todo

if(!borracho)
{
MessageBox.Show("Disfruta conduciendo, no podemos conducir por ti");
}
else
{
MessageBox.Show("Hoy toca bus");
}
Avatar de Usuario
Jaio
Espectador
Espectador
Mensajes: 16
Registrado: 27 Ago 2016 23:47
Volante: logitech momo racing

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

Mensaje por Jaio »

Dale fino estare esperandolo ansioso... asi te voy dando una ayudita para mejorar tu programita :oks: ubicando los datos y aprendiendo un poco mas.
Responder