trensim.comSimulación Ferroviaria
   

¿Alguno quiere hacerse su propio RailDriver para RW?

Foro de ámbito general para temas de RailWorks / Train Simulator 2012, y compatibilidad con Rail Simulator.

Moderador: Moderadores

Re: ¿Alguno quiere hacerse su propio RailDriver para RW?

Notapor Divi4p » Vie Ago 19, 2011 10:59 pm

Probado y funcionando:

Imagen

Sólo hay problemillas con el tema del python al acabar el programa y tal pero poco a poco se pueden hacer virguerías.

Un saludo y mil gracias por darnos este enorme empujón, ojalá podamos seguir avanzando.
Imagen
Avatar de Usuario
Divi4p
Bibliotecario
 
Mensajes: 1314
Registrado: Lun Abr 04, 2005 5:19 pm
Ubicación: en un zarrio

Re: ¿Alguno quiere hacerse su propio RailDriver para RW?

Notapor lgg2 » Vie Ago 19, 2011 11:16 pm

Buenas,

Respecto a lo de salir del programa de Python, si, es un poco "peñazo". Lo tengo puesto si te fijas en el programa de Python que si recibe un "C" de la placa ARDUINO sale del bucle. La idea era implementar una especie de botón de escape para cortar el programa de Python desde la placa ARDUINO, También se le puede (puedo) hacer que el programa de Python compruebe los puertos en busca de una respuesta concreta de la placa ARDUINO y que en el bucle también verifique si se ha pulsado una tecla para salir.

El tema era que la parte inicial fuese sencilla y de ahí, con las ideas aportadas, fuese creciendo la cosa. Yo por de pronto para salir del programa de Python, pulsas [CTRL]+[C] y mueves el "regulador". Si alguno quiere manejar una locomotora de las que tienen regulador y freno en el mismo accionamiento, tan solo ha de cambiar en la linea:
Código: Seleccionar todo
if (Comando[0:1] == b'A'):
            LibreriaRailDriver.SetRailSimValue(1,c_float(float(Comando[1:])/1023))

por: LibreriaRailDriver.SetRailSimValue(2,c_float(float(Comando[1:])/1023))

Un saludo.

Imagen
lgg2
 
Mensajes: 32
Registrado: Dom Mar 27, 2005 11:12 pm

Re: ¿Alguno quiere hacerse su propio RailDriver para RW?

Notapor Divi4p » Sab Ago 20, 2011 7:17 am

¿Y para entradas digitales como por ejemplo el silbato?

El número imagino que será el 11 (de la lista que pusiste), pero creo que la sintaxis de los datos a meterle al RW deberían ser otros.

Y para rizar el rizo, la velocidad sí es un parámetro legible, ¿se podría hacer lucir el LED de la arduino más o menos deprisa en función de la velocidad? Lo digo en plan ejemplo porque una vez logrado eso, tiro de PWM y lo mismo logro también mover un velocímetro...

Saludos.
Imagen
Avatar de Usuario
Divi4p
Bibliotecario
 
Mensajes: 1314
Registrado: Lun Abr 04, 2005 5:19 pm
Ubicación: en un zarrio

Re: ¿Alguno quiere hacerse su propio RailDriver para RW?

Notapor lgg2 » Sab Ago 20, 2011 9:02 am

Buenas,

[Divi4p], lo del silbato sin problemas. Lo de la velocidad, lo repetire por n-sima vez, lo he intentado por activa y por pasiva con el driver del RailDriver y no funciona la lectura de parametros. Por otra parte, si como decia [HANNIBAL SMITH], a traves de "GameManager.dll" se puede, pero con razon son de esperar modificaciones en la nueva version que esta al caer.

De todas formas, podemos intentar plantear qué modificar (incluir) al codigo original para hacer una segunda version. Por mi parte las propuestas son:
- Autodeteccion del puerto al que este conectada la placa ARDUINO y reconocimiento de la misma (Python).
- Calibracion de los potenciometros con guardado de los valores en la propia placa (ARDUINO).
- Asignacion de "pines" para los distintos controles, en principio los mas usuales (ARDUINO + Python).

Para una tercera version se puede dejar el tema de hacer una "interface de usuario" (por dios, que mal suena) al programa de Python y que se quede en la barra de Windows, junto al reloj.

Todos estos cambios son mas o menos independientes de la actualizacion de RW, puesto que el controlador de "RailDriver" es de suponer que "deberia" segir en su sitio. En caso de que por parte de KuJu se habilite un acceso mas "universal" para estos temas (obtencion/modificacion de controles del tren), pues se harian las pertinentes modificaciones, pero tened en cuenta que la parte de ARDUINO poco (programa) o nada cambiaria. Asi que si alguno esta esperando le animo a que se tire a la piscina, que no es muy costoso el asunto y repito, cambia la sensacion de control por completo.

Un saludo.

Imagen
lgg2
 
Mensajes: 32
Registrado: Dom Mar 27, 2005 11:12 pm

Re: ¿Alguno quiere hacerse su propio RailDriver para RW?

Notapor Marc » Sab Ago 20, 2011 4:57 pm

La lectura de la velocidad sí que es posible. En mi programa de pruebas en .NET la he logrado mostrar de forma continua en una ventana. Pero creo que no se puede sacar más, ya que es el único dato que muestra el RailDriver y la interfaz (la DLL) se hizo a su medida.
Avatar de Usuario
Marc
grupo TrenSim
 
Mensajes: 4284
Registrado: Jue Ago 28, 2003 11:24 pm
Ubicación: Barcelona

Re: ¿Alguno quiere hacerse su propio RailDriver para RW?

Notapor lgg2 » Sab Ago 20, 2011 5:17 pm

Buenas,

Y si no es mucha molestia, ¿como?.

En mi caso he empleado la funcion "GetRailSimValue(control as Int, valor as Int) as Single" (ejemplo simbolico NO de Python), siendo el valor de control el que corresponde con el teorico velocimetro y valor 0=actual, 1=maximo, 2=minimo. La respuesta ha sido salvo en unos 10 controles un valor "single/float" de 0.0 y en resto la respuesta ha sido el propio id del control. Tambien aviso, que el programa existente en .NET para el joystick (foro ingles) tampoco me lee la velocidad.

Resumiendo, ¿puede ser un error de configuracion de mi RW? ¿De Windows? ¿Que tener instalado el .NET 4.0 afecta?... o ¿Soy demasiado torpe (que tambien es posible)?

Un saludo.

P.D.: Cuelga por aqui si no te importa las fuentes...

Imagen
lgg2
 
Mensajes: 32
Registrado: Dom Mar 27, 2005 11:12 pm

Re: ¿Alguno quiere hacerse su propio RailDriver para RW?

Notapor Marc » Sab Ago 20, 2011 9:58 pm

Espera, creo que sé lo que te pasa, si es lo mismo que me pasaba a mi al principio tocando el proyecto del joystick. Para probar, copié el archivo raildriver.dll al directorio donde tenía el ejecutable. No iba muy bien, de hecho recuerdo ver que me daba velocidad cero todo el rato. Luego cambié la referencia de la dll a su sitio original, donde la usa el juego.

En el caso de C# sería esto:

Código: Seleccionar todo
        [DllImport(@"C:\Steam\steamapps\common\railworks\plugins\RailDriver.dll",
        CallingConvention = CallingConvention.Cdecl)]
        public static extern float GetRailSimValue(int action, int value);


Mira si esto te funciona :wink:

PD: Voy a hacer limpieza de cosillas en el código y publico el resto.
Avatar de Usuario
Marc
grupo TrenSim
 
Mensajes: 4284
Registrado: Jue Ago 28, 2003 11:24 pm
Ubicación: Barcelona

Re: ¿Alguno quiere hacerse su propio RailDriver para RW?

Notapor lgg2 » Sab Ago 20, 2011 10:37 pm

Buenas,

[Marc], es adonde apunta el programa de Python. Bueno, no es del todo igual que el tuyo puesto que "Steam" no cuelga del raiz. Al menos en mi caso cuelga de "Archivos De Programa".

Un saludo.

Imagen
lgg2
 
Mensajes: 32
Registrado: Dom Mar 27, 2005 11:12 pm

Re: ¿Alguno quiere hacerse su propio RailDriver para RW?

Notapor Marc » Sab Ago 20, 2011 11:22 pm

Al instalar el juego, lo hice directamente en la raíz.

Cuando empecé a probar todo esto en un programa en C# (el del joystick está en Visual Basic .NET), también tuve algún problema llamando a funciones que recibían algún parámetro. Tras andar google para aquí y google para allá, añadí lo de CallingConvention.Cdecl. Es decir, que la DLL se creó en C y usa su sistema de paso de parámetros. No sé si a Python le afecta o no, pero quizá sirva de pista.
Avatar de Usuario
Marc
grupo TrenSim
 
Mensajes: 4284
Registrado: Jue Ago 28, 2003 11:24 pm
Ubicación: Barcelona

Re: ¿Alguno quiere hacerse su propio RailDriver para RW?

Notapor lgg2 » Sab Ago 20, 2011 11:48 pm

Buenas,

No, no van por ahi los "tiros". En la fuentes que publique al principio carga la dll con la orden cdll. Python maneja tambien por separado otros tipos de llamadas. Ya he conseguido que el programa del jouystick lea la velocidad. Ahora estoy probando a ver si lo leo desde mi alternativa "privada" en ensamblador. De todas formas, "aviso a navegantes", si alguien esta haciendo pruebas como yo, iniciando el RW en modo ventana, el driver no devuelve informacion si no esta la ventana de RW en primer plano y acitva.

Un saludo.

Imagen
lgg2
 
Mensajes: 32
Registrado: Dom Mar 27, 2005 11:12 pm

Re: ¿Alguno quiere hacerse su propio RailDriver para RW?

Notapor jorgete449 » Dom Ago 21, 2011 12:26 am

Hola, estoy siguiendo de cerca este proyecto y parece que promete.A mi me gustaria hacer una cabina como la del video que pongo
http://www.youtube.com/watch?v=8-mJwnm5 ... ideo_title
Esto solucionaria el problema que existe con los servos para los indicadores de velociadad,...
Mi problema es que no se como hacerlo
Saludos
jorgete449
 
Mensajes: 9
Registrado: Mié Nov 11, 2009 5:58 pm

Re: ¿Alguno quiere hacerse su propio RailDriver para RW?

Notapor lgg2 » Dom Ago 21, 2011 1:08 am

Buenas,

Solucionado lo de la lectura de la velocidad. La mala noticia es que hasta que encuentre el porque, Python no se entera de que el valor de la velocidad se queda en el co-procesador.

Leo la velocidad correctamente, en millas por hora, incluso cuando no esta activa la ventana. Pero en ensamblador.

[jorgete449], si que se podria legar a hacer, pero necesitas unas cuantas horas "libres" y un "pelin" de programacion adicional... y como no, querido dinero...

Un saludo.

Imagen
lgg2
 
Mensajes: 32
Registrado: Dom Mar 27, 2005 11:12 pm

Re: ¿Alguno quiere hacerse su propio RailDriver para RW?

Notapor lgg2 » Dom Ago 21, 2011 1:57 am

Buenas,

Si alguno quiere probar lo de la velocidad en su ordenador, que se baje el adjunto, le cambie la extension a .EXE y lo ejecute. No contiene ninguna "m...". Es tan solo un lector de velocidad del RW de prueba. Recomiendo iniciar el RW en modo ventana.

La velocidad ya esta convertida a km/h.

Un saludo.

Imagen
Adjuntos
Velocidad.txt
Fichero EJECUTABLE. Cambiar extension a .EXE No contiene virus. Lo aviso por si algun detector de esos avisa.
(1.67 KiB) 2417 veces
lgg2
 
Mensajes: 32
Registrado: Dom Mar 27, 2005 11:12 pm

Re: ¿Alguno quiere hacerse su propio RailDriver para RW?

Notapor edsolis » Dom Ago 21, 2011 9:16 pm

Respecto al velocímetro un aficionado británico muestra uno en funcionamiento en http://forums.uktrainsim.com/viewtopic. ... 1#p1449136 del que explica algo (poco) en http://forums.uktrainsim.com/viewtopic. ... 0#p1449827
Objetivo: jugar a los trenes.
Avatar de Usuario
edsolis
Bibliotecario
 
Mensajes: 2492
Registrado: Sab Feb 26, 2005 1:48 pm
Ubicación: 7ª Zona

Re: ¿Alguno quiere hacerse su propio RailDriver para RW?

Notapor lgg2 » Dom Ago 21, 2011 11:00 pm

Buenas,

[edsolis], paciencia. La base mínima necesaria para controlar el RW desde el "exterior" ya la tenemos planteada. La lectura de la velocidad del RW ahora también.

La alternativa que he planteado en este hilo es mucho mas sencilla que la que se indica en ese otro hilo. Además, con mayor numero de controles posibles de incluir (entradas/salidas disponibles). Lo de la velocidad, los "relojes" habitualmente tiene un motor paso a paso, muy fácil de manejar desde ARDUINO. Y si no, cada cual puede montarse el suyo.

En el punto que estamos ahora, el siguiente paso a dar es desarrollar los programas, tanto el de la parte de PC (que como cosa buena va a haber distintas alternativas visto lo visto), como el de la parte de ARDUINO. Paralelamente insisto en la necesidad de plantear como poder realizar controles mas o menos "realistas" en madera, metal, cristal, aire o lo que se quiera, puesto que no todos tenemos acceso a controles auténticos.

Asi que paciencia. Por ahora vamos con el "RailDriver.dll". Luego veremos de pasarnos a alguna otra fuente mas fiable.

Un saludo.

Imagen
lgg2
 
Mensajes: 32
Registrado: Dom Mar 27, 2005 11:12 pm

AnteriorSiguiente

Volver a RailWorks

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 21 invitados