Forum Flightgear France

Une communauté prend son envol

Vous n'êtes pas identifié(e).

Annonce

Futur nouvel inscrit, tu dois au préalable lire l'intégralité des 10 articles des règles, s'il te plaît. Tout nouveau compte qui ne respecte pas les règles sera supprimé par l'administration.

#1 28/12/2013 2:26:44

daweed
Membre
Lieu : LFKP LFLL
Inscription : 27/12/2013
Messages : 273

Comment agir dans FG à partir d'un client comme Putty ou interface Web

ctesc356 a écrit :

Pas de problème pour moi pour agir a partir d un client comme Putty ou d une interface web sur l'avion, ce matin j ai fait démarrer les moteurs d un A320 proprement en manuel rien qu'avec le Telnet.

Si tu peux développer un peu... ça m'intéresse smile

Bon, alors par où commencer,

D'abord la première chose, FlightGear quand on fouille un peu c est une vraie mine d'or, il a pleins de qualités mais surtout il pleins d'options
Deux d'entre elle qui m'ont fortement intéressé sont les différents serveurs que l'on peux lancer en arrière plans (tache de fond) qui sont capable de fournir une foule de données sur le simulateur (en cours d'utilisation).

Après avoir rapidement installé flightgear et pour des question de commodités je passe par le lanceur FGRun pour lancer le simu

Quand on est sur le derniers écran de réglage avant lancement de la simulation, il y a le petit bouton en bas a droite "Advanced" qui permet d'accéder au paramètre plus "sioux" du simulateur.

Dans la section "network" on peux ajouter, en cochant la case HTTPD et en renseignant un port (dans mon cas j ai choisis le 5500) , le lancement  d'un serveur web qui permet donc accéder au diverses propriétés de la simulation en cours d'exécution.

Pour y accéder rien de plus simple il suffit d'ouvrir un navigateur à l url suivante :

http://localhost:5500 (5500 dans mon cas, mais si vous choisissez un autre port, penser a adapter)

vous aurez accès à un "arbre" permettant de parcourir les données de la simulation, mais bon vous vous rendrez vite compte que c est asser fastidieux à parcourir ... et pas vraiment ergonomique, du moins d'un point de vue programmation en vue de la récupération ou de la mise a jour des paramètre PENDANT la simulation.

La vrai révolution, toujours dans le panel "Advanced", c est la section Input/Output .. et ca porte bien son nom.

Configurer comme suit :

Protocol : Telnet
Medium : socket
Direction : In
Hz : 5 (pour l instant j ai laissé par défault)
Hostname : localhost
Port ... a votre bon vouloir, pour ma part j ai choisis d'utiliser le 5403 et c est purement arbitraire

Ensuite cliquer sur "New" ..

Une ligne du style "--telnet=socket,in,5,localhost,5403,tcp" va apparaitre dans partie fenêtrée au dessus

Cliquer sur OK pour revenir à l'écran précédent puis ... Run, ou plus simplement pour les plus puriste .. ajouter la ligne ci dessus
(--telnet=socket,in,5,localhost,5403,tcp) à votre commande de lancement (en oubliant pas de modifier le port a votre convenance)

Une fois la simulation lancé, vous pouvez commencer a jouer avec Telnet pour piloter les fonctions de l'avions.

Pour ca il faut se connecter avec un client telnet

N'importe quelle distribution Linux possède un client Telnet.

Pour le monde Windows : http://tartarus.org/~simon/putty-snapsh … taller.exe

Se connecter :

asser simple avec linux, a partir d'un terminal :

telnet localhost 5403

si l'écran reste noir, appuyer sur entrer vous devrier avoir une invite , un prompt qui n'attends que des ordres de votre part du genre :

/>

la commande "help" vous donne la liste des commandes disponible :

/> help
Valid commands are:

cd <dir>           cd to a directory, '..' to move back
data               switch to raw data mode
dump               dump current state (in xml)
get <var>          show the value of a parameter
help               show this help message
ls [<dir>]         list directory
prompt             switch to interactive mode (default)
pwd                display your current path
quit               terminate connection
run <command>      run built in command
set <var> <val>    set <var> to a new <val>
subscribe <var>    subscribe to property changes
unscubscribe <var>  unscubscribe from property changes (var must be the property
name/path used by subscribe)
/>

Bon, je fait un autre post, parce que la il y a déjà pas mal a digérer .. et peut être même que les modo locaux vont me demander d'ouvrir un sujet ailleur que dans la presentation ... ^^


Linux Mint 20 Ulyana Cinnamon (64b), AMD Ryzen 7 3700X, RAM 32Go, GeForce RTX 3070 Ti 8 Go
FG 2020.1 Branch. THRUSTMASTER T16000M & T.Flight Rudder & Saitek PRO Flight Throttle Quadrant
Scène Saint Exupery
FG Interface

Hors ligne

#2 28/12/2013 4:14:09

daweed
Membre
Lieu : LFKP LFLL
Inscription : 27/12/2013
Messages : 273

Re : Comment agir dans FG à partir d'un client comme Putty ou interface Web

Alors, on repart simulation lancé,

Paramètre de lancement :

D:\Program Files\FlightGear\bin\Win32\fgfs.exe
  --fg-root=D:\Program Files\FlightGear\data
  --fg-scenery=D:\Program Files\FlightGear\data\Scenery;D:\Program Files\FlightGear\scenery;D:\Program Files\FlightGear\terrasync
  --airport=LFLL
  --aircraft=A320-111
  --control=keyboard
  --disable-random-objects
  --prop:/sim/rendering/random-vegetation=false
  --disable-ai-models
  --disable-ai-traffic
  --disable-real-weather-fetch
  --bpp=32
  --httpd=5500
  --props=5501
  --telnet=socket,in,5,localhost,5403,tcp

J utilise ici la version windows 2.12.1 de FG pour faire une explication, si ca tente vraiment quelqu'un j'essayerais de faire un tuto dans les section qui vont bien avec des vrai capture d'écran

Donc une fois connecté en telnet la commande "ls" permet de lister ce que j'appel l'arbre primaire des propriété de la simulation

/> ls
sim/
position/
orientation/
autopilot/
velocities/
controls/
environment/
local-weather/
devices/
input/
instrumentation/
systems/
logging/
nasal/
scenery/
engines/
consumables/
payload/
fdm/
gear/
aircraft/
command/
canvas/
ai/
surface-positions/
models =        ''      (none)
rendering/
ephemeris/
accelerations/
hazards/
/>

Bon,

La version courte selon les tutos pour démarrer un A320 :

Activer l'APU
Lancer le démarreur de l'APU
Activer le générateur de l'APU
Couper le démarreur de l'APU
Positionner le selecteur de mode de fonctionnement des moteur sur Start
Lancer les moteur 1 pui 2 jusqu'a ce qu'il atteigne 30%
Activer les Générateur des moteur afin qu'il fournissent de l'électicité
Couper le générateur de l'APU
Arrêter l'APU
Positionner le mode de démarrage sur "Normal"

Et voila les moteurs sont lancés

Et comment on fait en mode telnet ... big_smile

Donc connecté au serveur telnet avec le prompt "/>"

Une des branches de l'arbre où l'on va trouver notre bonneur porte également bien son nom :

/> ls
sim/
position/
orientation/
autopilot/
velocities/
controls/
....

Pour accéder au "sous menus" comme pour changer de répertoire sur linux ou windows :

/>cd controls

On descend d'un cran dans l'arborescence :

/controls[0]>

Un petit "ls" pour lister les "sous menus"

/controls[0]>ls

/> ls
sim/
position/
orientation/
autopilot/
velocities/
controls/
environment/
local-weather/
devices/
input/
instrumentation/
systems/
logging/
nasal/
scenery/
engines/
consumables/
payload/
fdm/
gear/
aircraft/
command/
canvas/
ai/
surface-positions/
models =        ''
rendering/
ephemeris/
accelerations/
hazards/
/> cd controls
/controls[0]> ls
flight/
engines/
gear/
lighting/
anti-ice/
APU/
electric/
switches/
fuel/
hydraulic/
pneumatic/
pressurization/
armament/
seat/
autoflight/
/controls[0]>

Et il y a foule, mais on voit toute de suite  ce qu'il nous faut :

Il y a un sous menu "APU", un sous menu "engines" et un menu "electric" .., je pense que c est asser parlant ..

Aller, c est partis, on a dit :

1ère étape activer l'apu

=> donc dans le sous menus "APU"

/controls[0]>cd APU

Une nouvelle fois la commande "ls" pour lister les propriétés de l'APU

/controls[0]> cd APU
/controls[0]/APU[0]> ls

fire-switch =   'false' (bool)
master-switch = 'false' (bool)
starter =       'false' (bool)
off-start-run = '0'     (int)

/controls[0]/APU[0]>

Qu'est ce qu'on voit içi:

La plus part des propriétés sont de type bouléenne (bool / boolean) c est a dire qu'elle ne prenne que deux valeur soit Vrai (true) soit faux (false)
Ce qui est logique pour des boutons comme ceux de l'APU qui n'ont que deux état possible activé ou pas.

Pour récupérer une proriété la commande à utiliser c est "get"
Exemple pour vérifier l'état du master-switch de l'APU de l'A320 :

/> get /controls/APU/master-switch
/controls/APU/master-switch = 'false' (bool)
/>

=> ca nous dit clairement que le master-switch de l'APU est "false" donc éteint (ou désactivé comme vous voulez)

Pour modifier une propriété la commande à utiliser c est "set"
Exemple pour activer le master-switch de l'APU de l'A320

/> set /controls/APU/master-switch true
/controls/APU/master-switch = 'true' (bool)
/>

=> on vient d'activer le master-switch de l'APU de l'A320 et si vous allez faire un tour sur le panel overhead ... miracle .. le master switch indique "ON"

Je vous conseille de garder la simu en mode fenetré plutot qu en mode full screen ... histoire de voir ce qui se passe et de vous mettre sur le panel "overhead"

A oui, j ai quand meme oublié de vous dire quelques choses, toutes les propriétés que l'on voit içi, s'applique a l'A320, c est pas garantis que pour d'autre Zing, le nom des propriétés soient les même. Il faudra surement chercher / adapter les noms et emplacements des propriétés en fonction de l'avion utilisé, certaine propriété par exemple n'étant disponible que si c est a avion à hélice, ou au contraire un avion à réaction


On reprend

J'indiquerais systématiquement les chemins complet vers les propriétés, mais on pourrait faire "cd <menus> puis set <propriété>"

1°) Activer l'APU (donc le master-switch) , on vient de le faire lors de l'exemple mais je répète la commande :
/> set /controls/APU/master-switch true

2°) Démarrer l'APU, cette fois c est la propriété "starter" qu'il faut activer
/> set /controls/APU/starter true

3°) Activer le générateur de l'APU. Alors la il y a un piège, en tous cas sur l'A320 car ce bouton n'est pas dans le menu "APU", mais dans le menu "electric"
/> set /controls/electric/APU-generator true

=> vous devriez (avec le mode A320-211 en tous cas) entendre l'APU se mette en marche et les instruments électronique de l'appareil devraient s'allumer (mcdu, horizon artificiel ... etc)

4°) Couper le démarreur de l'APU
/> set /controls/APU/starter false

5°) Positionner le mode de fonctionnement des moteurs sur "Start". Cette propriété se trouve dans le menu "engines" et c est la propriété "engine-start-switch".
Cette propriété et de type "int" :

Si on récupère la valeur actuelle :

/> get /controls/engines/engine-start-switch
/controls/engines/engine-start-switch = '1' (int)
/>

Il s'agit donc d'une propriété qui prend comme valeur un entier
Dans notre cas, la position start correspond à la valeur 2

/> set /controls/engines/engine-start-switch 2

Les moteurs devraient monter a ~ 5% et être prêt a démarrer

6°) démarrer les moteur 1 et 2 de l'A320
La propriété a modifier c est le "cutoff-switch" qui correspond sur l'A320 au deux manche noir permettant de lancer les réacteurs
Vus qu'il y a deux moteurs, pour accéder a chacun des moteurs il faudra suivre l'arborescence du type :

/controls/engines/engine[n]/cutoff-switch  avec n représentant le N° du moteur , le premier portant le N° 0

Il s'agit de "l'interrupteur de coupure" , donc quand il est sur "true", le moteur est arreté, quand il est sur "false" le moteur est lancé

donc

Pour le moteur N° 1:

/> set /controls/engines/engine[0]/cutoff-switch false

Pour le moteur N° 2:

/> set /controls/engines/engine[1]/cutoff-switch false

Sans même avoir besoin de regarder, vous devrier entendre les réacteurs démarrer et se stabiliser a 30% sur le panneau des moteurs
Mais si vous voulez être sur ... suffit de regarder les pannels dans le cockpit smile

7°) Activer les générateurs des deux moteurs on repart dans le menu "electric" puis pour chaque moteur c est la propriété "generator" qu'il faut activer

Pour le moteur N° 1:

/> set /controls/electric/engine[0]/generator true

Pour le moteur N° 2:

/> set /controls/electric/engine[1]/generator true

8°) Arreter le générateur de l'APU

/> set /controls/electric/APU-generator false

Sur le panel Overhead celui ci doit être repassé a "OFF"

9°) Arrêter l'APU lui même

/> set /controls/APU/master-switch false

A ce moment la, l APU est complément arrêté , et si vous avez suivit à la lettre les opérations, vous deviez avoir

2 moteurs en état de fonctionner , démarré a 30% de régime
Un APU arrêté.

et il ne reste plus qu'a replacer le sélecteur de mode de fonctionnement des moteur sur normal :

10° ) sélecteur de mode de fonctionnement des moteur sur "normal"

/> set /controls/engines/engine-start-switch 1

Vous êtes pret à rouler sur le taxiwayx


  ---- ---- ----

Bref, sans même avoir utilisé une seule fois la sourie sur dans la simulation ni même une touche clavier (dans le simulateur) j ai démarré mes réacteurs.

Ce qui veut dire que le plus gros du boulot est déjà fait par les développeurs, on peut communiquer avec FlightGear a partir de l'extérieur

Comme je l ai expliqué en préambule, il me reste a maintenant pourvoir "déclencher" ces actions à partir de switch , un poussoir et autre encodeur

Je vous disais hier que je ne savais pas par quel bout attaquer ce problème et un collègue au boulot m'as soufflé une solution qui pourrait bien être fonctionnelle pour un coût réduit.

Mais avant de vous en dire plus, je vais faire un POC et je vous tiens au jus

Si ca marche, je me lancerais dans la conceptions complète d'une interface (ca rentre dans mes compétances) restera la programmation et c est la ou j aurais surement besoin d'aide, j'espère donc trouver des codeurs en C++, mais je ferais signe quand j en serais la.

Pour vous donner un ordre d'idée, la solution a laquelle je pense devrait pouvoir gerer au moins 60 entrées / sorties voir même des sorties vidéo (affichage de lhorizon articiel, pannel moteur ... etc) et audio (alarme master cautions ... etc)

Bon, aller, il est temps d'aller au dodo

Attention  !!!!

Tous les exemples ci dessus ne sont valides que pour l'A320 dans l'état actuelle des choses, mais quand on en sera a rendre ca paramétrable, 99% de l'interface aura été conçue.

Je reste à la disposition des gens qui voudrait avoir plus de précision

PS => sur windows il a un client telnet qui si il est installé est accéssible à partir d un terminal de commande (cmd.exe)

@ller

Bonne nuit à tous , je vais me pieuter smile


Linux Mint 20 Ulyana Cinnamon (64b), AMD Ryzen 7 3700X, RAM 32Go, GeForce RTX 3070 Ti 8 Go
FG 2020.1 Branch. THRUSTMASTER T16000M & T.Flight Rudder & Saitek PRO Flight Throttle Quadrant
Scène Saint Exupery
FG Interface

Hors ligne

#3 28/12/2013 12:46:35

Patten
Membre
Lieu : LFLR
Inscription : 14/12/2010
Messages : 1 757
Site Web

Re : Comment agir dans FG à partir d'un client comme Putty ou interface Web

Salut à tous,

Merci daweed, c'est bien expliqué, donc jusque là je suis, pourvu que çà dure...

En gros, on fait en console ce que l'on peut aussi faire dans l'arbre des propriétés (/ du panneau numérique quand Fg est lancé), mais on peut récupérer les données. (j'ai bon?)

Heu c'est quoi un POC?. tongue

Dernière modification par Patten (28/12/2013 12:46:52)


Intel I7.7700k 4.2 GHz.CM:MSI Z270 Gaming pro.CG:ASUS GTX 3070 Tuff OC  8Go.Ram:32Go DDR4 GSKILL. 2*SSD 500G 1*M2 500G 1*M2 1T, 2*HDD 2*2T Seagate Baracuda.Alim:Corsair RM750X 80Plus Gold.Ventirad Be quiet pure rock.Boîtier Aérocool GT-S black édition.DVD Asus drw-24f1-mt. Wifi + Bluetooth gigabyte.Dual boot LinuxMint 20.3 Una /Windows10 FG2020.4.0
http://pattenflightgear.wifeo.com/

Hors ligne

#4 28/12/2013 13:06:27

f-toro
Administrateur
Lieu : LFLA
Inscription : 16/12/2007
Messages : 3 015

Re : Comment agir dans FG à partir d'un client comme Putty ou interface Web

Patten a écrit :

Heu c'est quoi un POC?. tongue

Ce serait pas ça, par hasard ?


André. anciennement taureau89_9
Debian Testing Amd64. CM Sabertooth 990FX, FX8350, 32 Go Ram DDR3 1866 Mhz, GTX 1060 6Go, DD 2To Sata 3, THRUSTMASTER T.Flight StickX, FG 2020.4.0 Git.

Hors ligne

#5 28/12/2013 14:43:25

f-ojac
Membre
Inscription : 15/03/2012
Messages : 2 007

Re : Comment agir dans FG à partir d'un client comme Putty ou interface Web

Moi j'aime bien les stagiaires comme ça !


FG git - GNU/Linux 64 bits - Quadcore i7500 2,7 GHz - RAM 8 Go + GTX940MX

Hors ligne

#6 28/12/2013 14:50:57

daweed
Membre
Lieu : LFKP LFLL
Inscription : 27/12/2013
Messages : 273

Re : Comment agir dans FG à partir d'un client comme Putty ou interface Web

Salut, désolé, oui, un poc c est bien un Proof Of Concept

Je ne sais pas si je serais capable de mettre à jour aussi régulièrement que possible le thread, mais je vais m y employer.

Oui c est tout a fait le concept, lire et agir sur les variables du simulateur.

Et Telnet n'est que l'un des nombreux protocole de communication que FlightGear peut comprendre.
Peut être que ce protocle n est pas le plus adapté, il va me falloir faire des essais avec les autres, histoire de trouver le plus ergonomique et le plus simple à mettre en oeuvre

La prochaine étape c'est d'interfacer le hardware
Je vais créer sur une platine de test électronique, les boutons qui vont bien et faire un peu de programmation pour gérer les entrés / sortie (donc les boutons)

L'idée maîtresse c est j'appuis sur un bouton (un poussoir par exemple pour représenter le master-switch de l'APU) => C est l'action

==> Cela devra entraîner une réaction qui sera :
1°) envoie de la commande telnet adéquate
2°) allumer une led (ou éteindre selon l'état du bouton )  et qui dans la version finale sera incorporer dans le bouton du panel overhead

Concernant le hardware, ca ne devrait pas poser de problème .. la conception de PCB fait aussi partis de mes cordes

Pour la programmation, je pense que pour la 1 ère version basique l'un de mes collègues pourra me filer la base pour le C++

Quand à l'interface entre les switch et le PC .. et bien la ... ce sera la surprise (un peu de mystère .. héhé) je vous en parlerais si le POC fonctionne.

Sachez que la solution que j envisage porte sur une interface qui coute dans 45 $ (hors interrupteur, cables, circuit d'affichage...et petit matériel) ce qui me semble un prix fort raisonnable pour une interface qui pourra gérer entre 50 et 60 entrées / sorties et même faire de l'affichage surtout quand on voit le prix des interfaces "propriétaire"

J ai bien regardé les liens fournis, donc l'un qui mene vers un cockpit d'un A320 fait par un passionné retraité , mais après avoir vérifié l'ensemble, son appareillage est très lourd. Il lui faut 5 PC pour tous gérer et tous les éléments ont été acheté a des prix  que j'ose pas annoncer ici
Enfin bref, sur son site on trouve même le récap et on monte a un cockpit à + de 10 K€ .... hors de question d'en arriver là madame me passerait à la guillotine lol

Il y aura de la menuiserie .. enfin bref, une fois le POC réaliser, il me faudra faire une étude (plan du cockpit, dimension, matériaux ... etc) et la j aurais surement aussi besoin de vous pour avoir des infos sur le cockpit de l'A320

La finalité c est de pouvoir adapter mon interface à tout type d'appareil ce qui ne sera pas trop difficile puisque le coeur du systeme sera la reconnaissance du hardaware qui une fois le POC validé ne sera qu'un histoire d'appeler la bonne propriété  (donc changer la programmation) ce qui fans le fond pourrait être fait a traver un fichier de configuration.

Mais bon, il ne faut pas aller trop vite pour ne pas se décourager et valider chaque étape.

Et j'espère bien partager tous ça ici avec vous smile

Avec le reveillons qui s'amene, je pense que je n aurais pas d'eesais concluant avant la premiere quinzaine de janvier, donc il va falloir patienter, j ai l'impression que cerains bouillonne déjà (et ca fait un plaisir ... d'en donner smile )

@ller à plus la compagnie smile


Linux Mint 20 Ulyana Cinnamon (64b), AMD Ryzen 7 3700X, RAM 32Go, GeForce RTX 3070 Ti 8 Go
FG 2020.1 Branch. THRUSTMASTER T16000M & T.Flight Rudder & Saitek PRO Flight Throttle Quadrant
Scène Saint Exupery
FG Interface

Hors ligne

#7 28/12/2013 15:55:31

ctesc356
Membre
Inscription : 18/05/2010
Messages : 3 483

Re : Comment agir dans FG à partir d'un client comme Putty ou interface Web

Bonjour,

daweed a écrit :

Bon, alors par où commencer

Par le début smile

Merci pour ce cours!

J'ai réussi lire et à modifier une propriété par telnet, donc c'est bien expliqué wink 

Amicalement.


Intel i5-9400F, 16Go Ram, Nvidia GTX1660Ti, Linux Mint

Hors ligne

#8 28/12/2013 15:59:47

Patten
Membre
Lieu : LFLR
Inscription : 14/12/2010
Messages : 1 757
Site Web

Re : Comment agir dans FG à partir d'un client comme Putty ou interface Web

daweed a écrit :

Avec le réveillon qui s’amène, je pense que je n aurais pas d’essais concluant avant la première quinzaine de janvier, donc il va falloir patienter, j ai l'impression que certains bouillonne déjà (et çà fait un plaisir ... d'en donner smile )

@ller à plus la compagnie smile


À ouais quand même, 15 jours pour récupérer, tu dois bien te lâcher pendant le réveillon!. hmm


Intel I7.7700k 4.2 GHz.CM:MSI Z270 Gaming pro.CG:ASUS GTX 3070 Tuff OC  8Go.Ram:32Go DDR4 GSKILL. 2*SSD 500G 1*M2 500G 1*M2 1T, 2*HDD 2*2T Seagate Baracuda.Alim:Corsair RM750X 80Plus Gold.Ventirad Be quiet pure rock.Boîtier Aérocool GT-S black édition.DVD Asus drw-24f1-mt. Wifi + Bluetooth gigabyte.Dual boot LinuxMint 20.3 Una /Windows10 FG2020.4.0
http://pattenflightgear.wifeo.com/

Hors ligne

#9 28/12/2013 16:20:02

daweed
Membre
Lieu : LFKP LFLL
Inscription : 27/12/2013
Messages : 273

Re : Comment agir dans FG à partir d'un client comme Putty ou interface Web

Salut,

bah foncièrement, c est clair que je vais grandement décompresser ... mais le délais c est surtout a cause du matos ..

il faut que je me procure l'interface choisie (.. ha je vois ils veulent me faire parler avant l heure ... lol )
Avec ces fêtes en fin d année ca risque déjà de prendre une semaine pour arriver, j habite au fin fond de la cambrousse a 50 Km de Lyon ... lol

Il faut je que me procure quelques composant électronique et que je repotasse un peu les datasheet des circuits que je vais utiliser, bref, plus la programmation à mettre en oeuvre ... et si je suis pas trop bourré smile ca devrais nous amener environ mis janvier

Je suis impatient de commencer a développer smile

Promis dés que j'ai des news, vous en aurez la primeur

@ plus


Bon, je viens de contrôler les stock de l'interface, qui accessoirement est seulement en train de sortir chez nous, il va me falloir attendre jsuqu'a mis janvier pour l avoir en stock .., meme chez des pointure comme radiospare ...

Ca va me permettre de mettre au point le diagramme de test

Dernière modification par daweed (28/12/2013 16:50:17)


Linux Mint 20 Ulyana Cinnamon (64b), AMD Ryzen 7 3700X, RAM 32Go, GeForce RTX 3070 Ti 8 Go
FG 2020.1 Branch. THRUSTMASTER T16000M & T.Flight Rudder & Saitek PRO Flight Throttle Quadrant
Scène Saint Exupery
FG Interface

Hors ligne

#10 28/12/2013 17:36:22

Patten
Membre
Lieu : LFLR
Inscription : 14/12/2010
Messages : 1 757
Site Web

Re : Comment agir dans FG à partir d'un client comme Putty ou interface Web

daweed a écrit :

Salut,


... j'habite au fin fond de la cambrousse a 50 Km de Lyon ... lol

... et si je suis pas trop bourré smile ca devrais nous amener environ mis janvier
@ plus

Mouais, c'est bien expliqué là aussi, c'est vrai que je suis aussi à 50km au Sud de Lyon, mais pas du même coté du Rhône que toi  wink


Intel I7.7700k 4.2 GHz.CM:MSI Z270 Gaming pro.CG:ASUS GTX 3070 Tuff OC  8Go.Ram:32Go DDR4 GSKILL. 2*SSD 500G 1*M2 500G 1*M2 1T, 2*HDD 2*2T Seagate Baracuda.Alim:Corsair RM750X 80Plus Gold.Ventirad Be quiet pure rock.Boîtier Aérocool GT-S black édition.DVD Asus drw-24f1-mt. Wifi + Bluetooth gigabyte.Dual boot LinuxMint 20.3 Una /Windows10 FG2020.4.0
http://pattenflightgear.wifeo.com/

Hors ligne

#11 28/12/2013 19:09:22

f-toro
Administrateur
Lieu : LFLA
Inscription : 16/12/2007
Messages : 3 015

Re : Comment agir dans FG à partir d'un client comme Putty ou interface Web

Patten a écrit :

je suis aussi à 50km au Sud de Lyon, mais pas du même coté du Rhône que toi  wink

S'il n'y a que le Rhône à traverser, vous allez bientôt pouvoir vous rencontrer ! roll


André. anciennement taureau89_9
Debian Testing Amd64. CM Sabertooth 990FX, FX8350, 32 Go Ram DDR3 1866 Mhz, GTX 1060 6Go, DD 2To Sata 3, THRUSTMASTER T.Flight StickX, FG 2020.4.0 Git.

Hors ligne

#12 28/12/2013 20:13:48

daweed
Membre
Lieu : LFKP LFLL
Inscription : 27/12/2013
Messages : 273

Re : Comment agir dans FG à partir d'un client comme Putty ou interface Web

Ca pourrait se faire à l'occasion smile sur Lyon ... en plus j y bosse tous les jours ... yikes


Linux Mint 20 Ulyana Cinnamon (64b), AMD Ryzen 7 3700X, RAM 32Go, GeForce RTX 3070 Ti 8 Go
FG 2020.1 Branch. THRUSTMASTER T16000M & T.Flight Rudder & Saitek PRO Flight Throttle Quadrant
Scène Saint Exupery
FG Interface

Hors ligne

#13 29/12/2013 17:45:44

daweed
Membre
Lieu : LFKP LFLL
Inscription : 27/12/2013
Messages : 273

Re : Comment agir dans FG à partir d'un client comme Putty ou interface Web

Bon dimanche à tous ..

Bon, j ai fait un pas, un petit , mais un pas.

Mais ce petit pas pourrais être le plus important dans la suite des travaux.

J'envisagais de coder en C/C++ ... mais je viens de découvrir le Python, un autre langage barbare pour le commun des mortels ... mais qui a plusieurs avantages :

1°) c est un langage fortement utilisé aujourd'hui
2°) il a donc une grande communauté
3°) il peut être utilisé pour développer sur l'interface que j'envisage d'utiliser <=== et ca c est déjà un gros plus
4°) les développeurs de FG ont déjà créer quelques bibliothèque pour s'interfacer avec FG <=== donc en plus pas besoin de réinventer la poudre et c est un ENORME plus
5°) j ai déjà trouver des exemples concrets

et 6°)

Voila pour les Linuxiens (désolé pour les Wndowsiens ... pour l'instant je suis incapable d'expliquer comment installer / implémenter le langage python sur $MetlaDose$)

Deux script :
- le premier est une bibliothèque python que j ai trouvé dans les sources de flightgear qui permet de se connecter en Telnet a FG  et d'envoyer des ordres
   => c est a dire d'agir sur les variables (propriétés du simulalteur) comme je l'ai fait manuellement
  http://dev.farmersoft.fr/Python/FlightG … ghtGear.py

- le second est un script de mon cru qui effectue toutes actions nécessaire au démarrage des moteurs d'un A320 ...
  http://dev.farmersoft.fr/Python/FlightG … -telnet.py

Dans mon script, pour que ca fonctionne chez vous il faut modifier deux valeurs à la ligne N° 5 :

fg = FlightGear('192.168.0.30', 5403)  <=== il faut penser a adapter comme c est démarrer chez vous

- 192.168.0.30 c est l'adresse ip de la machine qui exécute FG (donc surement localhost pour la plus part d'entre vous)
- 5403 c est le port du serveur telnet de FG

Parce que je viens de tester comme j'entends faire fonctionner l'interface , c est a dire en stand alone, je me suis servis d'un ordinateur portable connecté dans le reseau pour exécuter le script alors que FG tourne sur le pc familiale

=> Heuu oui si je vais au bout de la solution retenus (et ce que je viens de réaliser aujourd'hui est plus que prometteur), l'interface sera en faite totalement autonome , donc celle ci ne consommera aucune ressource sur l'ordinateur qui exécute FG), elle sera connecté dans un reseau local via ethernet (prise RJ45)

Encore une fois, les DEV on fait un boulot d'enfer et beaucoup de chose sont déjà présente dans le simulateur, pas besoin de réinventer la poudre, il suffit de s'en servir smile

Donc pour faire marcher la solution, il suffit de mettre les deux scripts python dans le même répertoire

Lancer FG (attention le script n'est garantis qu'avec l A320, comme je l ai déjà expliqué il est possible que les variable prennent d'autre nom pour les autres zinc, voire n'existe pas)

puis dans un terminal on se place dans le répertoire où se trouve les scripts puis :

python test-fg-telnet.py

!!!! attention a l'interrieur des scripts, car le python est un langage asser strict dans la façon de l'écrire, il faut bien veiller a respecter l'indentation .. c est une galère au début , mais on s'y fait smile!!!

Dernière modification par daweed (29/12/2013 17:46:48)


Linux Mint 20 Ulyana Cinnamon (64b), AMD Ryzen 7 3700X, RAM 32Go, GeForce RTX 3070 Ti 8 Go
FG 2020.1 Branch. THRUSTMASTER T16000M & T.Flight Rudder & Saitek PRO Flight Throttle Quadrant
Scène Saint Exupery
FG Interface

Hors ligne

#14 29/12/2013 19:21:00

f-toro
Administrateur
Lieu : LFLA
Inscription : 16/12/2007
Messages : 3 015

Re : Comment agir dans FG à partir d'un client comme Putty ou interface Web

Là, c'est le cas de le dire, surtout pour un A320, tu nous transportes ! big_smile


André. anciennement taureau89_9
Debian Testing Amd64. CM Sabertooth 990FX, FX8350, 32 Go Ram DDR3 1866 Mhz, GTX 1060 6Go, DD 2To Sata 3, THRUSTMASTER T.Flight StickX, FG 2020.4.0 Git.

Hors ligne

#15 30/12/2013 1:53:18

daweed
Membre
Lieu : LFKP LFLL
Inscription : 27/12/2013
Messages : 273

Re : Comment agir dans FG à partir d'un client comme Putty ou interface Web

Heuu c est encore moi .. la lumière n'était pas encore éteinte alors je suis repassé smile

Bon quand je vous disais que il pouvait y avoir des différence entre les zavions .... et bien voila un exemple concret.

Ce soir, après avoir posté les premiers scripts, je me suis dit, allez soyons fou, on va tester ça sur un autre avion.
Et je me suis dit, on va pas faire trop violent pour une première, on va rester chez le même constructeur .. bref, j ai voulus tenter la manoeuvre avec cette fois un A330

J ai trouvé l'A320 sur le site officiel de FG et pour l'A330 ici http://theomegahangar.flymerlion.org/aircraft.html

Premier test avec l'A330... échec ... les réacteur ne démarre pas ... yikes ... mais pourquoi
Bon déjà première pelle, j ai appris à mes dépends que pour démarrer les réacteurs sur l'A330 (en tous cas sur le modèle en question) il faut penser à activer les pompes à fuel ... chose que je ne faisait pas sur l'A320.

Bon j ai fouillé un peu , sur l'overhead ce sont les boutons situé dans la section "FUEL" dénommés LTK PUMPS, CTRTK PUMPS et RTK PUMPS.
Logique quelques part me direz vous, faut bien alimenter les réacteurs en carburant.

Après quelques recherche, ... de longue recherche, j ai commencé vers 21h, regardez l'heure du message actuelle ...lol, j ai finis par trouver :

Sur l'A330, la propriété qui gère les pompes s'appel "boost-pump[0]" pour la pompe 1 et "boost-pump[1]" pour la pompe 2 pour chaque réservoir (Tank) et pour ne pas arranger les choses, ces propriétés ne sont pas situé comme on pourrais le penser dans les réservoirs 1, 2 et 3 .... pour Gauche, Centre et Droite mais dans la les reservoirs 2, 3 et 4

Je ne sais pas ce qu'il est passé par la tête des développeur de ce modèle à ce moment la smile

Bref, le contrôle des pompes est donc accessible via :

/controls/fuel/tank[n]/boost-pump[m]

n représente le numéro du réservoir et m le numéro de la pompe ....

Du coup je corrige mon script pour rajouter dans la séquence l'activation des pompes, et je relance ... houaaa mon A330 se met en marche, parfait .. c'est génial.

Du coup je me dit que même si dans l'état actuelle ces boutons n'ont pas besoin d'être activer dans la séquence de lancement de l'A320 (les réacteurs démarraient sans que j ai besoin de les activer) , autant le faire quand même ....

J'essaye donc à nouveau mon script cette fois avec l'A320 .... mon script fonctionne, c'est a dire j'entends par la que les moteurs démarrent .... mais les pompes sont resté sur OFF .... roll mad

Et bien voyez vous, les développeur de l'A320 on placé les commandes des pompes dans une autres arborescence ...

donc pour résumé, j ai maintenant 2 scripts de démarrage (pour prendre en compte les pompes a Fuel) :

1°) pour l'A330
http://dev.farmersoft.fr/Python/FlightG … et-A330.py
avec les contrôles des pompes situé dans :
/controls/fuel/tank[n]/boost-pump[m]

2°) pour l'A320
http://dev.farmersoft.fr/Python/FlightG … et-A320.py
avec les contrôles des pompes situé dans :
/consumables/fuel/tank[n]/selected

où n représente le numéro de réservoir + numéro de pompe ... c a d :

n = 0 pour la pompe 1 du reservoir gauche
n = 1 pour la pompe 2 du reservoir gauche
n = 3 pour la pompe 1 ET 2 du reservoir centrale
n = 4 pour la pompe 1 du reservoir droit
n = 5 pour la pompe 2 du reservoir droit

La aussi , je ne sais pas ce qu'il est passé par la tête des développeur de l'A320 , pourquoi les contrôles des pompes ne sont pas situé dans /controls ....

Sur ce je souhaite bonne nuit, demain j'attaque avec un collègue les premiers test matériel, mais ce ne sera pas sur l'interface prévue, celle ci n'étant pas disponible avant mis janvier.
Pour les premiers test hardware, je vais me rabattre une autre interface exploitable de la même façon mais avec beaucoup moins d'entrées / sorties.

@Bientot


Linux Mint 20 Ulyana Cinnamon (64b), AMD Ryzen 7 3700X, RAM 32Go, GeForce RTX 3070 Ti 8 Go
FG 2020.1 Branch. THRUSTMASTER T16000M & T.Flight Rudder & Saitek PRO Flight Throttle Quadrant
Scène Saint Exupery
FG Interface

Hors ligne

#16 31/12/2013 14:39:02

ctesc356
Membre
Inscription : 18/05/2010
Messages : 3 483

Re : Comment agir dans FG à partir d'un client comme Putty ou interface Web

Bonjour,

daweed a écrit :

Après quelques recherche, ... de longue recherche

Le triste sort de celui qui cherche a comprendre smile
C'est vrai que c'est souvent déroutant pour comprendre le fonctionnement d'un avion, surtout pour les systèmes complexes, de devoir d'abord assimiler ou se trouvent les propriétés utilisées, et de ne pratiquement jamais trouver le même schéma.

Encore merci pour tes explications et exemples!

Jusque là j'ai compris, j'ai réussi à pondre un script pour démarrer le DHC2 et ça fonctionne big_smile
http://www.partage-facile.com/IX8GTRWO2 … y.zip.html

Je remarque que l'échange par telnet est assez lent. J'ai lu quelque part que pour communiquer des valeurs changeant rapidement (positions, attitudes etc) on pourrait utiliser UDP . Peut'on trouver des exemples de communication Fg - python en UDP ?

Amicalement.


Intel i5-9400F, 16Go Ram, Nvidia GTX1660Ti, Linux Mint

Hors ligne

#17 31/12/2013 19:11:40

daweed
Membre
Lieu : LFKP LFLL
Inscription : 27/12/2013
Messages : 273

Re : Comment agir dans FG à partir d'un client comme Putty ou interface Web

Salut ctesc356,

Bon, je serais totalement dans l'incapacité de faire un cours réseaux, c'est totalement hors de mes compétances techniques.

Mais je peux dire trois choses ce sur ce que tu demande.

1°) Avant de valider ou non la méthode telnet (et dire qu'il peut y avoir de la latence) il va falloir réellement faire des test avec du hardware, mais ca ce ne sera probablement pas possible avant la fin janvier (pb de dispo du materiel servant a concevoir l'interface)

2°) Je compte faire des bench en ecrivant du code C++ (potentiellement plus rapide que le python car le code ne sera plus "interprété" mais direcement en langage machine (le C++ se compile, ce qui donne un exécutable qui serait natif pour l'os)

3°) Si je doit changer le protocole réseau , ce ne sera surement pas en UDP pour deux raison :

   - UDP est un protocole réseau dit "non connecté" cela revient a dire que pour envoyer un ordre au serveur il faut a chaque fois regénerer la connexion  au serveur avant l'envoie d'ordre .. => cela pourrait donc amplifier le phénomème de latence.
   - et surtout le protocle UDP est un protocole non contrôlé, c est a dire que les packets transmis sur le réseau peuvent arriver dans le désordre, voir ne pas arriver du tout , et il n y aurais pas retour sur le fait que la transmission s est mal passé ...imagine que tu transmette un cap a 185 ° à l auto pilote, et que seul 18 arrive .... (pour transmettre une info sur le réseau, la data est découpé en sous packet d information que l'on ne maîtrise pas).

=> donc si je dois mettre en oeuvre un autre protocole ce sera certaine plutot TCP qui lui est du type connecté (la connexion au serveur est ouverte une fois via une socket réseau et tant que la déconnexion n est pas envoyé ... on reste connecté).
Et surtout avec TCP il y a un "acknowledge" (c est a dire un retour du serveur) sur le fait que le packet transmis est arrivé à destination et en bon état, dans l'ordre ... etc

Problème c est que gérer la connexion socket en python ... je ne sais pas encore faire

Deuxième problème, pour une connexion et une gestion socket d un serveur distant ... il faudrait coder ca en C/C++ pour que ce soit efficace et la .. bein pareil c est pas vraiment dans mes cordes car c est un langage complexe à appréhender , mais si il faut je m y mettrais.

D'un autre coté si il a des master jedi en C++ sur le forum ca pourrais aider. je suis ouvert a toute sugestion.

Je te rejoins de toute façon sur le fait que gérer quantité d'information en telnet pourrait poser problème, et autant la connexion en python et l envoie d'ordre vers FG est super bien documenter , autant (mais c est surement due à mon manque de connaissance en réseau et en C++) l'utilisation de ce qu'ils appel les connexion native avec socket TCP c est un peu le désert dans la doc ...

il va me falloir beaucoup d'aide pour mettre ca en oeuvre.

Je ne dit pas que c est impossible ...mais je vais galérer. smile

En tous cas bon reveillons à tous, je vous tiendrais au courant de mes avancées


Linux Mint 20 Ulyana Cinnamon (64b), AMD Ryzen 7 3700X, RAM 32Go, GeForce RTX 3070 Ti 8 Go
FG 2020.1 Branch. THRUSTMASTER T16000M & T.Flight Rudder & Saitek PRO Flight Throttle Quadrant
Scène Saint Exupery
FG Interface

Hors ligne

#18 31/12/2013 23:46:15

daweed
Membre
Lieu : LFKP LFLL
Inscription : 27/12/2013
Messages : 273

Re : Comment agir dans FG à partir d'un client comme Putty ou interface Web

Bon, je suis allé, par acquis de conscience relire la doc,

Effectivement, il explique que pour des "choses" (le terme est volontaire plutôt que propriété et je vais expliquer smile ) qui se modifie rapidement (exemple donnée : position, horizon ... etc en gros les données d'affichage ), le telnet n'est pas forcement des plus judicieux ...

Mais ce que nous réalisons ici est un interface de hardware, histoire d envoyer des commandes à l'appareil et attendre une réaction de sa part

=> quand donne un nouveau cap à l'auto pilote, le changement de cap n est pas instantané (même sur appareil réel il faut le temps que l'appareil se cale sur la nouvelle direction ..  ).

Et je pense fermement que la vrai solution serais d'implémenter un client telnet en C/C++

Alors attention aussi, dans mes scripts j ai mis des "pause" entre les ordres (la fonction time.sleep en python permet de dépenser du temps ... smile
Ces pauses si tu ne les pas enlevées me servait à changer de vue [ les commande view_next() et view_prev()  en commentaire avec un # dans les derniers scripts ] me permettrait de changer de vue dans le cockpit afin de bien observer le comportement ] et certaine de ces pause sont positionnées a 5 secondes je crois.

Sur le wiki FG il donne clairement l'exemple dans le manuel d'utilisation du telnet pour l AP .. mais dans tous les cas, seul les bechmark réalisés avec du hardware connecté au simu permettrons de statuer définitivement

Tous ce que je viens de dire n'as qu'une valeur théorique dans l'état actuel de mes recherches.

Et au contraire, si je peux avoir 2 solutions au lieu d'une c est encore mieux. Tous cela ne sera qu'une question de priorité dans la conduite du projet.

Merci du soutiens en tous cas, ca motive smile

J ai vus aussi qu'il y avait un paramètre qui concerne la vitesse de transmission (paramètre Hz lors de l'ajout de l option telnet)
Il faut que je fasse aussi des test en augmentant cette valeur mais je suis pas certains que ca change grand chose

EDIT :
Je viens de regarder a ton script et je vois que tu as bien enlever les times (désolé j avais pas pris la peine avant )
Je l'ai essayé et pas de soucis chez moi !
Tu as des latences ?

Ma config :

AMD Athlon(tm) 64 X2 Dual Core Processor 5600+
GeForce 9800 GT
6 Gb de RAM


PS Derniers post avant 2014 smile

dans la doc ça parle d exemple dans  : FlightGear/scripts/example/fgfsclient.c
Mais je ne trouve pas ces répertoire dans mon installation. Quelqu'un l'as quelques part ???
D'avance merci ca pourrait me faire faire un grand pas pour gerer l'interface en C++

Dernière modification par daweed (1/01/2014 0:31:00)


Linux Mint 20 Ulyana Cinnamon (64b), AMD Ryzen 7 3700X, RAM 32Go, GeForce RTX 3070 Ti 8 Go
FG 2020.1 Branch. THRUSTMASTER T16000M & T.Flight Rudder & Saitek PRO Flight Throttle Quadrant
Scène Saint Exupery
FG Interface

Hors ligne

#19 1/01/2014 9:20:44

ctesc356
Membre
Inscription : 18/05/2010
Messages : 3 483

Re : Comment agir dans FG à partir d'un client comme Putty ou interface Web

Bonjour, bonne et heureuse année à tous!

dans la doc ça parle d exemple dans  : FlightGear/scripts/example/fgfsclient.c

Ce ne serait pas ça?:
https://gitorious.org/fg/flightgear/sou … ts/example

Amicalement.


Intel i5-9400F, 16Go Ram, Nvidia GTX1660Ti, Linux Mint

Hors ligne

#20 1/01/2014 10:05:08

daweed
Membre
Lieu : LFKP LFLL
Inscription : 27/12/2013
Messages : 273

Re : Comment agir dans FG à partir d'un client comme Putty ou interface Web

ctesc356 a écrit :

Bonjour, bonne et heureuse année à tous!
Ce ne serait pas ça?:
https://gitorious.org/fg/flightgear/sou … ts/example

Amicalement.

Cool,

Bonne année à tous,

Merci ctesc356, je vais essayer d'exploiter ca


Linux Mint 20 Ulyana Cinnamon (64b), AMD Ryzen 7 3700X, RAM 32Go, GeForce RTX 3070 Ti 8 Go
FG 2020.1 Branch. THRUSTMASTER T16000M & T.Flight Rudder & Saitek PRO Flight Throttle Quadrant
Scène Saint Exupery
FG Interface

Hors ligne

#21 1/01/2014 10:32:12

ctesc356
Membre
Inscription : 18/05/2010
Messages : 3 483

Re : Comment agir dans FG à partir d'un client comme Putty ou interface Web

J ai vus aussi qu'il y avait un paramètre qui concerne la vitesse de transmission (paramètre Hz lors de l'ajout de l option telnet)
Il faut que je fasse aussi des test en augmentant cette valeur mais je suis pas certains que ca change grand chose

J'ai essayé 100Hz, ça accélère nettement! Au delà c'est difficile à estimer.
Mais c'est peut-être au détriment d'autre chose?

Dernière modification par ctesc356 (1/01/2014 10:33:38)


Intel i5-9400F, 16Go Ram, Nvidia GTX1660Ti, Linux Mint

Hors ligne

#22 1/01/2014 13:43:50

jano
Moderateur
Inscription : 13/11/2007
Messages : 963

Re : Comment agir dans FG à partir d'un client comme Putty ou interface Web

J'ai lu quelque part que pour communiquer des valeurs changeant rapidement (positions, attitudes etc) on pourrait utiliser UDP

imagine que tu transmette un cap a 185 ° à l auto pilote, et que seul 18 arrive

lol

oui, l'udp, c'est ce qui va le mieux, parce que c'est le plus simple, le plus rapide, et  que l'absence de controle de reception n'est pas un handicap ici, surtout en local ou 100% des paquets arriveront a bon port rapidement.

D'autre part, si tu devais renvoyer le paquet pour cause d'echec de reception tcp, tu renverrait le même alors que les données à envoyer auront déjà changées de valeur.

une page à propos des protocol:

http://wiki.flightgear.org/Generic_protocol

et tu n'as pas de risque de ne voir arriver que le "18" de "185", pour la bonne raison que chaque paquet contient l'ensemble des props demandés, et que soit tu as recu le paquet, soit non, mais pas une moitié.

on utilise l'udp par exemple pour voler en mp, pour le protocol native qui permet d'avoir un fg esclave, pour la liaison avec atlas, terrasync etc ...(pour tout ce qui change de valeur rapidement en fait big_smile )

jano

Hors ligne

#23 1/01/2014 16:54:41

daweed
Membre
Lieu : LFKP LFLL
Inscription : 27/12/2013
Messages : 273

Re : Comment agir dans FG à partir d'un client comme Putty ou interface Web

jano a écrit :

surtout en local ou 100% des paquets arriveront a bon port rapidement

Salut jano ...
Je ne sais pas ce que tu entends pas "locale" mais d'un point vue fonctionnement l'interface ne sera pas locale.
L'interface avec le matériel sera totalement autonome (avec son propre OS embarqué) et connecté dans le réseau (l'interface aura sa propre adresse IP)

Bon pour la question du protocole générique, j ai vraiment pas envie de me prendre le choux avec les fichiers XML

Sinon, je me suis servis de ce qu'il décrive dans la doc, et l'idée du client en c++ , bah en faite je viens de finir un test :

Voila un exécutable 64b linux compilé sur de l'AMD (aucune idée si ca fonctionne aussi sur un Intel ..)

http://dev.farmersoft.fr/C++/FlightGear/start-A330

Voila la source

http://dev.farmersoft.fr/C++/FlightGear/main.cpp

Ne me demander pas comment on compile ca à la main, je n'en ai aucune idée.
C est mon premier programme C++ et je n ai rien compris .. j ai juste adapté le client fournis dans les sources

J'utilise Netbeans comme IDE et c est a partir de Netbeans que j ai compilé le bouzin.

Sinon, non pas que je prenne mal le "lol", mais je l ai dit au début je suis une quiche d'un point de vue réseau et C/C++, pas la peine de se moquer non plus.


Linux Mint 20 Ulyana Cinnamon (64b), AMD Ryzen 7 3700X, RAM 32Go, GeForce RTX 3070 Ti 8 Go
FG 2020.1 Branch. THRUSTMASTER T16000M & T.Flight Rudder & Saitek PRO Flight Throttle Quadrant
Scène Saint Exupery
FG Interface

Hors ligne

#24 1/01/2014 17:34:19

daweed
Membre
Lieu : LFKP LFLL
Inscription : 27/12/2013
Messages : 273

Re : Comment agir dans FG à partir d'un client comme Putty ou interface Web

Je viens de me rendre compte que j ai oublié de signaler deux ou trois choses :

Ca ne fonctionne que pour l'A330 (toujours à cause des même problèmes de l'emplacement des propriétés dans l'arborescence)
L'exécutable se lance de la façon suivante :

./start-A330 [ HOSTFG [ PORT ] ]

HOSTFG et PORT ne sont pas obligatoire et sont positionnés par défaut :

- HOSTFG : localhost
- PORT 5501

et pour que ca fonctionne il faut activer l'option "props" (port par défaut 5501) dans la section Réseau de la configuration avancé du lanceur ou ajouter l'option "--props=5501" à la commande de démarrage de FG

Donc si votre FG est paramétré autrement il faut adapté (si port 6500 pour la socket des propriété: ./start-A330 localhost 6500)

Je n'arrive pas a savoir si le client fait du TCP ou de l'UDP, mais jano pourrait peut être nous éclairer la dessus, la seul chose que j ai compris c est que ce code C++ ouvre la socket qui écoute sur le port configuré (dans mon cas 5501) et envoie les ordre sur cette socket (j ai testé aussi a partir d un poste distant ça fonctionne aussi)

Le serveur telnet peut être désactivé pour cette méthode.

EDIT :

Jano, est ce que tu aurais des exemples concret de l'utilisation du "protocole générique"

A vrai dire c est peut être la solution , dans le sens où le paramétrage des commandes de l'interface pourrais se faire directement via le fameux fichier xml, plutôt que dans l'interface elle même, ce qui me soulagerais d'une maintenance monstrueuse ... smile

Je viens de tomber sur cet article :

http://playground.arduino.cc/Main/Fligh … Pushbutton

Et c est beaucoup plus parlant pour moi que la page du wiki FG sur le fameux protocole .. même si je n'utilise pas un arduino (pas de connexion réseau) l'interface choisis est dans la même philosophie.

J ai compris que on crée un fichier xml qui va sur le serveur FG qui va être la référence des signaux reçus.
Ce que j ai compris aussi c est que l'on envoie que les valeurs .. alors comment FG , même avec le fichier xml , sait quel propriété il doit mettre à jour ?

Les exemples que j ai trouvé pour l'instant ne montre que la modification et l'envoie d'une seule propriété

=> une seule section <chunk> à chaque fois ... comment on fait quand on va avoir pleins de <chunk> ? (pleins de bouton quoi)

je sèche totale, un peu d'aide serait la bienvenue, merci d'avance

Dernière modification par daweed (1/01/2014 18:25:12)


Linux Mint 20 Ulyana Cinnamon (64b), AMD Ryzen 7 3700X, RAM 32Go, GeForce RTX 3070 Ti 8 Go
FG 2020.1 Branch. THRUSTMASTER T16000M & T.Flight Rudder & Saitek PRO Flight Throttle Quadrant
Scène Saint Exupery
FG Interface

Hors ligne

#25 2/01/2014 3:17:08

daweed
Membre
Lieu : LFKP LFLL
Inscription : 27/12/2013
Messages : 273

Re : Comment agir dans FG à partir d'un client comme Putty ou interface Web

Bon, voila les dernière news du jour

Sur conseil de Jano, j'ai essayer de mettre en place un petit client UDP, mais sans le moindre succès...

Voila ce que j ai fait :

1°) création du fichier de protocol :

farmerio.xml

<?xml version="1.0"?>
<PropertyList>
        <generic>
                <input>
                        <line_separator>newline</line_separator>
                        <var_separator>,</var_separator>
                        <chunk>
                                <name>APU Master Switch</name>
                                <type>bool</type>
                                <node>/controls/APU/master-switch</node>
                        </chunk>
                </input>
        </generic>
</PropertyList>

2°) main.cpp du client

Ca se compile sans erreur, et l'exécution semble bien se dérouler, mais je ne sais pas comment vérifier si les packet son bien reçus par FG

#include <arpa/inet.h>
#include <netinet/in.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <cstdlib>
#include <cstring>

#define BUFLEN 512
#define NPACK 10
#define SRV_IP "192.168.0.30"
#define PORT 5405

void diep(const char *s)
{
        perror(s);
        exit(1);
}

int main(void)
{
    struct sockaddr_in si_other;
    int s, i, slen=sizeof(si_other);
    char buf[BUFLEN];
    if ((s=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP))==-1)
    {
        diep("socket");
    }
    
    memset((char *) &si_other, 0, sizeof(si_other));
    si_other.sin_family = AF_INET;
    si_other.sin_port = htons(PORT);
    if (inet_aton(SRV_IP, &si_other.sin_addr)==0)
    {
        fprintf(stderr, "inet_aton() failed\n");
        exit(1);
    }
    
    printf("Sending packet true for master-switch\n");
    sprintf(buf, "true\r\n");
    if (sendto(s, buf, BUFLEN, 0, (struct sockaddr *)&si_other, slen)==-1)
    {
        diep("sendto()");
    }   
    
    close(s);
    return 0;
}       

3°) FG est lancé avec l'option suivante :

--generic=socket,in,5,,5405,udp,farmerio

J'essaye d'envoyer True pour mettre en mache le master switch de l'APU, mais sans succès.

Si il y a des barbus du C++ dans le coin ... je sus preneur d'explication, en tous cas soit le client UDP ne fonctionne pas, soit je n'arrive pas à envoyer la bonne trame.

@ plus

Dernière modification par daweed (2/01/2014 3:17:42)


Linux Mint 20 Ulyana Cinnamon (64b), AMD Ryzen 7 3700X, RAM 32Go, GeForce RTX 3070 Ti 8 Go
FG 2020.1 Branch. THRUSTMASTER T16000M & T.Flight Rudder & Saitek PRO Flight Throttle Quadrant
Scène Saint Exupery
FG Interface

Hors ligne

Pied de page des forums