20 - vasFMC


simu320

programmer

 

Nous avons examiné JeeHell FMGS, passons maintenant à vasFMC. Ce logiciel pionnier a été arrêté par son concepteur, Alex Wemmer, mais peut toujours être téléchargé, entre autres sur ce site, dans les Téléchargements.

Installation et démarrage.

L'installation est simple. Elle nécessite deux ordinateurs, donc la première chose à faire est de les mettre en réseau. La liaison entre les deux ordinateurs est établie par WideFS, un complément à FSUIPC indispensable.  Il n'y a que 2 fichiers dll à mettre dans les modules de FS2004 (et rien avec FSUIPC 4 pour FSX), et deux à installer n'importe où sur le PC Client. il suffit de décompresser l'archive sur chacun des deux PC. Car en fait, nous allons utiliser deux vasFMC.

- sur le PC1 vasFMC n'affichera que le ND et le PFD du pilote, le moniteur instruments du pilote est donc branché sur une sortie vidéo du PC1.
- sur le PC2, le deuxième vasFMC affiche: l'ECAM supérieur sur le moniteur central, le ND et PFD du copilote sur un autre moniteur, les MCDU sur une sortie TV de la deuxième carte vidéo. En plus, on affiche sur le moniteur central les instruments de secours de JeeHell (voir plus bas).

Cette disposition découle de nombreux essais, elle permet d'obtenir une fluidité très satisfaisante des instruments. Par ailleurs, il est connu que FS X sous Windows 7 n'aime pas trop les multiples moniteurs, cette disposition est donc idéale, puisque la plupart des instruments peuvent être délocalisés sur un ordinateur équipé de Windows XP.

La mise en route doit se faire dans l'ordre suivant: d'abord Flight Simulator, puis vasFMC du PC1, puis mise sous tension des cartes IOCards, puis lancement de SIOC. Cette séquence pourrait être automatique avec run.exe présent dans les modules de FS. Ensuite, sur le PC2, lancer Wide Client, puis vasFMC du PC2, et les instruments de secours JeeHell.

Lorsqu'on ouvre vasFMC, une fenêtre de choix apparaît, qui permet d'ouvrir uniquement les instruments voulus, on les place, les re-dimensionne, etc... Bien entendu quand on ferme vasFMC, la position des instruments est mémorisée. Comme il existe un PFD et ND gauche et un autre pour le Copilote, on peut faire un tableau symétrique comme dans la réalité, on peut surtout ajuster au millimètre la position des instruments derrière les caches du tableau, pas toujours découpés exactement où il faudrait. La même méthode s'applique aux instruments de secours JeeHell.

ILa version 2.1 de vasFMC comporte un SD (ECAM inférieur), simplifié mais l'essentiel est là. De même, le MCDU a été largement complèté.

Une question bête.

Nos instruments sont bien positionnés derrière leur cache, et bien entendu, le bureau de l'ordinateur a disparu derrière. Alors, comment fait-on pour retrouver les raccourcis ? Ou, mieux, comment peut-on arrêter l'ordinateur alors que la barre des tâches est enfouie à un endroit inaccessible sous les instruments ? En fait, voila comment on peut s'en sortir. Chaque instrument de vasFMC peut être fermé individuellement, en l'activant tout d’abord - un clic de souris dessus- et ensuite en faisant ALT+F4. Il suffit de faire cela pour le PFD du pilote par exemple, et le bureau qui était caché réapparaît. Avec ses icones de raccourcis, qu'on a bien entendu placées en plein milieu de l'ECAM par exemple. On peut alors avoir accès à la fenêtre de sélection/log de vasFMC, qui permet de fermer tout vasFMC d'un seul coup. On peut aussi créer une icône pour fermer Windows d'un seul clic. Entre les nombreux petits logiciels qui permettent de faire cela, j'ai choisi PowerOff . On clique sur un raccourci, et plus besoin d'aller chercher démarrer/arrêter pour arrêter l'ordinateur.

Les instruments de secours.

Ici, il n'y a pas à hésiter, pour les instruments de secours, c'est JeeHell. Jean Luc a conçu des instruments, dont un ISIS et un chronomètre, parfaits pour notre usage. Ils s'installent très facilement et peuvent se lancer automatiquement à partir de WideClient. Ces instruments ont été prévus pour FSX, mais fonctionnent parfaitement avec FS2004 et cohabitent très bien avec vasFMC.

Et le MCDU ?

C'est celui de vasFMC bien entendu, construit à base d'une face avant de OpenCockpits et d'un écran de PS One. Le deuxième MCDU est, chez moi, factice.

 

La commande de vasFMC.

Quel Flight Simulator ?

VasFMC a été conçu pour FS2004, son auteur, prudent, a toujours déclaré qu'il ne fonctionnerait pas avec FSX. Mais les simmeurs sont curieux, et il s'avère que sur FSX, aucune anomalie de fonctionnement n'apparaît, si bien qu'aujourd'hui vasFMC est officiellement homologué FSX.
VasFMC préconise les avions de Project Airbus, magnifiques, et dont le modèle de vol est remarquable. De nombreuses livrées sont disponibles, et de nouvelles versions sont maintenant disponibles pour FSX. Ces avions sont de naissance « bêtes », vraiment très basiques, nous nous efforcerons de les rendre « intelligents » avec vasFMC et SIOC. Nous n’utiliserons pas de  tableau de bord, et par conséquent le fichier panel.cfg sera renommé ultérieurement, mais pour l’instant il est intéressant de tester en vol le 320 de Project Airbus, cela permettra de vérifier que les fonctions principales sont correctement activées (manettes de gaz, train, volets, etc …) Nous utilisons donc cet avion avec les commandes standard de FS, et notre Airbus volera à peu près… comme un Boeing. Cela nous permettra aussi de constater que 90% de l’Overhead est inactif, nous nous en occuperons avec SIOC.

Comment commander vasFMC ?

Il y a plusieurs manières de commander vasFMC:
- par des variables IOCP
- par des équivalents clavier et l'onglet Key Presses de FSUIPC
- par les bits du "Joystick 64"
- par une carte USB Keys

IOCP
La définition de variables IOCP permet en théorie de commander tout vasFMC avec ce seul principe. L'intérêt majeur de IOCP est qu'il s'agit de véritables variables SIOC, et par conséquent il est possible d'y associer des commandes logiques: le poussoir VOR peut commander l'allumage de sa LED incorporée. Le problème est que, même en mettant une valeur initiale 0 dans la variable VASFMC, le démarrage se fait aléatoirement avec le poussoir = 0 ou =1. D'où parfois un décalage entre l'affichage et le poussoir: la LED peut être allumée en l'absence d'affichage des VOR, et réciproquement, car nous avons deux programmes de nature différente qui agissent sans se comprendre: la logique interne à la gauge qui commande l'affichage, et notre script SIOC. C'est très visible avec IOCP Console, où l'on voit que le programme SIOC réagit parfaitement, alors que l'affichage à l'écran peut être différent. La seule solution est de faire une petite check list au démarrage pour remettre en conformité les boutons ou inters avec vasFMC. La contrainte est minime.

FSUIPC

Il est possible de commander intégralement vasFMC par l'intermédiaire de FSUIPC. 
Alex Wemmer a en effet obtenu de Peter Dowson qu'il intègre toutes les commandes de vasFMC dans FSUIPC, au même titre que Project Magenta par exemple. Il suffit de copier dans les « Modules » de FS2004 le fichier vasFMC.mcro, faisant partie des fichiers d'origine de vasFMC, pour que toutes les commandes de vasFMC figurent dans les choix possibles des attributions d'équivalents clavier (onglet Key Presses) ou de boutons de Joysticks (Buttons+Switches).

- Précaution indispensable: effacer le fichier fsuipc.cfg pour être sûr que des attributions clavier ne trainent pas ici ou là. Sauvegardez bien entendu les options particulières que vous auriez pu ajouter. Ce fichier se recréera de lui-même au prochain démarrage. De même, allons dans les "Epreuves" ou attributions de FS, et supprimons toutes les attributions clavier inutiles dans un cockpit, soit presque toutes. On peut conserver Y, S, P et quelques autres très courantes. Redémarrer l'ordinateur.

-Deuxième chose, il est indispensable d'avoir un tableau Excel des attributions clavier, pour savoir ce qui est attribué et ce qui est disponible.

Nous verrons ci-après les utilisations possibles de FSUIPC.

Remarque: si par extraordinaire il n'existait pas de raccourci clavier pour une fonction, il est toujours possible de le créer en utilisant la fonction "Create Macro" de FSUIPC.
-
L'utilisation de la carte USB Keys est également un moyen simple, mais un peu lourd comme principe de programmation, car  on passe vraiment par beaucoup d'intermédiaires. Son avantage est de disposer de 88 entrées. La carte USB Keys étant conçue pour fonctionner avec des boutons poussoirs et non des interrupteurs ou des contacteurs, dont les contacts sont permanents,elle sera toute indiquée pour le MCDU.

Signalons enfin pour l’anecdote qu’il est également possible de commander vasFMC avec Key2Mouse : il suffit d’afficher par exemple le FCU et les EFIS, de définir les points de clic, même sur une image écran réduite ou déformée, et d’y attribuer des équivalents clavier. Un peu compliqué mais cela marche bien, tant que l’image ne change pas de place sur l’écran. Même remarque pour les macros qu'on peut générer avec FSUIPC.

Des raccourcis clavier inutiles.
Alex Wemmer a prévu des équivalents clavier pour commander les fonctions principales du ND, PFD, FCU et MCDU. Très bien, mais ATTENTION !
1° les attributions en question fonctionnent avec un clavier QWERTY . Par exemple ALT+A est censé afficher les ARPT. En fait ALT+A correspond à ALT+Q en QWERTY, équivalent clavier prévu pour rendre un instrument carré.
2° ces raccourcis clavier ne fonctionnent que sur un instrument sélectionné, donc actif. Si la fenêtre de FS est active, ce qui doit toujours être le cas, ces combinaisons n’agiront pas sur le ND par exemple. Par contre, elles agissent bien sur FS, ce qui n’est pas l’effet souhaité…
Faut-il faire ALT +K pour mettre l’instrument « always on top » ? Non, cela ne change rien.
Faut-il pour autant interdire l’attribution de ces raccourcis clavier, ne surtout pas les utiliser pour une autre action car ils risquent de déclencher un effet non voulu ? En principe oui, en pratique, du fait que FS est toujours « on focus », ou actif, le risque est très faible. On pourra donc les attribuer à autre chose… bien que les combinaisons avec ALT soient plutôt rares. .

Ces deux limitations font que ces raccourcis clavier ne sont pas utilisables en pratique. La seule exception est la commande ALT + les flèches de déplacement, bien pratiques pour positionner exactement un instrument (sélectionné) , mais l'opération ne se fait qu'une fois.

ALT + K

La commande ALT+K permet de supprimer les bordures et barre de menu d'un instrument. Il est conseillé de l'utiliser, puis de se servir de ALT + les flèches de déplacement pour ajuster l'instrument à la découpe du tableau. Pour pouvoir envoyer des commandes à partir d'équivalents clavier,ce que nous allons voir ci-dessous, il faut que

1° la fenêtre de Flight Simulator soit active
2° le ND et le PFD soient sans barre de menu


VasFMC en pratique


Un premier SIOC simplifié.

Du fait que notre cockpit est déjà câblé, rien ne s’oppose à faire dès maintenant un code un peu conséquent, avec notamment la variable d’initialisation, la dérive ou mieux le Tiller, les volets, le train (juste pour le plaisir, nous ferons les trois vertes et les alarmes de train, prenant en compte la vitesse de l’avion, son altitude, N1).

Les commandes de gaz et de trim ne figurent pas dans ce code, car ce sont des axes de Flight Simulator, les potentiomètres étant branchés sur une carte USB Axes.

Voici ce premier code:

// *****************************************************************************
// * Config_SIOC ver 3.7B1 - By Manolo Vélez - www.opencockpits.com
// *****************************************************************************
// * FileName : A320-vasFMC.txt
// * Date : 08/01/2010

Var 0000, name INIT, Value 0 // initialisation
{
&GEAR = 16383 // train sorti
&FLAPS = 0 // Volets rentrés

Var 1003, name IAS_SPEED, Link FSUIPC_INOUT, Offset $02BC, Length 4 // Vitesse IAS

Var 1004, name ALTITUDE, Link FSUIPC_INOUT, Offset $3324, Length 4 // altitude en pieds
{
CALL &LDG_CONFIG

}Var 1018, name ACFT_ON_GND, Link FSUIPC_OUT, Offset $0366, Length 2 // Détection avion sol/en l'air

Var 1025, name RUDDER, Link FSUIPC_OUT, Offset $0BBA, Length 2 // Commande de la dérive

Var 1026, name RUDDER_POT, Link IOCARD_ANALOGIC, Input 1, PosL 0, PosC 127, PosR 255 // Potentiomètre de dérive
{
L0 = &RUDDER_POT * 129
&RUDDER = L0 - 16383
}
Var 2700, name FLAPS, Link FSUIPC_INOUT, Offset $0BDC, Length 4 // Commande des volets

Var 2707, name FLAPS_UP_SW, Link IOCARD_SW, Input 9 // Volets rentrés
{
IF &FLAPS_UP_SW = 1
{
&FLAPS = 0 // volets rentrés
}
}
Var 2708, name FLAPS_1_SW, Link IOCARD_SW, Input 10 // Volets position 1
{
IF &FLAPS_1_SW = 1
{
&FLAPS = 5500
}
}
Var 2709, name FLAPS_2_SW, Link IOCARD_SW, Input 11 // Volets position 2
{
IF &FLAPS_2_SW = 1
{
&FLAPS = 8192
}
}
Var 2710, name FLAPS_3_SW, Link IOCARD_SW, Input 12 // Volets position 3
{
IF &FLAPS_3_SW = 1
{
&FLAPS = 12288
}
}
Var 2711, name FLAPS_FULL_SW, Link IOCARD_SW, Input 13 // Volets position FULL
{
IF &FLAPS_FULL_SW = 1
{
&FLAPS = 16383
}
}
Var 3200, name GEAR, Link FSUIPC_INOUT, Offset $0BE8, Length 4 // Commande du train
{
CALL &LDG_CONFIG
}

Var 3201, name NOSE_GEAR_POS, Link FSUIPC_INOUT, Offset $0BEC, Length 4 // Position du train AV
{
IF &NOSE_GEAR_POS = 16383 // train sorti
{
&NG_DOWN_LED = 1 // verte ON
&NG_UNLK_LED = 0 // UNLK OFF
}
ELSE
{
IF &NOSE_GEAR_POS > 1 // si train n'est pas rentré et pas sorti
{
&NG_DOWN_LED = 0 // verte OFF
&NG_UNLK_LED = 1 // transit ON
}
ELSE
{
IF &NOSE_GEAR_POS = 0 // train sorti
{
&NG_DOWN_LED = 0 // verte ON
&NG_UNLK_LED = 0 // transit OFF
}
}
}
}
Var 3202, name NG_UNLK_LED, Link IOCARD_OUT, Device 1, Output 0 // Voyant Train AV en transit

Var 3203, name NG_DOWN_LED, Link IOCARD_OUT, Device 1, Output 1 // Voyant Train AV verrouillé

Var 3204, name LEFT_GEAR_POS, Link FSUIPC_IN, Offset $0BF4, Length 4 // Position du train gauche
{
IF &LEFT_GEAR_POS = 16383
{
&LG_UNLK_LED = 0
&LG_DOWN_LED = DELAY 1 ,100
}
ELSE
{
IF &LEFT_GEAR_POS > 1
{
&LG_UNLK_LED = 1
&LG_DOWN_LED = 0
}
ELSE
{
IF &LEFT_GEAR_POS = 0
{
&LG_UNLK_LED = 0
&LG_DOWN_LED = 0
}
}
}
}
Var 3205, name LG_UNLK_LED, Link IOCARD_OUT, Device 1, Output 2 // Voyant Train gauche en transit

Var 3206, name LG_DOWN_LED, Link IOCARD_OUT, Device 1, Output 3 // Voyant Train gauche verrouillé

Var 3207, name RIGHT_GEAR_POS, Link FSUIPC_IN, Offset $0BF0, Length 4 // Position du train droit
{
IF &RIGHT_GEAR_POS = 16383
{
&RG_UNLK_LED = 0
&RG_DOWN_LED = DELAY 1 ,160
}
ELSE
{
IF &RIGHT_GEAR_POS > 1
{
&RG_UNLK_LED = 1
&RG_DOWN_LED = 0
}
ELSE
{
IF &RIGHT_GEAR_POS = 0
{
&RG_UNLK_LED = 0
&RG_UNLK_LED = 0
}
}
}
}
Var 3208, name RG_UNLK_LED, Link IOCARD_OUT, Device 1, Output 4 // Voyant Train droit en transit

Var 3209, name RG_DOWN_LED, Link IOCARD_OUT, Device 1, Output 5 // Voyant train droit verrouillé

Var 3211, name GEAR_SW, Link IOCARD_SW, Input 14 // Inter manette de train
{
IF &IAS_SPEED > 33280
{
IF &GEAR_SW = 0
{
&GEAR = 0
}
}
IF &IAS_SPEED > 33280
{
IF &GEAR_SW = 1
{
&GEAR = 0 // le train ne sort pas
}
}
IF &IAS_SPEED < 33280
{
IF &GEAR_SW = 0
{
&GEAR = 0
}
}
IF &IAS_SPEED < 33280
{
IF &GEAR_SW = 1
{
&GEAR = 16383
}
}
}
Var 3212, name PKG_BRK, Link FSUIPC_INOUT, Offset $0BC8, Length 2 // Commande de frein de parking

Var 3213, name PKG_BRK_SW, Link IOCARD_SW, Input 4 // Inter Parking Brake
{
IF &PKG_BRK_SW = 1
{
&PKG_BRK = 32767 // Frein de parking ON

}
ELSE
{
&PKG_BRK = 0

}
}
Var 3220, name LDG_CONFIG_LED, Link IOCARD_OUT, Device 1, Output 9 // Flèche rouge manette train

Var 3221, name LDG_CONFIG, Link SUBRUTINE // conditions pour flèche rouge
{
L0 = 0
IF &GEAR = 0
{
IF &ALTITUDE < 750
{
IF &ENG1_N1 < 12288
{
IF &ENG2_N1 < 12288
{
IF &FLAPS >= 8192
{
L0 = 1
}
}
}
}
}
&LDG_CONFIG_LED = L0
}

Var 7010, name ENG1_N1, Link FSUIPC_INOUT, Offset $0898, Length 2
{
CALL &LDG_CONFIG
}

Var 7011, name ENG2_N1, Link FSUIPC_INOUT, Offset $0930, Length 2
{
CALL &LDG_CONFIG
}

Ce premier code permet de voler.

Ajoutons maintenant la commande batterie.
On peut constater que vas FMC peut être commandé par les variables très classiques $3102 pour FS2004 ou $281C et $2834 pour FSX : le ND et le PFD s’allument ou s’éteignent selon l’alimentation de l’avion. Pour le moment tout ceci est très rudimentaire, par la suite on ajoutera d’autres commandes dans le script de cette variable, on pourra par exemple commander l’affichage d’une tension, différente lorsque les moteurs sont à l’arrêt et lorsque le générateur ou l'External Power est branché, tension qui pourra baisser de 0,1 V toutes les 30 secondes si la batterie seule est branchée, sans GEN ni EXT PWR, ceci avec un temporisateur SIOC. La tension indiquée par l’afficheur de la Batterie 2 pourra être légèrement différente, même si dans FS il n’y a qu’une seule batterie. En pratique, l’interrupteur de la batterie 1 commandera la variable unique $3102, ainsi que les Displays Battery 1, l’interrupteur de la batterie 2 ne commandera la variable $3102 que si l’inter batterie 1 est sur OFF, mais dans tous les cas il commandera l’affichage du Display Battery 2. Ceci est un exemple, toutes les autres fonctions s’en inspireront.

Var 2400, name BATTERY, Link FSUIPC_INOUT, Offset $3102, Length 1 // Commande Master Battery

Var 2401, name BATTERY_SW, Link IOCARD_SW, Input 181 // Inter Batterie 1
{
&BATTERY = &BATTERY_SW

}

Toutes les autres commandes hors vasFMC vont suivre, ce n'est que du SIOC très classique, inutile de tout reprendre.

Commander vasFMC par des équivalents clavier

Comme nous l'avons vu plus haut, nous disposons de plusieurs moyens pour contrôler les commandes de vasFMC. Nous allons prendre comme exemple un EFIS, chargé du ND de gauche, que vasFMC appelle
ND_L, car ce module comporte tous les types d'interrupteurs, un encodeur, un afficheur, bref un résumé de tout ce que l'on trouve sur un cockpit.

Définir des équivalents clavier

Commençons par les équivalents clavier: dans l'onglet Key Presses de FSUIPC, on clique sur SET, qui nous invite à entrer une lettre, ou une combinaison comme CTRL A ou autres. A cette lettre va correspondre une commande de vasFMC, à choisir dans la liste déroulante "Control sent when Keys pressed", vasFMC étant à la fin de la liste. Et ensuite, on demandera à SIOC de générer cette lettre, qui va donc déclencher la commande de vasFMC. Choisissons par exemple LEFT ND Range 2. Cliquons sur CONFIRM et passons à la suivante, CTRL M par exemple pour Range 3. La seule difficulté est de bien choisir l'action possible, par exemple les WPT s'appellent « Geo Loc » dans la liste. Dès que nous aurons quelques attributions de ce genre, que le tableau Excel sera à jour, on peut en vérifier le fonctionnement. Lançons vasFMC sur l'ordinateur PC1, au clavier tapons CTRL L puis CTRL M: on constatera sur le ND gauche que l'échelle change. Parfait. On peut maintenant entrer toute une liste de commandes dans FSUIPC

Pour que les choix d’équivalents clavier soient effectifs, il ne faut pas oublier de cliquer sur CONFIRM  à chaque fois. Il n’est pas nécessaire de redémarrer FS, ni de ré-initialiser le vol, le fonctionnement est immédiat.

Générer des équivalents clavier

- Reste à envoyer un CTRL L quand on met le bouton de l'EFIS gauche sur 10. Cela peut se faire avec SIOC, qui sait très bien envoyer des lettres (variable KEYS). La commande du FCU et des deux EFIS va bien entendu demander beaucoup d'entrées sur la carte Master. La programmation SIOC permet de choisir le type d'interrupteur, inverseur ou poussoir, on peut ajouter des lignes de commandes logiques.

La génération par SIOC

Reportez vous au chapitre correspondant à la génération d'équivalents clavier par SIOC sur le site SimuCockpit.fr

On créera tout d'abord la variable KEYS:

Var 1000, name KEYS, Link KEYS

puis, après attribution des numéros correspondant à chaque lettre ou combinaison dans sioc.ini, on peut adopter le code suivant, qui lance une lettre puis, immédiatement, remet la variable KEYS à 0 dans l'attente d'une autre commande. Par exemple, pour des variables d'interrupteurs:

Var 3100, name NDL_RANGE1_SW, Link IOCARD_SW, Input 72 , Type P// Echelle 10 NM
{
&KEYS = 2 // c
&KEYS = 0 // RàZ
}

Ce code est plus sûr que celui proposé par Nico Kaan, qui fonctionne mal lorsque plusieurs commutateurs sont susceptibles de commander l'envoi d'un équivalent clavier, Range et Mode par exemple. Si Range n'a pas bougé, la variable KEYS a toujours la valeur x et non une valeur 0, d'où parfois des erreurs lorsque Mode envoie un ordre.

Remarque: le contacteur rotatif utilisé ainsi commande une valeur, puis cette valeur revient à O . Ce qui correspond au fonctionnement d'un bouton poussoir. Il est donc préférable de définir un type P pour l'inter plutot que rien (type inter à bascule) ou I. Sinon on risque d'avoir des décalages entre ce qui se passe dans SIOC et la position du commutateur.

 

La génération par le Joystick 64

Une autre méthode de commande de vasFMC est possible, par l'intermédiaire du fameux Joystick64. En principe, ce type de commande ne devrait agir que sur des fenêtres actives (question de "focus") Dans le cas de vasFMC, je ne sais pas pourquoi, le Joystick64 agit très bien sur des fenêtres non actives, tout au moins sur le même ordinateur. Voir le document « Le Joystick 64  » . Le Joystick64 fonctionne aussi bien avec des poussoirs que des interrupteurs et permet également d'ajouter facilement des commandes logiques.

La première chose est ici d'entrer d'abord dans le code SIOC la variable pour le Joystick virtuel 64:

Var 1001, name JOYSTICK_64, Link FSUIPC_OUT, Offset $3340, Length 4

Entrons maintenant la variable d'un interrupteur, qui commandera la variation du bit 0 de la variable Joystick64, par exemple la commutation des modes ILS et Rose de l'EFIS gauche:

Var 3106, name NDL_ILSROSE_SW, Link IOCARD_SW, Input 81 // Mode ILS Rose
{
&JOYSTICK_64 = CHANGEBIT 0 ,&NDL_ILSROSE_SW

}

Puisque FS est ouvert faisons Reload dans SIOC, et ouvrons l'onglet Buttons & Switches de FSUIPC.

Lorsqu'on met le commutateur de l'EFIS sur la position ILS Rose, le Joystick 64 est bien reconnu, avec le bouton n°0. Il est inutile de passer par un équivalent clavier pour commander une fonction de vasFMC, puisque la partie droite de la fenêtre de FSUIPC prévoit "Control sent when button pressed", et dans la liste des contrôles prévus figure le mode ILS Rose du ND L (gauche) de vasFMC, qu'on peut donc sélectionner directement.
Ce qui diminue d'autant les affectations de lettres, que nous réservons à la commande par SIOC comme vu précédemment.

Remarque: contrairement à la génération par SIOC, un commutateur rotatif se comporte ici comme un véritable inverseur ou interrupteur classique. Inutile donc de mettre un type P, le type standard sans aucune indication est préférable.

Lorsqu'on constate un fonctionnement anormal d'un interrupteur ou commutateur, cela vient en général d'une mauvaise attribution de type d'interrupteur. Le type d'interrupteur ne dépend pas uniquement de sa construction physique, mais aussi de la programmation interne des gauges de vasFMC, à laquelle nous n'avons pas accès. Des essais sont donc souvent indispensables. Ainsi, bizarrement, les poussoirs de l'EFIS doivent être programmés en inters non P...

La commande par le Joystick64 fonctionne bien quand il s'agit d'une commande unique: j'affiche ou pas les VOR par exemple. Par contre, quand cette commande doit en déclencher une autre, l'allumage d'une LED par exemple, les choses se compliquent. Il serait logique de placer une fonction TESTBIT et de faire en sorte que lorsque le bit des VOR est égal à 1, la variable LED passe à 1 aussi. Cela se passe effectivement très bien au niveau SIOC, dans IOCP Console, la LED reste à 1, par contre en pratique, elle ne s'allume que le temps où le bouton est poussé, et s'éteint ensuite, tout en restant à la valeur 1 dans IOCP Console. Etrange.

La commande par IOCP

Sans doute la meilleure solution, la plus directe donc la plus rapide. Pour la mise en pratique, voir le document de Guda "Piloter vasFMC via SIOC". Il arrive toutefois que certaines commandes aient des ratés, dans ce cas, la commande par le Joystick64 sera la solution, on peut panacher sans problème dans le code SIOC.

Conclusion

VasFMC est très intéressant à essayer, c'est une excellente base de départ, qu'on peut ensuite complèter par du SIOC personnel. Il demande une programmation SIOC assez conséquente mais permet d'avoir rapidement un avion 100% fiable, enfin, disons à 99% fiable, à la condition expresse d'utiliser l'avion de Project Airbus. Dommage que son développement soit suspendu...