mercredi 8 juillet 2015

Instruments déportés, suite de l'étude ...

Dans ce court article, je vais vous présenter mon retour d'expérience  sur l'utilisation et l'essai d'adaptation du programme FlightSimPanel de  Davide Alberto Molin . Puis, j'exposerai d'autres possibilités de mise en place d'instruments déportés pour Xplane.

Retour d'expérience sur FlightSimPanel :


En premier lieu, il est a noter la bonne qualité du code du programme dans sa structure et son organisation. Par contre, ma faible maîtrise du langage NodeJs ne m'a pas permis d'adapter le programme afin de créer des pages web de tableaux d'instruments personnalisés. Le but étant de pouvoir se connecter par navigateur web à la page d'instruments voulus. Une pour les instruments de pilotages, une pour les paramètres moteurs et une autre pour les appareils de radio communications et navigations. En ce qui concerne le graphisme des instruments, je trouve qu'ils sont très bien réussis et cela donne vraiment envie de pouvoir les utiliser.
Au niveau de la configuration de xplane, il faut connaître quelle sortie activer dans le menu configuration réseau/datas. Pour cela, jeter un œil dans l'arborescence des fichiers sources du programme peut nous aider. En effet, il suffit de noter les numéros qui se trouvent à l'emplacement (src/services/datarefs/) afin de savoir quels numéros cocher dans xplane. Il est à noter que le fait d'utiliser ces sorties natives udp peut poser problème le jour où une nouvelle version d'xplane modifiera l'affectation de ces numéros (apparemment, c'est déjà arrivé ...).

Maintenant, venons en à l'utilisation en pratique. Après avoir lancé le serveur nodeJs, j'ai pu noter de temps en temps quelques ralentissement d'Xplane. J'ai utilisé une tablette sous android pour me connecter en wifi sur le serveur nodeJs. J'ai effectué un tour de piste de LFRB en condition VFR.
A la mise plein gazes pour le décollage, le compteur de vitesse se met à afficher les vitesses mais de manière un peu saccadée ce qui n'est pas très facile pour juger de la vitesse de rotation. En fait, le temps de latence pour chaque instrument est d'environ 1/5 de secondes ce qui n'est pas très confortable pour le pilotage en VFR et qui complique sérieusement les choses en IFR (tenu du glide de l'ILS par exemple).
Une autre critique est que l'on ne peut pas placer les instrument où l'on veut sur la page web ni même sélectionner ceux que l'on veut voir ou ne pas voir. Ceci est assez frustrant. Et comme mes connaissances en nodeJs sont limitées, j'ai échoué à vouloir implémenter ces comportements dans le codes sources de l'application serveur.

Autres solutions possibles :

pour pouvoir déporter les instruments sur un autre écran, j'ai encore dans ma besace deux autres solutions.

Utiliser une autre instance d'xplane :


C'est ce que j'utilise déjà pour afficher la vue de gauche dans un deuxième écran. Dans mon cas, la deuxième instance d'xplane s'exécute sur le même ordinateur que la première et utilise le deuxième écran qui correspond à mon deuxième espace bureau.
Cependant, pour pouvoir augmenter le nombre d'écran, il faut plutôt utiliser un autre ordi.
la deuxième instance d'xplane doit être configurée comme esclave de la première. Puis, ses paramètres d'affichage changés au niveau du décalage (haut,bas, droite, gauche) afin d'afficher la partie voulue. En l'occurrence, la partie de cockpit.

Avantage :
 . tout est natif, pas besoin de trouver des programmes complémentaires.
 . les instruments à afficher sont ceux déjà créés dans xplane.
 . un réagencement de la positions des instruments est possible via l'utilitaire planeMaker.
Inconvénients :
 . disposer du matériels (ordi , écran, réseau ethernet).
 . encombrement de l'espace de travail dû à ce surcroît de matériel.
 . au niveau de la licence xplane, il faut "légalement" une licence par Instance d'xplane.

Je prévois de rédiger un article plus détaillé pour expliquer la mise en place de cette solution.


Utiliser le programme ExtPlane-Panel.


J'ai découvert depuis quelques semaines le projet de Ville Ranki sur github : https://github.com/vranki/ExtPlane-Panel/blob/master/README.md
Le projet est composé de deux éléments: un plugin pour xplane et un programme client pour afficher les instruments. Le plugin xplane se charge de relayer les données de type 'datarefs' demandées par 'souscription' par les instruments du client. Une chose intéressante est que ont peut également, via le mécanisme des datarefs, effectuer des actions dans xplane. Ainsi, les instruments peuvent également avoir un rôle actif (changer le QNH de l'altimètre par exemple...)
Le programme client est écrit en C++ avec la librairie graphique Qt.

J'ai ainsi pu compiler le programme pour en faire une application Android et l'installer sur une tablette chinoise.
Pour ce faire, il a fallut installer les éléments suivants :
 . Qt et QtCreator :https://www.qt.io/download-open-source/
 . SDK (System Developpment Kit) de Android : http://developer.android.com/sdk/index.html
 . NDK de Qt http://developer.android.com/tools/sdk/ndk/index.html
(Voir le tutos : http://blog.developpez.com/gpu/?p=522 )

A noter : plutôt que d'utiliser Ant, j'ai coché l'option "utiliser gradle" au niveau des options de compilation/déploiement de QtCreator parce que sinon, j'avais une erreur lors de la demande de transfert et d'exécution du programme sur le terminal Android.

Voici en image le résultat du déploiement :

ExtPlane-panel on Android device

Mais encore ...
En entrant dans le code source du programme,  avec quelques connaissance de la POO, de C++ et de Qt, il devient assez facile de fabriquer d'autres instruments. Pour cela, il faut ajouter ses propres classes dans le répertoire 'panelitems' en dérivant la classe 'panelitem'. 
J'ai par exemple créer un indicateur de pression d'essence ressemblant à celui proposé sur le DR400. Le code se trouve ici : engine_fuel_p.h et là engine_fuel_p.cpp. J'ai modifié le projet initial en y ajoutant la définition de ressources images et les images dans le répertoire du même nom.
Pour essayer tout cela, le mieux est de 'git-cloner' mon dépôt ExtPlane-Panel issu du fork du projet de Ville Ranki (depuis, Ville ranki a ajouté ces nouveaux instruments dans son projet, donc git-cloner son dépôt ExtPlane-Panel). Ne pas oublier de 'git-cloner' également dans le même répertoire racine le dépôt ExtPlane du plugin. D'une part QtCreator en a besoin pour la compilation, le projet "ExtPlane-Panel" étant lié à celui du plugin "ExtPlane", et d'autre part il faudra bien utiliser ce plugin dans Xplane.

voici ce que donne le widget récemment créé :



Le prochain article explique de façon simple l'installation et le paramétrage de ExtPlane-Panel.