Bonjour Alain,
Qu'entends-tu entrer la valeur de "variable" par le clavier ?
Domi
Bonjour Dominique,
Variable est la valeur positive ou négative qui donne la vitesse.
Comment entrer cette valeur dans LUA ?
Je préférerai par l'intermédiaire d'un joystick
Alain
Bonjour Alain.
J'ai chercher joystick dans la recherche du site Allemand, et voici ce qui sort!
https://www.eepforum.de/search/?q=joystick&sortField=time&sortOrder=DESC
Sert toi de Google traduction en ligne pour comprendre ce qui est écrit. Il y a 3 pages avec plusieurs discussions, peut-être que tu trouvera ton bonheur là dedans?
Stéphane. 🤠
Comment entrer cette valeur dans LUA ?
Je préférerai par l'intermédiaire d'un joystick
Donc tu veux interfacer Lua avec un joystick si j'ai tout compris ? Je n'ai pas beaucoup de compétence mais j'essaye de comprendre 🙂
Oui Dominique
Au faite, puisque tu est nouveau, je t'informe qu'il y a des modèles gratuits sur le forum Allemand! Si cela t'intéresse?
Stéphane. 🤠
https://www.eepforum.de/filebase/category-file-list/21-kostenlose-modelle-ab-eep-7/
Bonjour Stéphane,
Merci pour ton information précieuse.
Alain
Bonjour Dominique,
1) - EEP 17 sait interpréter sans LUA les informations logiques et analogiques données par un joystick. Mais ces valeurs ne sont pas allouables par l'utilisateur. Dommage.
Il faudrait que comme dans les simulateurs de vol par exemple, l'utilisateur de EEP puisse à sa guise, allouer chaque commande d'un joystick à une commande de EEP.
Trend voudra-t-il le faire ?
2) - LUA et sa commande EEPSetTrainSpeed("#Nom_du_Train", 80) // Fixe une vitesse cible pour un convoi ferroviaire.
Comment donner à LUA la valeur positive ou négative de la vitesse fixée à 80 dans l'exemple ci-dessus ?
La encore, la reconnaissance des éléments d'un joystick serait intéressant.
Je peux faire reconnaître par Windows un "Joystick" de ma conception qui générera comme tout joystick des valeurs logiques et analogiques.
Il est naturellement indispensable que ces valeurs soient reconnues par EEP.
Si tu le souhaites, je peux te détailler encore plus tout ça, afin que tu puisses le soumettre à Trend.
Bien cordialement
Alain
Bonjour Alain,
J'ai parfaitement compris ce que tu voudrais accomplir avec EEP mais dans l'état actuel des choses, il n'y pas de commandes spécifiques prévues pour assigner une commande personnalisée aux touches d'un joystick hormis celles prévues par défaut. Pour le moment, il n'y a pas de fonctions Lua intrinsèques à EEP pour intéragir avec un joystick.
Néanmoins, on peut interfacer et joindre des bibliothèques externes écrites en C pour récupérer les commandes du joystick, ça c'est possible directement dans un script Lua. Le problème est que si tu récupères la valeur d'une variable en fonction d'une plage de valeur d'une touche de la manette et que tu veux l'assigner par exemple à la fonction EEPSetTrainSpeed("#Nom_du_Train", 'valeur de la variable récupérée dynamiquement') et bien ça ne fonctionne pas car il y a un conflit qui se créé vu que la touche est déjà assignée en interne avec la commande par défaut. Donc nous en revenons au même point : il faut que Trend "libère" les assignations par défaut et laisser l'utilisateur les choisir lui-même. Sauf que, sinon ce serait trop simple !... Trend ne va pas s'embêter pour le moment par une fonctionnalité qui n'a jamais été demandée et pour laquelle les assignations par défaut ont toujours été bien accueillies par les autres utilisateurs...
Voilà... mais comme toujours, je vais de mon côté soumettre cette idée... et la meilleure façon de la mettre en place est de pouvoir paramètrer les touches via des fonctions Lua spécifiques à EEP du style : EEPSetJoystickRunForward("nom_de_la_touche") pour la marche avant ou EEPSetJoystickRunbackward("nom_de_la_touche") pour la marche arrière ou encore EEPSetJoystickRunSpeedFixed("nom_de_la_touche", "Vitesse")... Ce ne sont que des exemples qui ne valent rien mais c'est pour illustrer mon propos.
Cordialement 😉
Domi
Cher Dominique,
Merci pour ta synthèse très réaliste et très précise.
La visualisation des fonctions obtenue dans EEP 17 avec un joystick montre bien l'esprit et la volonté de Trend dans ce domaine.
Tout pour la vue, juste le frein tout ou rien pour la traction.
Il faudrait qu'ils fassent comme tu l'as écrit.
Merci par avance.
Bien cordialement
Alain
EEPSetTrainSpeed("#Nom_du_Train", 'valeur de la variable récupérée dynamiquement')
Et je vais même revenir sur cet exemple avec la fonction EEPSetTrainSpeed et analyser plus en profondeur ce qui doit se passer "sous le capot".
Il faut savoir que via la fonction EEPMain(), 5 appels par seconde sont effectués c'est à dire toutes les 200 millisecondes.
Donc si tu assignes une vitesse dynamiquement à la fonction EEPSetTrainSpeed, dans le court laps de temps où tu fixes une vitesse, celle-ci sera prise en compte que 200 millisecondes plus tard. Jusque là, c'est imperceptible. Sauf que... le temps que cette vitesse soit réellement prise en compte, une nouvelle vitesse sera assignée pour les 200 millesecondes plus tard... Et même dans l'hypothèse que la vitesse ne bouge pas, la même vitesse sera de nouveau réassignée toutes les 200 millisecondes (tant que l'on fera appel à cette fonction). Moralité : le fait de demander à EEP d'assigner une vitesse en continue monopolise des ressources supplémentaires.
Alors bien sûr, le script Lua est exécuté dans un thread séparé et donc en dehors du thread principal qui gère le programme EEP mais quand même...
Voilà pourquoi que la fonction EEPSetTrainSpeed est conçu pour être appelée à un moment précis mais n'est pas conçue pour assigner une vitesse dynamique en boucle. Quand je dis en boucle, même une boucle de quelques secondes serait déjà longue.
Et ce qui m'amène à penser que modifier ce comportement reviendrai à modifier les fondements même d'EEP. Il faut savoir que ce programme a été conçu pour la première fois depuis plus de 20 ans... et à cet époque, l'informatique n'était pas celle qu'elle est maintenant. Malheureusement, la version 17 s'exécute toujours sur un seul thread.
On pourrait encore décortiquer plus en profondeur le pourquoi du comment.
A bientôt pour cette conversation passionnante ! 😉
Domi
Cher Dominique,
Non, les choses sont beaucoup plus simples.
Afin de polariser les esprits, je vous propose cette liste non exhaustive bien sûr de commandes sur le pupitre dédié à venir
Alain
Je viens de m'apercevoir de la mauvaise tabulation de mon document.
Celui-ci sera plus lisible.
Avec mes excuses.
Alain
Bonjour Dominique,
Le joystick est actuellement reconnu par EEP. La Xbox 360 aussi.
Je découvre le langage LUA et m'aperçois que pour interfacer notre pupitre de commande avec EEP par son intermédiaire, une liaison Série RS232 C serait mieux adaptée.
Le protocole reste naturellement à définir et à convenir.
Trend voudrait-il bien nous permettre cette liaison Série traditionnelle au travers du port USB usuel ?
Je reste naturellement à leur disposition pour s'ils le souhaite, participer au développement de cette liaison.
Bien cordialement
Alain