Vous pouvez faire une chose similaire avec beaucoup de lignes et de colonnes dans l'affichage, mais ça représente beaucoup plus de travail, et l'affichage ne serait pas bien réglé.
L'élément "fnmapping" travaille en regardant les variables avec des noms comme "F2 commande sortie 1". Spécifiquement, il cherche un nom composé de trois parties:
Après avoir trouvé toutes les variables correspondantes dans le fichier de configuration, l'élément "fnmapping" crée une grille rectangulaire pour les afficher.
Dans le contexte d'un élément fnmapping, les variables ont plusieurs attributs et éléments utiles:
Plusieurs attributs et éléments sont ignorés par un élément fnmapping et ne peuvent pas être ajoutés à un fichier de définition.
Plusieurs attributs et éléments de l'élément "model" du fichier décoder affecte aussi l'affichage de la Fonction Map:
Le bloc de définitions pour la fonction zéro dans la direction avant est comme suit:
<variable label="FL(f) controls output 1" CV="33" mask="XXXXXXXV" minOut="1" default="1"> <enumVal> <enumChoice choice="No"/> <enumChoice choice="Yes"/> </enumVal> </variable> <variable label="FL(f) controls output 2" CV="33" mask="XXXXXXVX" minOut="2"> <enumVal> <enumChoice choice="No"/> <enumChoice choice="Yes"/> </enumVal> </variable> <variable label="FL(f) controls output 3" CV="33" mask="XXXXXVXX" minOut="3"> <enumVal> <enumChoice choice="No"/> <enumChoice choice="Yes"/> </enumVal> </variable> <variable label="FL(f) controls output 4" CV="33" mask="XXXXVXXX" minOut="4"> <enumVal> <enumChoice choice="No"/> <enumChoice choice="Yes"/> </enumVal> </variable> <variable label="FL(f) controls output 5" CV="33" mask="XXXVXXXX" minOut="5"> <enumVal> <enumChoice choice="No"/> <enumChoice choice="Yes"/> </enumVal> </variable> <variable label="FL(f) controls output 6" CV="33" mask="XXVXXXXX" minOut="6"> <enumVal> <enumChoice choice="No"/> <enumChoice choice="Yes"/> </enumVal> </variable> <variable label="FL(f) controls output 7" CV="33" mask="XVXXXXXX" minOut="7"> <enumVal> <enumChoice choice="No"/> <enumChoice choice="Yes"/> </enumVal> </variable> <variable label="FL(f) controls output 8" CV="33" mask="VXXXXXXX" minOut="8"> <enumVal> <enumChoice choice="No"/> <enumChoice choice="Yes"/> </enumVal> </variable>Notez que l'attribut "minOut" assure que seule les fonctions actuellement définies comme présentes sont affichées.
Le bloc similaire de définitions pour la fonction deux configure un CV différent, mais qui sont autrement très similaires: <variable label="F2 controls output 1" CV="36" mask="XXXXXXXV" minOut="1" minFn="2"> <enumVal> <enumChoice choice="No"/> <enumChoice choice="Yes"/> </enumVal> </variable> <variable label="F2 controls output 2" CV="36" mask="XXXXXXVX" minOut="2" minFn="2"> <enumVal> <enumChoice choice="No"/> <enumChoice choice="Yes"/> </enumVal> </variable> <variable label="F2 controls output 3" CV="36" mask="XXXXXVXX" minOut="3" minFn="2"> <enumVal> <enumChoice choice="No"/> <enumChoice choice="Yes"/> </enumVal> </variable> <variable label="F2 controls output 4" CV="36" mask="XXXXVXXX" minOut="4" minFn="2" default="1"> <enumVal> <enumChoice choice="No"/> <enumChoice choice="Yes"/> </enumVal> </variable> <variable label="F2 controls output 5" CV="36" mask="XXXVXXXX" minOut="5" minFn="2"> <enumVal> <enumChoice choice="No"/> <enumChoice choice="Yes"/> </enumVal> </variable> <variable label="F2 controls output 6" CV="36" mask="XXVXXXXX" minOut="6" minFn="2"> <enumVal> <enumChoice choice="No"/> <enumChoice choice="Yes"/> </enumVal> </variable> <variable label="F2 controls output 7" CV="36" mask="XVXXXXXX" minOut="7" minFn="2"> <enumVal> <enumChoice choice="No"/> <enumChoice choice="Yes"/> </enumVal> </variable> <variable label="F2 controls output 8" CV="36" mask="VXXXXXXX" minOut="8" minFn="2"> <enumVal> <enumChoice choice="No"/> <enumChoice choice="Yes"/> </enumVal> </variable>La seule nouvelle chose est l'utilisation de l'attribut "minFn". Ceci est utile quand une famille de décodeur supporte différents nombres de fonctions (pas de sorties) dans des modèles de décodeurs différents.
Comme vous allez vers les numéros de fonctions plus élévés, le mapping NMRA entre les bits dans les CVs et le numéro de sortie change. Vous pouvez voir ceci en regardant un exemple de la façon dont la fonction dix est mappée pour les sorties 7 à 14:
<variable label="F10 controls output 7" CV="44" mask="XXXXXXXV" minOut="7" minFn="10"> <enumVal> <enumChoice choice="No"/> <enumChoice choice="Yes"/> </enumVal> </variable> <variable label="F10 controls output 8" CV="44" mask="XXXXXXVX" minOut="8" minFn="10"> <enumVal> <enumChoice choice="No"/> <enumChoice choice="Yes"/> </enumVal> </variable> <variable label="F10 controls output 9" CV="44" mask="XXXXXVXX" minOut="9" minFn="10"> <enumVal> <enumChoice choice="No"/> <enumChoice choice="Yes"/> </enumVal> </variable> <variable label="F10 controls output 10" CV="44" mask="XXXXVXXX" minOut="10" minFn="10"> <enumVal> <enumChoice choice="No"/> <enumChoice choice="Yes"/> </enumVal> </variable> <variable label="F10 controls output 11" CV="44" mask="XXXVXXXX" minOut="11" minFn="10"> <enumVal> <enumChoice choice="No"/> <enumChoice choice="Yes"/> </enumVal> </variable> <variable label="F10 controls output 12" CV="44" mask="XXVXXXXX" minOut="12" minFn="10" default="1"> <enumVal> <enumChoice choice="No"/> <enumChoice choice="Yes"/> </enumVal> </variable> <variable label="F10 controls output 13" CV="44" mask="XVXXXXXX" minOut="13" minFn="10"> <enumVal> <enumChoice choice="No"/> <enumChoice choice="Yes"/> </enumVal> </variable> <variable label="F10 controls output 14" CV="44" mask="VXXXXXXX" minOut="14" minFn="10"> <enumVal> <enumChoice choice="No"/> <enumChoice choice="Yes"/> </enumVal> </variable>
<!-- Define the fixed Function-Output mapping --> <constant label="FL(f) controls output 1" minOut="1" default="1" /> <constant label="FL(r) controls output 2" minOut="2" default="1" /> <constant label="F1 controls output 3" minOut="3" minFn="1" default="1" /> <constant label="F2 controls output 4" minOut="4" minFn="2" default="1" /> <constant label="F3 controls output 5" minOut="5" minFn="3" default="1" /> <constant label="F4 controls output 6" minOut="6" minFn="4" default="1" /> <constant label="F5 controls output 7" minOut="7" minFn="5" default="1" /> <constant label="F6 controls output 8" minOut="8" minFn="6" default="1" /> <constant label="F7 controls output 9" minOut="9" minFn="7" default="1" /> <constant label="F8 controls output 10" minOut="10" minFn="8" default="1" />Ceci sera affiché de la même manière que les autres mappings, exceptées les cases individuelles qui seront inactives (grisées).