Foro x-plane.es

Foro General => Complementos de X-Plane, aviones, escenarios, plugins... => Mensaje iniciado por: JMSL en 22 Mayo, 2022, 10:30:07



Título: Comando para X-Plane utilizando Stream Deck
Publicado por: JMSL en 22 Mayo, 2022, 10:30:07
Buenos días.
Estoy utilizando un Stream Deck con X-Plane 11, y para ello uso los dos comandos que hay dedicados a X-Plane, que son el \"Generic X-PLane command\" y \"Set X-Plane dataref\".
Normalmente no tengo problema para encontrar el comando y/o dataref que utilizan los botones, palancas, etc del avión para asignarlos a una tecla del Stream Deck. Todo bien, salvo los dataref que están vinculados a los botones que regulan, por ejemplo, la luminosidad. Detecto el dataref involucrado, pero desconozco la forma de hacer que el valor se vaya incrementando, en vez de tomar el valor que le pongo en el campo correspondiente del comando Stream Deck (Set X-Plane dataref).
Cuando pulso el botón con el ratón, observo que se va cambiando en más o menos el valor contenido en el dataref en un valor que seguramente está establecido en otro dataref. El comando Set X-Plane dataref, me permite poner un valor, que es el que asigna a la variable seleccionada. Yo querría que esa variable representada en el dataref, se fuera incrementando/decrementado conforme yo fuera pulsando la tecla de Stream Deck.
¿Alguien podría ayudarme en este problema?
Gracias por adelantado.


Título: Re: Comando para X-Plane utilizando Stream Deck
Publicado por: grrr05 en 22 Mayo, 2022, 12:13:35
Nunca he tocado un Stream Deck concretamente así que desconozco su interfaz para X-Plane, aunque me dá la impresión que no es diferente a cualquier otro dispositivo HID.

Por lo que cuentas, necesitas una función para que la pulsación del botón incremente o disminuya el valor antes de enviarlo al dataref. Si el interfaz del Stream Deck no te permite "scriptear", siempre puedes hacerlo con el plugin FlyWithLua - en este caso (asumiendo que el SD sea un dispositivo HID), que el script de FWL capture las pulsaciones y ejecute dicha funcion. En este caso, para evitar conflictos los botones a usar no deberían estar asignados en el interfaz de Stream Deck.

Sería algo así como:

Código:
#asumiendo que el dataref es un flotante (ratio) de 0 a 1; con pasos de 0.1

valorDataref = dataref()

#incremento
if botonXpulsado:
if valorDataref < 1:
valorDataref += 0.1
escribeDataref(dataref(valorDataref))

#disminucion
if botonYpulsado:
if valorDataref > 0:
valorDataref -= 0.1
escribeDataref(dataref(valorDataref))


Hace muchísimos años que no pico código en LUA (ni siquera eso que he escrito lo és), pero si es lo que necesitas podemos echarle un vistazo, me vendría bien refrescar algunos lenguajes...



Título: Re: Comando para X-Plane utilizando Stream Deck
Publicado por: JMSL en 22 Mayo, 2022, 15:57:52
Buenas tardes. Ante todo muchas gracias por la pronta respuesta que te agradezco enormemente. Entiendo que la solución que ves es la de añadir a los comandos de STREAM DECK creados por FLIGHTDECK, uno que permita modificar los DATAREFS, aumentando/disminuyendo un valor, es decir, programar una función a la que se le facilite el DATAREFS a modificar, y el valor, positivo o negativo que se quiere aumentar o disminuir.
Me parece muy lógico y el script que me indicas parece abundar en este sentido. Pues te agradezco, y acepto,  tu oferta de colaboración, por lo que quedo a las indicaciones que tengas a bien hacerme.
El STREAM DECK XL es como un teclado, de 15 botones a los que puedo poner un texto y una imagen de fondo. Yo estoy encantado con las opciones que me permite con X-Plane.
Reiterando mi agradecimiento, y a la espera de tus indicaciones recibe un afectuoso saludo.
Jose Manuel Surroca Laguardia.


Título: Re: Comando para X-Plane utilizando Stream Deck
Publicado por: grrr05 en 22 Mayo, 2022, 17:42:36
Hmmm acabo de informarme un poco mas sobre el Stream Deck y me temo que no tengo muy buenas noticias, pero eso no significa que no sea posible.

Primero, el Flight Deck para X-Plane es de código cerrado así que olvida añadir nueva funcionalidad de forma nativa.

Luego, Stream Deck no es un HID por lo que lo de capturar eventos de teclas/botones desde FlyWithLua se va al traste salvo que se conecte a traves de un joystick virtual.

He visto que existe este plugin de vJoy para enlazar el Stream Deck a un joystick virtual:
https://github.com/ashupp/Streamdeck-vJoy

Y ahí está el vJoy
https://sourceforge.net/projects/vjoystick/

Lo que no puedo decirte es como interferiría el interfaz nativo de Stream Deck con el joystick virtual, pero eso sí, olvidate de la retroalimentación en los botones que vayas a usar como "joystick", es decir que en ellos no verás ninguna imagen ni se iluminarán ni nada.

Como no tengo el cacharro, voy bastante a ciegas pero puedo asegurarte que con los joysticks virtuales se puede hacer magia, en X-Plane 10 logré enlazar una controladora midi (era una behringer bcr2000 creo) 100% funcional, tanto para botones toggle como pulsadores e incluso ejes analógicos cuya entrada se convertía desde los pulsos de los encoders.

Lo suyo sería que probases primero lo del joystick virtual a ver si se puede usar simultaneamente con el Flight Deck para no sacrificar funcionalidad del cacharro, es decir que te reserves los botones que vayas a usar con script, y todo el resto lo dejas configurado con el Flight Deck, como ahora. Si el Stream Deck está correctamente enlazado al joystick virtual, X-Plane debería detectártelo como joystick, y asegurándote de que el Flight Deck siga funcionando

Si consigues eso, crear las funciones será coser y cantar. Sé que puede parecer un peñazo, y lo es, pero la gran mayoría de los que alguna vez hemos apañado una cabina para simuladores mediante hardware no específico o incluso para extender la funcionalidad del propio hardware, hemos tenido que pasar por esto.


Título: Re: Comando para X-Plane utilizando Stream Deck
Publicado por: JMSL en 22 Mayo, 2022, 18:34:12
De nuevo Gracias por su amabilidad y prontitud.
Ya veo el problema, que me has dejado meridianamente claro. Voy a ponerme en contacto con FLIGHTDECK, pues he estado buscando información sobre los pluggins que han creado para xplane, y según indican, están abiertos a nuevas sugerencias que se les puedan hacer. Afortunadamente, siempre hay personas que se prestan a ayudar a los demás de forma desinteresada.
En cualquier caso muchas gracias por la información, y voy a probar su sugerencia para ver hasta donde me lleva. Naturalmente, si obtengo solución por parte de FLIGHTDECK, se lo comentaré para su conocimiento.
Gracias y buenas tardes. Un saludo.
Jose Manuel Surroca Laguardia


Título: Re: Comando para X-Plane utilizando Stream Deck
Publicado por: JMSL en 23 Mayo, 2022, 10:06:27
Buenos días.
He estado dándole vueltas al asunto, y abusando de su amabilidad, le pediría que me aclarara si estoy en lo cierto, en lo que le voy a exponer. Entiendo que utilizando FlyWithLua, podría crear un comando que se añadiría a los comandos que ya controla X-Plane, como son los del tipo sim/...... o Laminar/.....
Si esto es así, yo podría crear ese comando que me incremente/decremente un determinado valor en el contenido de un dataref determinado. Y llegados a este punto, podría utilizarlo directamente desde el STREAM DECK, mediante el pluggin de X-Plane (realizados por FLIGHTDECK), que ejecuta Comandos X-Plane, o bien el otro que permite modificar Datarefs.
¿Sería posible esto que le expongo? Verdaderamente no tenía pensado meterme en este lio, pero después de darle vuelta a la cosa, me parece que podría añadir algunas cosillas más. En mi vida \"civil\" (ahora estoy jubilado) trabajaba de informático en una entidad bancaria, y creo que no me costaría mucho refrescar la memoria y hacerme con el manejo de Lua.
Espero su opinión al respecto.
Un saludo.
José Manuel Surroca Laguardia


Título: Re: Comando para X-Plane utilizando Stream Deck
Publicado por: grrr05 en 23 Mayo, 2022, 18:17:38
Exacto, bueno ahora creo que si, ayer no lo tenía muy claro.

Acabo de probar con la demo de Stream Deck Mobile desde una tablet, junto con vJoy y X-Plane lo pilla perfecto aunque ahora ya es irrelevante, pues he estado trasteando un poco con FlyWithLua (hacía eones que no lo tocaba) y uno de los scripts de demostración que trae hace exactamente eso que supuestamente necesitas, te crea dos comandos para incrementar/disminuir un dataref en concreto, en el caso del script de demo es para mover la cámara del piloto lateralmente, ahí tendrías que modificarlo para que usara tus dataref y el valor de los pasos (que casualmente ahí también es 0.1). El script en cuestión es el "test commands.lua" y esta en el directorio "Scripts (disabled)" del FlyWithLua, el cual tendrás que mover al directorio "Scripts" para que funcione (no está de mas echarle un vistazo al manual de FWL para ver lo más básico)

Código:
--  test commands.lua

gHeadPositionXDataRef = XPLMFindDataRef("sim/aircraft/view/acf_peX")

create_command( "FlyWithLua/ViewPoint/MoveRight", "Move Right",
                "",
                "XPLMSetDataf(gHeadPositionXDataRef, XPLMGetDataf(gHeadPositionXDataRef) + .1)",
                "XPLMSetDataf(gHeadPositionXDataRef, XPLMGetDataf(gHeadPositionXDataRef) + .1)")

create_command( "FlyWithLua/ViewPoint/MoveLeft", "Move Left",
                "",
                "XPLMSetDataf(gHeadPositionXDataRef, XPLMGetDataf(gHeadPositionXDataRef) - .1)",
                "XPLMSetDataf(gHeadPositionXDataRef, XPLMGetDataf(gHeadPositionXDataRef) - .1)")

Ahí tendrías que cambiar el dataref en XPLMFindDataRef() por el que necesites, el nombre de los comandos y sus respectivas etiquetas son "FlyWithLua/ViewPoint/MoveRight", "Move Right" y "FlyWithLua/ViewPoint/MoveLeft", "Move Left", las etiquetas son lo que se ve en el menú de configuración de X-Plane, los comandos son los que empiezan con "FlyWithLua/..." pero evidentemente puedes usar los nombres y prefijos que quieras.
Por último "gHeadPositionXDataRef" es el nombre del callback, puedes cambiarlo por algun nombre que sea mas relevante conforme lo que hace el comando, mas que nada por si dentro de 10 años tienes que volver a modificar el script, que sea mas entendible ;)

Luego en Flight Deck imagino que podrás configurar dos botones para que lance estos comandos directamente.

Si me dices los dataref que necesitas puedo probarlo en un momento ahora que tengo medio emulado un Stream Deck, pero mas que nada por los comandos, ya que con Flight Deck si que no puedo probar nada. (no es por el precio, pero es que paso de gastarme dinero en cosas que no necesito y que no voy a usar, para eso ya tengo mis vicios jeje)



Título: Re: Comando para X-Plane utilizando Stream Deck
Publicado por: JMSL en 23 Mayo, 2022, 19:56:04
Buenas tardes.
Yo también espero que dentro de diez años pueda, o tenga ganas, de modificar o incluir algún comando más. :D :D :D
El Dataref que me ocupa es sim/cockpit2/switches/instrument_brightness_ratio[0] , [1], [2] y [3] que son los que controlan los botones de brillo de Aviónica, Paneles, Pedestal y Standard respectivamente.

Ya he visto ese archivo que me comentas, pero al desconocer en principio como va el asunto, estoy leyendo el manual de FlyWithLua que me está pereciendo interesante. De paso te planteo una duda. Cuando se crea el comando mediante Create_Command, el valor del dataref que se modifica, lo recibe de oficio, o hay que utilizar una instrucción del tipo Set para devolverlo?
En fin, muy agradecido por tu amabilidad.
Un abrazo.
José Manuel Surroca Laguardia


Título: Re: Comando para X-Plane utilizando Stream Deck
Publicado por: JMSL en 23 Mayo, 2022, 19:57:40
Ah, se me olvidaba que se trata del Cessna 172SP G1000.


Título: Re: Comando para X-Plane utilizando Stream Deck
Publicado por: grrr05 en 24 Mayo, 2022, 01:01:45
Vale ya lo tengo.

https://www.dropbox.com/s/w1rcjje7n0srbly/reostatos_c172.lua?dl=0

Descárgate esto y mételo en el directorio "Scripts" de FlyWithLua.

El script crea ocho comandos, dos para cada uno de los reostatos (aumentar/reducir), que tendras que asignarlos cada uno a un botón de Flight Deck, ya que según cuentas en el primer post el programa te permite tanto mandar comandos como modificar datarefs (en este caso hacemos lo primero). Y respondiendo a tu pregunta, no hay que hacer nada para modificar los dataref, el comando se encarga de ello y cuando se ejecute hará todo lo que haya en él, así que no deberías  preocuparte en absoluto de los datarefs.

Los comandos que se crean son

grrr05/reostatos/avionica/aumentar
grrr05/reostatos/avionica/reducir
grrr05/reostatos/panel/aumentar
grrr05/reostatos/panel/reducir
grrr05/reostatos/pedestal/aumentar
grrr05/reostatos/pedestal/reducir
grrr05/reostatos/stdby_ind/aumentar
grrr05/reostatos/stdby_ind/reducir


He puesto mi nick como prefijo para asegurarse de que el comando no pueda interferir con ningún otro existente ya sea interno de X-Plane o creado por otros plugins o aviones de terceros. Evidentemente puedes editar el script y cambiarlo al gusto, pero asegúrate de que no existan otros comandos con los mismos nombres - si vas a hacerlo usa un editor de texto plano con cara y ojos (para windows te recomiendo NotePad++ (https://notepad-plus-plus.org)), o almenos uno que no se cargue los saltos de línea y esas cosas que suele hacer el bloc de notas.

Ya me contarás, por mi parte con el Stream Deck Mobile conectado a modo de joystick (con las asignaciones de botones definidas dentro de X-Plane) me funciona perfectamente, aunque si el Flight Deck te permite lanzar comandos no veo por que no tendría que funcionar también.


Título: Re: Comando para X-Plane utilizando Stream Deck
Publicado por: bokepacha en 24 Mayo, 2022, 10:01:47
Por momentos pensé que hablábais de la Steam Deck...y me estaba volviendo mu loco.  :D :D


Título: Re: Comando para X-Plane utilizando Stream Deck
Publicado por: grrr05 en 24 Mayo, 2022, 10:28:20
Por momentos pensé que hablábais de la Steam Deck...y me estaba volviendo mu loco.  :D :D
calla calla que el año pasado ya tenía intención de reservar una hasta que lo superé... :-t-


Título: Re: Comando para X-Plane utilizando Stream Deck
Publicado por: JMSL en 24 Mayo, 2022, 11:43:38
Buenos días.
Perfecto en todo. Y de paso me ha aclarado algunas dudas que tenía, pero he visto que se pueden crear funciones a las que se puede llamar desde la creación del Comando en el script, con lo que se pueden chequear situaciones puntuales en el momento de aplicar el comando. Una cuestión. En el comando create_command he leído que de los cinco parámetros, el tercero esta dedicado a operaciones a realizar al pulsar el botón; el cuarto para actuar en el caso de que se mantenga pulsado ese botón y el quinto, para cuando se deje de pulsar la tecla o botón. Desconozco, si es necesario utilizar alguna instrucción más para que se cumpla lo estipulado en el cuarto parámetro.
Muchas gracias por tu inestimable ayuda, y confío en poderte hacer alguna consulta de vez en cuando, cuando me encuentre en un callejón sin salida.
Un saludo.

Voy a seguir buceando en FlyWhithLua, con el fin de ver hasta donde puedo llegar.
Muchas gracias por la ayuda
Vale ya lo tengo.

https://www.dropbox.com/s/w1rcjje7n0srbly/reostatos_c172.lua?dl=0

Descárgate esto y mételo en el directorio \"Scripts\" de FlyWithLua.

El script crea ocho comandos, dos para cada uno de los reostatos (aumentar/reducir), que tendras que asignarlos cada uno a un botón de Flight Deck, ya que según cuentas en el primer post el programa te permite tanto mandar comandos como modificar datarefs (en este caso hacemos lo primero). Y respondiendo a tu pregunta, no hay que hacer nada para modificar los dataref, el comando se encarga de ello y cuando se ejecute hará todo lo que haya en él, así que no deberías  preocuparte en absoluto de los datarefs.

Los comandos que se crean son

grrr05/reostatos/avionica/aumentar
grrr05/reostatos/avionica/reducir
grrr05/reostatos/panel/aumentar
grrr05/reostatos/panel/reducir
grrr05/reostatos/pedestal/aumentar
grrr05/reostatos/pedestal/reducir
grrr05/reostatos/stdby_ind/aumentar
grrr05/reostatos/stdby_ind/reducir


He puesto mi nick como prefijo para asegurarse de que el comando no pueda interferir con ningún otro existente ya sea interno de X-Plane o creado por otros plugins o aviones de terceros. Evidentemente puedes editar el script y cambiarlo al gusto, pero asegúrate de que no existan otros comandos con los mismos nombres - si vas a hacerlo usa un editor de texto plano con cara y ojos (para windows te recomiendo NotePad++ (https://notepad-plus-plus.org)), o almenos uno que no se cargue los saltos de línea y esas cosas que suele hacer el bloc de notas.

Ya me contarás, por mi parte con el Stream Deck Mobile conectado a modo de joystick (con las asignaciones de botones definidas dentro de X-Plane) me funciona perfectamente, aunque si el Flight Deck te permite lanzar comandos no veo por que no tendría que funcionar también.