Files
JIMRI/help/fr/html/apps/DecoderPro/CreateDecoderAdvanced.shtml
2026-06-17 14:00:51 +02:00

760 lines
38 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="fr">
<head>
<!-- Copyright Bob Jacobsen 2008 -->
<!--Translated by Herv&#233; Blorec le 2016-06-18 -->
<title>JMRI: DecoderPro User Guide - Advanced Decoder Definitions</title>
<!--#include virtual="/help/fr/parts/Style.shtml" -->
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body>
<!--#include virtual="/help/fr/parts/Header_fr.shtml" -->
<div id="mBody">
<!--#include virtual="Sidebar.shtml" -->
<div id="mainContent">
<!-- Page Body -->
<h1>JMRI:Guide Utilisateur DecoderPro</h1> -<h2> D&#233;finitions Avanc&#233;es des D&#233;codeurs </h2>
<p>Cette page fournit des informations sur les fonctionnalit&#233;s avanc&#233;es dans
les fichiers de d&#233;finiton d&#233;codeur pour le Programmateur Symbolique DecoderPro
.</p>
<a name="html_formatting" id="html_formatting"></a>
<h3> Formatage sur la page </h3>
Vous pouvez faire une mise en forme limit&#233;e sur l'&#233;cran en utilisant les balises HTML de formatage.
<p>
Vous pouvez int&#233;grer du HTML dans le texte du volet, mais il doit &#234;tre enferm&#233; dans les Mots cl&#233;s &lt; html &gt; ... &lt; /html &gt; .
</p>
<p> Ceci est un peu difficile &#224; cause du chevauchement entre les "balises comme
partie de la structure XML du fichier d&#233;codeur" et "les balises HTML inclus dans le fichier d&#233;codeur".
Toutes les balises HTML doivent &#234;tre cit&#233;es, avec leurs caract&#232;res &lt; et &gt;
remplac&#233;es par leurs chaines &amp;lt; et &amp;gt; et tous les guillemets
int&#233;gr&#233;s remplac&#233;s par &amp;quot;.</p>
<p>
Par exemple:
</p>
<pre style="white-space: pre-wrap;">
&lt;label label="&amp;lt;html&amp;gt;&amp;lt;strong&amp;gt;JMRI 3.7.2 ou plus tard est requis pour utiliser cette d&#233;finition.&amp;lt;/strong&amp;gt;&amp;lt;/html&amp;gt;"/&gt;
</pre>
Apr&#232;s le XML est lu, les contenus de ce label seront affich&#233; depuis le texte dans l'attribut "label", qui est:
<pre>
&lt;html&gt;&lt;strong&gt;JMRI 3.7.2 ou plus tard est requis pour utiliser cette d&#233;finition.&lt;/strong&gt;&lt;/html&gt;
</pre>
et qui apparaitre &#224; l'&#233;cran comme
<p>
&nbsp;&nbsp;&nbsp;<strong>JMRI 3.7.2 ou plus tard est requis pour utiliser cette d&#233;finition.</strong>
<p>
Pour plus d'exemple voir:
<a href="https://github.com/JMRI/JMRI/blob/master/xml/decoders/esu/v4readMePane.xml" target="_blank">
xml/decoders/esu/v4readMePane.xml</a>.
</p>
<p>
Ceci fournit seulement le support HTML5, ainsi si quelque chose n'est pas affich&#233;e comme vous l'attendiez, voyiez si une
approche utilisant un simple HTML fonctionnera.
</p>
<a name="id" id="id"></a>
<h3>Identification</h3>
Trois parties:
<dl>
<dt>Fabricant:</dt><dd>Valeur num&#233;rique depuis CV8, qui est adapt&#233;e &#224; un nom en utilisant
les entr&#233;es dans le fichier xml/decoderIndex.xml. </dd>
<dt>Version code:</dt><dd>Valeur num&#233;rique depuis CV7, qui est adapt&#233;e pour mod&#233;liser le nom (s) en utilisant
les valeurs lowVersionID et highVersionID sur les &#233;l&#233;ments du mod&#232;le
au sein de toutes les d&#233;finitions de d&#233;codeur pour le fabricant sp&#233;cifique.
Ceci est un processus complexe qui n'aboutit pas toujours
en raison des valeurs &#224; dupliquer , etc..</dd>
<dt>Code Identification Produits:</dt><dd>&#224; l'origine une valeur num&#233;rique lu &#224; partir d'un CV ou CVs
sp&#233;cifique au fabricant; cela ne fonctionne que pour certains fabricants. Le processus de lecture
est trait&#233; dans le code ( la classe
<a href="http://jmri.org/JavaDoc/doc/jmri/jmrit/decoderdefn/IdentifyDecoder.html">jmri.jmrit.decoderdefn.IdentifyDecoder</a> )
et doit &#234;tre mis &#224; jour chaque fois qu'un fabricant commence &#224; fournir des valeurs dans un ou plusieurs
nouveaux CV. Lorsque le code produit est pr&#233;sent, il devrait briser toute d&#233;g&#233;n&#233;rescence entre chevauchement des valeurs de CV7
dans une famille de d&#233;codeur.
<p>
L'aide a aussi &#233;t&#233; ajout&#233;e pour trouver cette valeur en utilisant le
<a href="../../hardware/loconet/Addressing.shtml#SVs">ProtocoleLocoNet SV2</a>
quelque fois au cours de la validation de la s&#233;rie JMRI 4.1. Voir les notes de release
pour plus infos sur la progression.
<p>
&#201;tant donn&#233; que le code produit fonctionne avec les op&#233;rations d'inclusion/exclusion d&#233;crites ci-dessous
vous pouvez &#233;galement l'utiliser dans les cas o&#249; il n'y a pas de CV ou CV qui en contiennent.
Dans ce cas , aucune ID automatique n'est donn&#233;e, mais la valeur depuis le
id_produit attribut du mod&#232;le s&#233;lectionn&#233; par l'utilisateur est utilis&#233;e pendant le traitement
et l'extension de la d&#233;finition du d&#233;codeur ult&#233;rieur.
Les valeurs productId sont quelques fois utilis&#233;es pour pour &#233;viter
les conflits avec les valeurs num&#233;riques trouv&#233;es dans les CV.
</dd>
</dl>
Par exemple:
<code>
&lt;d&#233;codeurcoder&gt;
&lt;Nom de famille="Mon Nom de Famille" mfg="NMRA"&gt;
&lt;model model="Mod&#232;le A" lowVersionID="16" highVersionID="19" productID="400" /&gt;
&lt;/model&gt;
&lt;model model="Mod&#232;le B" lowVersionID="21" highVersionID="22" productID="401" /&gt;
&lt;/model&gt;
&lt;/d&#233;codeur&gt;
</code>
Si l'utilisateur s&#233;lectionne manuellenment un d&#233;codeur mod&#232;le, cettte s&#233;lection d&#233;finie
les trois valeurs pour une utilisation lorsque la d&#233;finition de d&#233;codeur est &#233;largie
pour la programmation (voir la section <a href="#conditional">D&#233;finitions Conditionnelles de D&#233;codeur </a> ci-dessous).
<a name="pane_considerations" id="pane_considerations"></a>
<h3>Volet Consid&#233;rations</h3>
Les volets du programmateur sont utilis&#233;es pour r&#233;partir et organiser les variables du d&#233;codeur dans des cat&#233;gories nomm&#233;es
pratiques.
<ul>
<li>
JMRI fournit un jeu standard de volets, d&#233;fini par les &#233;l&#233;ments &lt;pane&gt; inclus dans les &#233;l&#233;ments &lt;programmer&gt;
de chacun des fichiers des Programmateur standard (Basique, Complet, Avanc&#233; etc.) dans le dossier xml/programmers/.
</li>
<li>
Les fichiers d&#233;finition D&#233;codeur peuvent contenir des volets personnalis&#233;s pour des d&#233;codeurs particuliers ou des familles
de d&#233;codeurs, d&#233;finis par les &#233;l&#233;ments &lt;pane&gt; inclus dans l'&#233;l&#233;ment (Haut-niveau) &lt;decoder-config&gt; du fichier
d&#233;codeur.
</li>
<li>
Les noms de volets sont sp&#233;cifi&#233;s par un &#233;l&#233;ment &lt;name&gt; en haut de chaque &#233;lement &lt;pane&gt;.
</li>
</ul>
<a name="pane_replacement" id="pane_replacement"></a>
<h4>Volet de Remplacement </h4>
Les volets personnalis&#233;s sont habituellement ajout&#233;s aux fichiers d&#233;finition pour une des raisons suivantes:
<ol type="A">
<li>
Les &#233;l&#233;ments &#224; montrer ne sont dans aucunes des cat&#233;gories d&#233;finies par les noms standards des volets.
<ul>
<li>Dans ce cas le &lt;name&gt;se l'&#233;l&#233;ment du volet doit &#234;tre diff&#233;rent d'un nom standard existant..</li>
<li>Le nouveau volet personnalis&#233; sera ajout&#233; &#224; la fin de la liste volet.</li>
</ul>
</li>
<li>
La cat&#233;gorie standard volet applicable n'a pas la disposition correcte ou le nombre de variables.
<ul>
<li>Dans ce cas l'&#233;l&#233;ment volet &lt;name&gt; correspondra exactement &#224; un &#233;l&#233;ment standard volet &lt;name&gt; existant.</li>
<li>Le nouveau volet personnalis&#233; <strong><em>remplace</em></strong> le panneau standard du m&#234;me nom.</li>
</ul>
</li>
</ol>
<h4>Volets Vides</h4>
Les volets vides sont d&#233;finis comme ceux qui n'ont aucun &#233;l&#233;ments variables actifs &#224; afficher pour le d&#233;codeur s&#233;lectionn&#233;.
Ils peuvent encore contenir du texte..
<a name="pane_visibility" id="pane_visibility"></a>
<a name="visibility" id="visibility"></a>
<h4>Visibilit&#233; Volet</h4>
La visibilit&#233; volet est r&#233;git par un ensemble de r&#232;gles complexes:
<ul>
<li>
Ind&#233;pendamment de toutes les autres r&#232;gles, un volet ne sera pas affich&#233; s'il &#233;choue &#224;
<a href="#pane_include">"inclure" ou "exclure" des attributs </a> dans son &#233;l&#233;ment &lt;pane&gt;.
</li>
<li>
La visibilit&#233; d'un volet vide est contr&#244;l&#233;e par ce qui suit, par ordre de priorit&#233; croissante:
     <ul>
<li>les Pr&#233;f&#233;rences-&gt;Inventaire-&gt;programmateur-&gt;Montre des Onglets de r&#233;glages Vides.</li>
<li>Si pr&#233;sent, un attribut showEmptyPanes dans le fichier programmateur actuel XML.</li>
<li>Si pr&#233;sent, un attribut showEmptyPanes dans le fichier definition d&#233;codeur XML.</li>
</ul>
</li>
<li>
Le fait qu'un volet vide sp&#233;cifique (tel que d&#233;fini dans Volets vides ci-dessus) indique &#233;galement d&#233;pend du type de volet :
<ul>
<li>
Si le volet vide est un volet standard ( comme d&#233;fini dans <a href="#pane_considerations">Consid&#233;rations Volet</a> ci-
dessus )
il ne se montrera que si showEmptyPanes est en vigueur.
<em>Cependant, son contenu usuel sera remplac&#233; par un message g&#233;n&#233;rique expliquant que le volet est inutilis&#233; puisque
ses contenus sont inapplicables ou apparaissent dans un autre volet.</em>
</li>
<li>
Si le volet vide est un volet de remplacement (comme d&#233;fini dans l'&#233;l&#233;ment de <a href="#pane_replacement">Volet de
Remplacement</a> ci-dessus ),
il ne se montrerera que si showEmptyPanes est en vigueur.
</li>
<li>
Si le volet vide est est un volet personnalis&#233; ( comme d&#233;fini dans l'&#233;l&#233;ment A de <a href="#pane_replacement">Volet de
Remplacement</a> ci-dessus ),
il sera toujours montr&#233;, ind&#233;pendamment du fait que showEmptyPanes soit en vigueur.
</li>
</ul>
</li>
</ul>
<a name="pane_best_practice" id="pane_best_practice"></a>
<h4>Bonne Pratique</h4>
Les utilisateurs exp&#233;riment&#233;s peuvent choisir de masquer des volets vides, mais Montrer Onglets Vides est activ&#233; par d&#233;faut
ainsi les utilisateurs d&#233;butants ont besoin de savoir pourquoi les volets sont vides et o&#249; trouver les &#233;l&#233;ments qui ne sont pas
sur les volets attendus<p>
La meilleur pratique recommand&#233;e est:<ul>
<li>
O&#249; c'est possible, les &#233;l&#233;ments doivent utiliser les volet standard existant
</li>
<li>
O&#249; un volet particulier standard existant ne convient pas en termes de nombre d'&#233;l&#233;ments ou de mise en page :
<ul>
<li>
Cr&#233;ez un <a href="#pane_replacement">volet de remplacement</a> avec le m&#234;me nom que le panneau standard existant.
</li>
<li>
Par exemples, voir les volets Avanc&#233;s et Sons du d&#233;codeur des
<a href="https://github.com/JMRI/JMRI/blob/master/xml/decoders/ESU_LokSoundV4_0.xml" target="_blank">
ESU_LokSoundV4_0</a> .
</li>
</ul>
</li>
<li>
Si un volet standard existant ne convient pas en termes de conception:
<ul>
<li>
Cr&#233;ez un ou plusieurs nouveaux<a href="#pane_replacement"> volets personnalis&#233;s</a> avec un des noms descriptifs uniques.
</li>
<li>
Cr&#233;ez des
<a href="#pane_replacement">volets de remplacements</a> d'information seulement ( pas d'affichage d'&#233;l&#233;ments, rien que
du texte ) avec les m&#234;mes noms que les volets standards existants non-utilis&#233;s. Utilisez ces volets pour expliquer
pourquoi chaque volet est inutilis&#233; et/ou trouver les informations qu'un utilisateur peut raisonnablement esp&#233;rer
trouver sur ces volets.
Utilisez un <a href="#html_formatting">formatage HTML</a> pour am&#233;liorer l'affichage de ces panneaux explicatifs.
</li>
<li>
Par exemples, voir les volets de Niveaux Lumi&#232;re et Sons de la d&#233;finition du d&#233;codeur
<a href="https://github.com/JMRI/JMRI/blob/master/xml/decoders/ESU_LokSoundV4_0.xml" target="_blank">
ESU_LokSoundV4_0</a> .
</li>
</ul>
</li>
<li>
Les <a href="#pane_replacement">volets personnalis&#233;s</a> d'Information
seront <em>toujours</em> affich&#233;s.
</li>
</ul>
<p>
Dans quelques cas, exemple: un d&#233;codeur accessoire pour servos o&#249; aucun des volets d&#233;codeur-locomotive n'a de sens, ainsi la
d&#233;finition du d&#233;codeur contient un nombre de panneau personnalis&#233;s, c'est une simplification de mettre un attribut
showEmptyPanes="no" dans l'&#233;l&#233;ment &lt;decoder-config&gt; de la d&#233;finition XML et de masquer tous les panneaux vides par d&#233;faut.
<a name="frag_include" id="frag_include"></a>
<h3>Inclusion de Fragment de Fichier</h3>
Des parties communes des d&#233;finitions de d&#233;codeur peuvent &#234;tre plac&#233;es dans des "fragments de fichiers",
qui peuvent alors &#234;tre inclus dans de multiples fichiers de d&#233;finitions de d&#233;codeur.
Ceci rend plus ais&#233; la maintenance et l'actualisation de ces d&#233;finitions communes, exemple:
les traduire dans d'autres langues.
<p>
Par convention, nous avons ces fichiers fragment&#233;s dans les sous-r&#233;pertoires:
<dl>
<dt>xml/decoders/nmra</dt>
<dd> Les d&#233;finitions The NMRA pour les CVs, utilis&#233; par beaucoup de d&#233;codeurs
types
<dt>xml/decoders/(mfg)</dt>
<dd> Les variables sp&#233;cifiques Constructeurs, par exemple xml/decoders/esu
</dl>
Le format pour une inclusion est:
<code>
&lt;xi:include href="http://jmri.org/xml/decoders/nmra/shortAndLongAddress.xml"/&gt;
</code>
Le programme cherche ces fragments de fichier d'abord dans le r&#233;pertoire &lt;preferences&gt;,
puis dans le r&#233;pertoire &lt;programme&gt;. Le chemin complet doit &#234;tre pr&#233;sent, exemple
vous avez besoin d'un r&#233;pertoire xml qui contient un r&#233;pertoire d&#233;codeurs dans votre r&#233;pertoire &lt;preferences&gt; pour le fragment de
fichier &#224; trouver.
<p>
Utilisez un fichier existant comme un exemple pour pour les meilleurs &#233;l&#233;ments et &amp; le format n&#233;cessaire.
<a name="update" id="update"></a>
<h3>Actualisations et Migration</h3>
Quelquefois, nous rempla&#231;ons une d&#233;finition d&#233;codeur par une meilleure. La plus vieille est en service,
mais nous aimerions d&#233;placer les utilisateurs vers la nouvelle &#233;ventuellement. Il y a des attributs model-level
qui peuvent &#234;tre ajout&#233;s &#224; l'ancienne ( pas la nouvelle ) d&#233;finition pour faciliter cette tâche:
<code>
&lt;model show="no" model="A4X" replacementModel="A4X" replacementFamily="Jan 2012"&gt;
</code>
Quand l'utilisateur s&#233;lectionne "Mise &#224; Jour D&#233;finitions de D&#233;codeur" depuis le menu D&#233;bogage de la fen&#234;tre PanelPro
ou le menu Action dans DecoderPro,
toutes les entr&#233;es inventaire existantes qui utilisent la d&#233;finition d&#233;codeur avec "replacementModel" et/ou
"replacementFamily" d&#233;finie seront mises &#224; jour avec la d&#233;finition d&#233;codeur de remplacement sp&#233;cifi&#233;e.
Cela permet au gens d'utiliser la vieille et confortable d&#233;finition d&#233;codeur ( l'ancien fichier reste dans JMRI ) jusqu'&#224; ce
qu'ils d&#233;cident d'avancer pour la nouvelle.
<p>
L'attribut de l'&#233;l&#233;ment model "show" permet de garantir que les nouveaux utilisateurs
d&#233;marrent avec la nouvelle d&#233;finition.
Ses valeurs possibles sont:
<ul>
<li>"yes" (par d&#233;faut) - le comportement traditionnel, montre toujours ce mod&#232;le et la famille qu'il contient
<li>"no" - ne jamais montrer ce mod&#232;le, m&#234;me s'il correspond &#224; une s&#233;lection possible.
Utilis&#233; pour les anciennes (vieilles) d&#233;finitions qui ont &#233;t&#233; remplac&#233;es par des nouvelles.
<li>"maybe" - afficher uniquement si elle correspond &#224; une (possible) identification automatique.
</ul>
Pour cr&#233;er une nouvelle d&#233;finition compl&#232;te pour un mod&#232;le existant:
<ol>
<li>D&#233;cidez o&#249; vous voulez que le nouveau mod&#232;le soit d&#233;fini. Il doit y avoir soit un nouveau nom de mod&#232;le, un nouveau
nom de famille (nouveau fichier) ou les deux
<li>Cr&#233;er votre d&#233;finition.
<li>Ajouter les attributs "replacementModel" et "replacementFamily"pour la vieille d&#233;finition.
<li>G&#233;n&#233;ralement, d&#233;finissez l'attribut "show" dans l'ancienne d&#233;finition &#224; «no». La seule exception &#224; cette r&#232;gle est
lorsque certains utilisateurs voudront s&#233;lectionner encore l'ancienne d&#233;finition pour un nouveau d&#233;codeur, peut-&#234;tre
parce que l'identification automatique peut indiquer l'usage de l'ancienne d&#233;finition depuis de la nouvelle.
( Par exemple, vous allez partager l'ancienne d&#233;finition en deux parties, car une nouvelle version locomotive existe )
</ol>
<h3>Capacit&#233;s de Programmation</h3>
Quelques d&#233;codeurs peuvent faire des op&#233;rations de programmation suppl&#233;mentaires, par exemple en contournant les limitations de
la programmation de CV dans la station de commande. Les &#233;l&#233;ments "Capability" sont utilis&#233;s pour indiquer ceux-ci &#224; DecoderPro.
<h4>Acc&#232;s aux CV d'adresses Hautes</h4>
Certaines centrales de commandes peuvent seulement acc&#233;der aux CV 256 ou CV 512. Quelques
fabricants de d&#233;codeur ont construit des m&#233;canismes pour contourner cela. Par exemple,
quelques d&#233;codeurs ESU peuvent utiliser l'&#233;critures sur divers CV pour acc&#233;der aux CV adresse CV.
Pour dire &#224; DecoderPro qu'un d&#233;codeur peut faire cela, utilisez un &#233;l&#233;ment comme:
<code>
&lt;capability&gt;
&lt;name&gt;High Access via Double Index&lt;/name&gt;
&lt;parameter name="Adresse CV Max "&gt;256&lt;/parameter&gt;
&lt;parameter name="CV Adresse Haute "&gt;96&lt;/parameter&gt;
&lt;parameter name="CV Adresse basse"&gt;97&lt;/parameter&gt;
&lt;parameter name="CV Acc&#232;s Registre"&gt;99&lt;/parameter&gt;
&lt;parameter name="Modulo"&gt;100&lt;/parameter&gt;
&lt;/capability&gt;
</code>
<p>
Les param&#232;tres doivent appara&#238;tre dans l'ordre montr&#233;. Ils signifient:
<ul>
<li>"CV Adresse Max" - Les adresses CV &#233;gale ou inf&#233;rieure n'utilisent
pas ce m&#233;canisme. ( Le m&#233;canisme ne sera pas utilis&#233;e si la centrale de commande
peut directement lire/&#233;crire le CV demand&#233;, mais m&#234;me si elle ne peut pas, ce
m&#233;canisme ne sera pas utilis&#233; en dessous de cette valeur )
<li>"CV Adresse Haute" - La partie haute ( voir Modulo ) de l'adresse CV
est &#233;crite ici au d&#233;but de l'op&#233;ration
<li>"CV Adresse basse" -La partie basse (voir Modulo) de l'adresse de CV est
&#233;crite ici en 2&#232;me partie de l'op&#233;ration.
<li>"CV Acc&#232;s Registre" - apr&#232;s que les valeurs d'adresse sont d&#233;finies, ceci est le
CV qui est lu ou &#233;crit pour lire ou r&#233;gler le CV r&#233;el d&#233;sir&#233;.
<li>"Modulo" - valeur utilis&#233;e pour partager l'adresse r&#233;elle des CVs entre l'adresse haute et basse.
</ul>
<p>
Par exemple, pour &#233;crire 21 dans le CV 614 avec les valeurs montr&#233;es, DecoderPro &#233;crira:
<ul>
<li> 6 =(614/100) dans le CV 96 pour la partie haute de l'adresse
<li> 14 = (614 mod 100) dans le CV 97 pour la partie basse de l'adresse
<li> 21 dans CV 99 pour &#233;crire dans le CV actuel
</ul>
<p>
Pour un exemple d'o&#249; placer cette &#233;l&#233;ment "capability" dans le fichier, etc,... voir le fichier
<a href="https://github.com/JMRI/JMRI/blob/master/xml/decoders/ESU_LokSoundV4_0.xml" target="_blank">
xml/decoders/ESU_LokSoundV4_0.xml</a> .
<p>
<a name="zimocapability" id="zimocapability"></a>
Autre approche utilis&#233;e par exemple par Zimo, est de fournir un moyen d'acc&#232;s &#224; la page.
par exemple, pour &#233;crire 21 dans le CV614 avec un de ceux-ci, vous devez &#233;crire:
<ul>
<li> 60 =(614/100)*10 dans le CV 7 pour la partie haute de l'adresse
<li> 21 dans le CV 14 (614 mod 100) pour &#233;crire dans le CV actuel
</ul>
Cet &#233;l&#233;ment "capability" va faire:
<code>
&lt;capability&gt;
&lt;name&gt;High Access via Partial Index&lt;/name&gt;
&lt;parameter name="CV Adresse Max "&gt;100&lt;/parameter&gt;
&lt;parameter name="CV Adresse Haute"&gt;7&lt;/parameter&gt;
&lt;parameter name="Multiplicateur Adresse Haute"&gt;10&lt;/parameter&gt;
&lt;parameter name="Modulo"&gt;100&lt;/parameter&gt;
&lt;/capability&gt;
</code>
Notez que "name" a une valeur diff&#233;rente. C'est ce qui s&#233;lectionne l'algorithme n&#233;cessaire ici.
<p>
Les param&#232;tres doivent appara&#238;tre dans l'ordre montr&#233;. Ils signifient:
<ul>
<li>"CV Adresse Max" - Les adresses CV &#233;gale ou inf&#233;rieure n'utilisent
pas ce m&#233;canisme. ( Le m&#233;canisme ne sera pas utilis&#233;e si la centrale de commande
peut directement lire/&#233;crire le CV demand&#233;, mais m&#234;me si elle ne peut pas, ce
m&#233;canisme ne sera pas utilis&#233; en dessous de cette valeur )
<li>"CV Adresse Haute" - La partie haute ( voir Modulo ) de l'adresse CV
est &#233;crite ici au d&#233;but de l'op&#233;ration
<li>"Multiplicateur Adresse Haute" - Ceci multiplie la partie haute de l'adresse du CV
avant qu'il soit stock&#233; dans l'Adresse Haute du CV. Par exemple,
mettre un 10 ici stockera la partie haute de l'adresse dans le "10ieme digit" de
l'Adresse Haute du CV.
<li>"Modulo" - valeur utilis&#233;e pour partager l'adresse r&#233;elle des CVs entre l'adresse haute et basse.
</ul>
<p>
<a id="zimobis"></a>
Une autre approche utilis&#233;, exemple: Zimo utilise une page registre qui
sera effac&#233;e ensuite.
Par exemple, pour &#233;crire 21 dans CV614 avec une de celles-ci vous devez:
<ul>
<li>&#201;crire 260 =(614/100)*10+200 dans CV 7 pour la partie haute de l'adresse
Le"200" est un indicateur pour utiliser ce mode.
<li>&#201;crire 21 dans CV 14 (614 mod 100) pour &#233;crire dans le CV actuel
<li>&#201;crire 0 dans CV7 pour r&#233;initialiser l'indexage.
</ul>
Cet &#233;l&#233;ment "capability" fera ceci wi:
<code>
&lt;capability&gt;
&lt;name&gt;High Access via Partial Index with Reset&lt;/name&gt;
&lt;parameter name="CV Adresse Max "&gt;100&lt;/parameter&gt;
&lt;parameter name="CV Adresse Haute"&gt;7&lt;/parameter&gt;
&lt;parameter name="Multiplicateur Adresse Haute"&gt;10&lt;/parameter&gt;
&lt;parameter name="Modulo"&gt;100&lt;/parameter&gt;
&lt;parameter name="Indicateur"&gt;200&lt;/parameter&gt;
&lt;/capability&gt;
</code>
<p>
Les param&#232;tres doivent appara&#238;tre dans l'ordre montr&#233;. Ils signifient:
<ul>
<li>"CV Adresse Max" -Les adresses CV &#233;gale ou inf&#233;rieure n'utilisent
pas ce m&#233;canisme. ( Le m&#233;canisme ne sera pas utilis&#233;e si la centrale de commande
peut directement lire/&#233;crire le CV demand&#233;, mais m&#234;me si elle ne peut pas, ce
m&#233;canisme ne sera pas utilis&#233; en dessous de cette valeur )
<li>"CV Adresse Haute" - La partie haute (voir Modulo) de l'adresse CV est
&#233;crite ici au d&#233;but de l'op&#233;ration
<li>"Multiplicateur Adresse Haute" - Ceci multiplie la partie haute de l'adresse CV
avant quelle soit stock&#233;e dans le cv Adresse Haute. Par exemple,
mettre un 10 ici stockera la partie haute de l'adresse le "10ieme digit" de
l'Adresse Haute du CV.
<li>"Modulo" - valeur utilis&#233;e pour partager l'adresse r&#233;elle des CVs entre l'adresse haute et basse.
CVs.
<li>"Indicateur" - valeur ajout&#233;e &#224; la valeur stock&#233;e dans le CV Adresse Haute
pour dire au d&#233;codeur d'utiliser ce mode.
</ul>
<a id="accessoryops"></a>
<h4>D&#233;codeur Accessoire Mode Ops( Exploitaion )</h4>
Les paquets sp&#233;ciaux de programmation sont utilis&#233;s par certains d&#233;codeurs accessoires
pour configurer leur CVs depuis le signal DCC de la voie.
La &lt;capability&gt; &#224; faire ceci est &#233;crite:
<code>
&lt;capability&gt;
&lt;name&gt;Ops Mode Accessory Programming&lt;/name&gt;
&lt;/capability&gt;
</code>
Il n'y a pas de param&#232;tres. Notez que ceci fonctionne seulement pour l'&#233;criture en mode Ops;
ces paquets NMRA DCC particuliers ne remplissent pas les op&#233;rations de lecture, ils ne travaillent
pas en mode service (voie de programmation).
<h4>Acc&#232;s CV Index&#233;</h4>
Pour acc&#233;der &#224; des CV index&#233;s, inclure cet &#233;l&#233;ment de &lt;capability&gt;::
<code>
&lt;capability&gt;
&lt;name&gt;Indexed CV access&lt;/name&gt;
&lt;parameter name="PI"&gt;31&lt;/parameter&gt;
&lt;parameter name="SI"&gt;32&lt;/parameter&gt;
&lt;parameter name="cvFirst"&gt;false&lt;/parameter&gt;
&lt;/capability&gt;
</code>
Si cvFirst est true (vrai), le format est CV.PI ou CV.PI.SI comme utilis&#233; par QSI.
S'il est false (faux), le format est PI.CV ou PI.SI.CV comme utilis&#233; par ESU.
<p>
Si &#224; la fois ceci et les capacit&#233;s "acc&#232;s &#224; CV haut" sont pr&#233;sents, celui-ci devrait &#234;tre &#233;num&#233;r&#233; en deuxi&#232;me.
<p>
Pour un exemple de l'endroit o&#249; le positionner etc., voir le fichier
<a href="https://github.com/JMRI/JMRI/blob/master/xml/decoders/ESU_LokSoundV4_0.xml" target="_blank">
xml/decoders/ESU_LokSoundV4_0.xml</a>.
<a id="tcsaccess"></a>
<h4>Acc&#232;s D&#233;codeur TCS WOW</h4>
Les D&#233;codeurs TCS WOW utilisent utiliser plusieurs m&#233;thodes uniques (pour le moins) d'acc&#232;s aux CV..
JMRI les re&#231;oit par l'interm&#233;diaire d'un &#233;l&#233;ment de capacit&#233; sp&#233;ciale:
<code>
&lt;capability&gt;
&lt;name&gt;TCS 4 CV access&lt;/name&gt;
&lt;/capability&gt;
</code>
Ceci fournit deux formats personnalis&#233;s de CV:
<ul>
<li> T2CV.11.12 &#201;crit 11 dans le premier CV index (201), 12 dans le second CV index(202),
puis lit/&#233;crit/confirme les op&#233;rations sur les CV 203 et 204
<li> T3CV.11.12.13 &#201;crit 11 ans le premier CV index (201), la donn&#233;e dans le second CV index (202),
puis &#233;crit 12 dans le CV 203 et 13 dans le CV204.
</ul>
Par exemples sur comment l'utiliser, voir la d&#233;finition d&#233;codeur TCS WOW .
<h4>Partage de Variables - "Adresses longues sur 2 CVs</h4>
<p>Quelques d&#233;codeurs, principalement des d&#233;codeurs accessoires, utilisent des adresses "longues" qui sont r&#233;parties sur 2 CVs, contigus ou non.</p>
<p>CV1 et CV9 sont standardis&#233;s par le NMRA pour les adresses primaires des d&#233;codeurs d'accessoires, voir <a href="http://www.nmra.org/sites/default/files/standards/sandrp/pdf/s-9.2.2_decoder_cvs_2012.07.pdf">NMRA standard 9.2.2</a>.</p>
<p>Les adresses longues peuvent &#234;tre accessible par le type "splitVal", comme dans les exemples suivants:</p>
<code>
&lt;variable CV="1" item="Accessory Address" default="1" minOut="1"&gt;
&lt;splitVal highCV="9" upperMask="XXXXXVVV"/&gt;
&lt;label&gt;Accessory Address&lt;/label&gt;
&lt;/variable&gt;
</code>
<p>Le premier CV d&#233;clar&#233; est le LSB (l'octet le moins significatif) tandis que dans le"CV HautV" se trouve le MSB (l'octet le plus significatif).</p>
<p>splitVal actuellement a deux param&#232;tres, un "Factor" et un "Offset":</p>
<ul>
<li>Valeur &#224; mettre dans les CVs = ((valeur dans le champ texte) - Offset)/Factor</li>
<li>Valeur &#224; mettre dans le champ texte = ((valeur dans les CVs) * Factor) + Offset</li>
</ul>
<code>
&lt;splitVal highCV="9" factor="4" offset="-3"/&gt;
</code>
<p>Pour exemple, voir le fichier <a href="https://github.com/JMRI/JMRI/blob/master/xml/decoders/SPROG_DCC_Servo6." target="_blank">xml/decoders/SPROG_DCC_Servo6.xml</a> .</p>
<p>Pour les d&#233;tails et les fonctionnalit&#233;s avanc&#233;es , voir cette page <a href="/JavaDoc/doc/jmri/jmrit/symbolicprog/SplitVariableValue.html" target="_blank">JavaDoc page</a></p>
<a name="conditional" id="conditional"></a>
<h3>D&#233;finitions Conditionnelles de D&#233;codeur </h3>
Pour r&#233;duire le nombre de fichiers de d&#233;finition d&#233;codeur n&#233;cessaires, chaque fichier peut contenir
les d&#233;finitions pour de multiples mod&#232;les de d&#233;codeur.
JMRI fournit les moyens d'adaptation de la d&#233;finition &#224; des mod&#232;les sp&#233;cifiques
&#224; la fois quand le fichier est initialement d&#233;velopp&#233; pour une utilisation, et
plus tard tandis que le programme travaille sur la d&#233;finition.
Il y a des utilisations particuli&#232;res utilisant des fragment de fichiers communs
qui peuvent &#234;tre inclus par de multiple fichiers de d&#233;finition de d&#233;codeur (d&#233;finition
diff&#233;rente-mais-familles similaires)
<a name="var_include" id="var_include"></a>
<h4>Inclure/Exclure lors de l'Expansion de la Variable</h4>
Un &#233;l&#233;ment "variable" d&#233;velopp&#233; et utilis&#233; peut &#234;tre rendu conditionnel au d&#233;codeur type utilisant les attributs "include" et "exclude" dans les &#233;l&#233;ments &lt;variables&gt; et &lt;variable&gt;.
<p>
Une d&#233;finition de variable ne peut pas &#234;tre d&#233;velopp&#233;e et utilis&#233;e:
</p>
<ul>
<li>Si un attribut "exclude" est pr&#233;sent, ni si l'ID
produit d&#233;codeurs, nom de mod&#232;le, nom de famille est trouv&#233; dans la liste exclure.
<li>Si un attribut "include" est pr&#233;sent, au moins
l'une des ID produit d&#233;codeurs, le nom du mod&#232;le, ou le nom de famille se trouve dans la liste d'inclusion. </ Ul>
</ul>
Ces deux conditions doivent &#234;tre vrai, et il est possible d'utiliser
&#224; la fois inclure et exclure sur le m&#234;me &#233;l&#233;ment, mais il est plus habituel d'en
utiliser qu'un.
<p>
Exemple:
</p>
<pre>
&lt;variable label="My Variable" CV="72" include="ModelA,400"&gt;
&lt;decVal/&gt;
&lt;/variable&gt;
</pre>
<p>
La variable ci-dessus appara&#238;t seulement lors du d&#233;veloppement de la d&#233;finition
pour le ModelA ou le product ID 400.
</p>
<p>
Vous pouvez aussi mettre des attributs inclure et exclure sur des choix individuels dans une variable de type
&#233;num&#233;ration. Ceci peut &#234;tre utilis&#233; par exemple pour inclure des options sp&#233;cifiques d'&#233;clairage dans
certaines familles de d&#233;codeur.
</p>
<p>
Les attributs sur un &#233;l&#233;ment &lt;variable&gt; agissent sur tous les &#233;l&#233;ments &lt;variable&gt; en son sein,
ainsi que tous les attributs include ou exclude sur les variables individuelles.
</p>
<a name="pane_include" id="pane_include"></a>
<h4>Inclure/Exclure Pendant la Cr&#233;ation d'un Volet</h4>
si un volet (ou partie d'un volet) est cr&#233;&#233; il peut &#234;tre rendu conditionnel sur le type de d&#233;codeur en utilisant les attributs "include" et "exclude" sur le &lt;pane&gt; et les &#233;l&#233;ments &lt;group&gt;.
<p>
Un volet ne peut pas &#234;tre cr&#233;&#233;
</p>
<ul>
<li>Si un attribut "exclude" est pr&#233;sent, ni si l'ID
produit d&#233;codeurs, nom de mod&#232;le, nom de famille est trouv&#233; dans la liste exclure.
<li>Si un attribut "include" est pr&#233;sent, au moins
l'une des ID produit d&#233;codeurs, le nom du mod&#232;le, ou le nom de famille se trouve dans la liste d'inclusion.
</ul>
Ces deux conditions doivent &#234;tre vrai, et il est possible d'utiliser
&#224; la fois inclure et exclure sur le m&#234;me &#233;l&#233;ment, mais il est plus habituel d'en
utiliser qu'un.
<p>
Exemple:
</p>
<pre>
&lt;pane label="My Pane" include="ModelA,400"&gt;
...
&lt;/pane&gt;
</pre>
<p>
&quot;My Pane&quot; sera cr&#233;&#233; seulement lors du d&#233;veloppement de la d&#233;finition d&#233;codeur pour le
ModelA ou l'ID produit 400.
</p>
<p>
Vous pouvez aussi cr&#233;er un &#233;l&#233;ment &lt;group&gt; avec les attributs inclus et exclus.
Les &#233;l&#233;ments au sein du &lt;group&gt; seront cr&#233;er seulement si les conditions &lt;group&gt; sont respect&#233;es.
Ceci peut &#234;tre utilis&#233; par exemple pour afficher des &#233;tiquettes texte sp&#233;cifiques pour certains mod&#232;les de d&#233;codeurs.
</p>
<p>
Exemple:
<pre>
&lt;group include="ModelA,400"&gt;
&lt;label&gt;
&lt;text&gt;Ces d&#233;codeurs sont tr&#232;s vieux.&lt;/text&gt;
&lt;/label&gt;
&lt;label&gt;
&lt;text&gt;Quelques fonctions sont indisponibles.&lt;/text&gt;
&lt;/label&gt;
&lt;/group&gt;
</pre>
<p>
Le texte sera cr&#233;er seulement lors du d&#233;veloppement de la d&#233;finition d&#233;codeur
pour le ModelA ou le produit ID 400.
</p>
<a name="qualify" id="qualify"></a>
<h4>Qualification de Temps d'ex&#233;cution de Variables</h4>
<h5>Qualification des variables</h5>
Un &#233;l&#233;ments "qualifier" sur un &#233;l&#233;ment variable pour permettre d'activer ou d&#233;sactiver la variable d&#233;pendant des valeurs actuelles
d'une autre variable. Ceci peut &#234;tre utile si, par exemple, le d&#233;codeur a un CV "mode" qui d&#233;termine la
signification des autres CVs.
<p>
Si une variable est qualifi&#233;e d'inactive, elle ne doit pas appara&#238;tre dans aucun
volet et ni lue ou &#233;crite dans le d&#233;codeur quand vous faites les op&#233;rations
de lecture ou d'&#233;criture "All" ou "Changes only". La valeur est sauv&#233;e dans l'inventaire et sera
recharg&#233;e quand l'entr&#233;e inventaire sera r&#233;ouverte plus tard.
</p>
<p>Dans l'exemple suivant,
un CV est interpr&#234;t&#233; comme deux variables diff&#233;rentes selon
que le d&#233;codeur est r&#233;gl&#233; pour un adressage court ou long.
<pre>
&lt;variable label="Variable for Short Address" CV="11"&gt;
&lt;qualifier&gt;
&lt;variableref&gt;Address Format&lt;/variableref&gt;
&lt;relation&gt;eq&lt;/relation&gt;
&lt;value&gt;0&lt;/value&gt;
&lt;/qualifier&gt;
&lt;decVal/&gt;
&lt;/variable&gt;
&lt;variable label="Variable for Long Address" CV="11"&gt;
&lt;qualifier&gt;
&lt;variableref&gt;Address Format&lt;/variableref&gt;
&lt;relation&gt;eq&lt;/relation&gt;
&lt;value&gt;1&lt;/value&gt;
&lt;/qualifier&gt;
&lt;decVal/&gt;
&lt;/variable&gt;
</pre>
D'autres op&#233;rateurs disponibles incluent "gt", "ge", "ne", "lt", "le" and "exists".
L'op&#233;rateur "exists" v&#233;rifie si une variable est d&#233;finie ou pas; une valeur "1"
signifie qu'elle l'est, et un "0" signifie qu'elle ne l'est pas.
<p>
Si de multiple &#233;l&#233;ment "qualifier" sont pr&#233;sent, tout doit &#234;tre vrai pour que la variable soit active et affich&#233;e.
</p>
<a name="panes" id="panes"></a>
<h5>Qualification des Volets </h5>
Un &#233;l&#233;ment "qualifier" sur un &#233;l&#233;ment volet vous permet d'activer ou de d&#233;sactiver le volet d&#233;pendant de la valeur actuelle d'une variable.
<p>Si un volet est qualifi&#233; d'inactif, ses contenus ne seront plus affich&#233;s.
Ceci inclus tous les labels ou autres d&#233;corations sur le volet, en plus de toutes les
variables qu'il contient.
D&#233;pendant d'autres options,le volet peut soit &#234;tre montr&#233; vide ou pas montr&#233;
du tout. Pourtant, Les variables en son sein sont toujours actives, et un
"Lire toutes les feuilles" ou "&#201;crire toutes les feuilles" les &#233;criront toujours.
Si vous avez des d&#233;finitions de variables qui se chevauchent, examiner attentivement si cela est ce que vous voulez. Vous
pourriez avoir besoin de qualifier les variables qui se chevauchent individuellements.
<p>L'exemple suivant active
un des deux volets d&#233;pendant du d&#233;codeur selon qu'il est actuellement fix&#233; &#224; un adressage court ou &#224; long .
</p>
<pre>
&lt;pane name="Courte Seulement"&gt;
&lt;qualifier&gt;
&lt;variableref&gt;Address Format&lt;/variableref&gt;
&lt;relation&gt;eq&lt;/relation&gt;
&lt;value&gt;0&lt;/value&gt;
&lt;/qualifier&gt;
&lt;column&gt;&lt;row&gt;
&lt;label label="Volet Courte Seulement"/&gt;
&lt;/row&gt;&lt;/column&gt;
&lt;/pane&gt;
&lt;pane name="Longue Seulemnt"&gt;
&lt;qualifier&gt;
&lt;variableref&gt;Address Format&lt;/variableref&gt;
&lt;relation&gt;eq&lt;/relation&gt;
&lt;value&gt;1&lt;/value&gt;
&lt;/qualifier&gt;
&lt;column&gt;&lt;row&gt;
&lt;label label="Volet Longue Seulement"/&gt;
&lt;/row&gt;&lt;/column&gt;
&lt;/pane&gt;
</pre>
Autre op&#233;rateur incluant disponible "gt", "ge", "ne", "lt" et "le".
<p>
Si de multiple &#233;l&#233;ments "qualifier" sont pr&#233;sent, tous doivent &#234;tre vrais pour que
le volet soit actif et affich&#233;.
<a name="labels" id="labels"></a>
<h5>Qualification des &#201;l&#233;ments sur un Volet</h5>
Un &#233;l&#233;ment "qualifier" sur un &#233;l&#233;ment "label", "soundlabel", "row", "column", "grid" or "griditem"
vous permet d'activer ou d&#233;sactiver l'affichage de cet &#233;l&#233;ment sur un volet sp&#233;cifique.
<p>L'exemple suivant affiche un message d'avertissement si une
variable version-number a une valeur trop faible:</p>
<pre>
&lt;label label="Version number too low!"&gt;
&lt;qualifier&gt;
&lt;variableref&gt;Version Number&lt;/variableref&gt;
&lt;relation&gt;lt&lt;/relation&gt;
&lt;value&gt;3&lt;/value&gt;
&lt;/qualifier&gt;
&lt;/label&gt;
</pre>
<p>
Vous pouvez utiliser le m&#234;me "qualifier" pour de multiple &#233;l&#233;ments en enfermant les &#233;l&#233;ments dans
un &#233;l&#233;ment "group" et en ajoutant le "qualifier" &#224; l'&#233;l&#233;ment "group":
</p>
<pre>
&lt;group&gt;
&lt;qualifier&gt;
&lt;variableref&gt;Version Number&lt;/variableref&gt;
&lt;relation&gt;lt&lt;/relation&gt;
&lt;value&gt;3&lt;/value&gt;
&lt;/qualifier&gt;
&lt;label label="Version number too low!"/&gt;
&lt;label label=" "/&gt;
&lt;label label="Please update."/&gt;
&lt;/group&gt;
</pre>
<p>
Une fois que vous avez lu le "Version Number" (variable ou CV) depuis le d&#233;codeur
Le label s'affichera si ce version-number est trop faible. Notez
qu'initialement avant que les valeurs soient lues depuis le d&#233;codeur, cet
affichage d&#233;pendra de la valeur par d&#233;faut depuis le fichier qui pourrait induire en erreur l'utilisateur.
</p>
<!--#include virtual="/help/fr/parts/Footer_fr.shtml" -->
</div><!-- closes #mainContent-->
</div> <!-- close #mBody -->
<script src="/js/help.js"></script>
</body>
</html>