Author: Bob Jacobsen
Keywords: JMRI technical system add

# JMRI: Ajouter un Nouveau Système

Cette page décrit les étapes pour ajouter un nouveau type de données, par exemple, Appareils Powerline (Coupleur Courant Porteur CPL), à JMRI.

Elle utilise comme exemple l'ajout du type du "courant porteur en ligne" en Janvier 2008.

Nous listons les fichiers qui sont modifiés et créés dans l' ordre où ils ont été fait dans ce cas, les autres ordres peuvent aussi travailler, et vous ne pourriez pas devoir à faire tout cela.

Dans ce cas particulier, nous avons commencé par la copie d'une réalisation d'un système existant (SECSI). Ceci affecte la façon dont nous avons ordonné cela, et fait bouger le processus de base assez rapidement.

### Dupliquer un système existant

Créer une double arborescence de fichiers

  En utilisant tous les outils qui vous aident, dupliquer l'arborecence src/jmri/jmrix correspondant au système existant que vous souhaitez copier.

Modifiez les informations de nom du paquet

  En utilisant votre éditeur favori, changez tous les noms des paquets dans les nouveaux fichiers à leur nouveaux emplacements. Dans cet exemple qui était un remplacement de "jmri.jmrix.secsi" par "jmri.jmrix.powerline".

  À ce point, soyez sûr de pouvoir compiler. Ce code n'est pas encore compatible, Mais il devrait se compiler.
Vérifier les dates du copyright

  Parce que vous avez copié un système qui pourraient ne pas avoir été touché pendant un certain temps, ajoutez l'année courante ( et si nécessaire, votre nom ) aux notes du copyright dans tous les fichiers.

Création d'une structure SVN

  Dans cette étape, nous avons la structure de base SVN en place.

  - Ajouter tous les répertoires que vous avez créé dans SVN. Dans l'exemple, c'était:
    `svn add powerline powerline serialdriver/serialmon/
    svn add powerline/configurexml powerline/serialdriver/configurexml`
  - Ajouter tous les fichiers COPYING :
    `svn add powerline/COPYING powerline/*/COPYING powerline/*/*/COPYING`
  - Enfin, remettre ces fichiers (mais seulement ces fichiers):
    `svn commit -m"usual file" powerline`
  À ce stade, assurez-vous que vous pouvez compiler.

### Faire une Migration Basique

Migrer les noms

  À l'aide de votre éditeur favori, changer toutes les occurrences de l'ancien nom système par le nouveau.

  Puis rechercher et remplacer, peut-être pas littéralement, toutes les occurrences.

  À ce stade, assurez-vous que vous pouvez compiler.

### Créer des Tests Basiques

Dupliquer les répertoire

  En suivant les étapes ci-dessus, Dupliquer le répertoire pour les tests des systèmes précédents, la création d'un nouveau répertoire dans le test/jmri/jmrix pour contenir les tests.
  Changer le nom des paquets, vérifier les dates de copyright, créer la structure de SVN, et migrer les noms.

  A ce stade, assurez-vous que vous pouvez compiler à la fois le code principal (qui n'a pas été modifié dans cette étape) et les tests.

  Vous devez également être en mesure d'exécuter avec succès le tests dans votre nouveau système (même s'il a été créé pour la fonctionnalité de l'ancien système): tests ant `&&./runtest.csh jmri.jmrix.powerline.SerialTest`

### Connectez les Bases vers le reste du système

Connectez-vous à la configuration des menus

  Modifier les fichiers jmri/jmrix/ActiveSystemsMenu.java (deux places), src/jmri/jmrix/JmrixConfigPane.java (une place) et src/jmri/jmrix/SystemsMenu.java (une place) pour ajouter le nouveau système.

  Ne soumettez pas ce SVN encore!

  À ce stade, assurez - vous que vous pouvez compiler et exécuter DecoderPro, et que votre nouveau système apparaît dans le panneau des préférences.
Connectez - vous pour tester l'arbre

  Modifier le fichier test/jmri/jmrix/JmrixTest.java pour appeler vos tests du nouveau système.

  Ne soumettez pas ce SVN encore!

  À ce point, lorsque vous faites "ant alltest", votre nouveau système de test doit être exécuté.

### Migrer vers des fonctionnalités de Base

mise à jour des options de connexion
  Vitesses, etc, dans powerline/serialdriver/SerialDriverAdapter.java.
Obtenez d'envoyer/recevoir des communications de travail
  La première étape est d'obtenir des communications de travail afin que vous puissiez envoyer un message de la fenêtre "Envoyer la commande", et la voir et voir la réponse dans la fenêtre "Moniteur".

### Le Rendre facile à utiliser

Ajouter de Possibles Éléments de Démarrage

  Modifier src/apps/ActionListBundle.properties pour ajouter des éléments appropriés.

### Compléter la documentation

Créer L'Arbre d'Aide

  Commencez par dupliquer, puis modifiez, n'oubliez pas de mettre à jour l'index.

  Vous aurez également à modifier les emplacements sur les différents cadres

ant javadoc

  Créer les JavaDocs, et résoudre les éventuels nouveaux (ou anciens) problèmes.

Ajouter le système aux pages web "matériel"

  Modifier help/fr/html/hardware/index.shtml.

## Ajouter une connexion TCP/IP à un système existant

Ce sont des notes brutes de l'ajout d'une connexion TCP/IP du type RFID, en copiant l'architecture du système C/MRI.

1. Créer un répertoire "networkdriver" en parallèle avec le répertoire "serialdriver".
   `svn cp java/src/jmri/jmrix/cmri/serial/networkdriver/ java/src/jmri/jmrix/rfid/`
2. Éditez le paquet et importez les états, tous les fichiers ".cmri.serial." à ".rfid.", puis ".cmri." à ".rfid.".
3. changez le "setManufacturer" appelé dans NetworkDriverAdapter.
4. C/MRI pourrait ne pas avoir été le meilleur point de départ, mais c'est ce que nous avons. Quelques modifications spécifiques nécessaire:
   - Changez CMRISystemConnectionMemo pour RfidSystemConnectionMemo
   - Enlevez la référence à NodeConfigAction dans ConnectionConfig ( ou utilisez ceci comme la base pour les configurations spéciales dont vous avez besoin; c'était pour ajouter un bouton "Configure Nodes" )
   - Changez le nom de SerialSensorManager
   - Enlevez les références SerialTurnoutManager SerialLightManager ( Il n'y en a pas dans la RFID )
   - Ajoutez RfidReporterManager
5. À besoin d'un pilote de réseau: `svn cp java/src/jmri/jmrix/cmri/serial/SerialNetworkPortController.java java/src/jmri/jmrix/rfid/RfidNetworkPortController.java`
   et modifiez le comme ci-dessus.
6. java/src/jmri/jmrix/rfid/networkdriver/configurexml/ConnectionConfigXml.java contient du code mort pour configurer les nœuds C/MRI (encore une fois, peut-être pas le bon système à copier). Laissez cela pour plus tard en commentant le corps de extendElement (Element e) et décompressez Element (élément e).
7. Changez les références SerialTrafficController pour RfidTrafficController.
8. Un autre problème avec C/MRI comme prototype est qu'il a encore une instance () appel dans NetworkDriverAdapter. Aller à RFID SerialDriverAdapter et copiez la structure là. `// connect to the traffic controller this.getSystemConnectionMemo().setRfidTrafficController(control); control.setAdapterMemo(this.getSystemConnectionMemo()); control.connectPort(this); control.sendInitString(); // declare up jmri.jmrix.rfid.ActiveFlag.setActive();` ( Il y a aussi un tas de choses avant cela dans la méthode configurée () qui doit simplement être copié, parce que Les connexions RFID ont aussi besoin d'une configuration compliquée ); l'acteur a également besoin de certaines parties copiées.
9. Ajoutez jmri.jmrix.rfid.networkdriver.ConnectionConfig à java/src/jmri/jmrix/rfid//RfidConnectionTypeList.java
10. Changez "RFID Device Connection" pour "Direct Serial Connection" dans ConnectionConfig.name() La connexion réseau par défaut à "Network Connection".
11. Vérifiez que configure/save/restart ramène toutes les options de configuration.

## Connexions avec une Configuration Compliquée

Certains types de connexion ont besoin de plus de configuration et/ou la configuration que vous pouvez obtenir avec l'habituel mécanisme option1/option2/option3. Les outils disponibles sont:

- loadDetails() dans ConnectionConfig. Cette fonction est appelée lors de la mise en place de la fenêtre des préférences, et peut être utilisée pour ajouter des commandes supplémentaires C/MRI l'utilise pour ajouter un bouton "Configure Nodes". RFID l'utilise pour ajouter des écouteurs qui contrôlent quelles combinaisons d'options sont disponibles.
- extendElement(Element e) et unpackElement(Element e) dans ConnectionConfigXml peut être utilisé pour stocker des informations supplémentaires et les recharger, respectivement. C/MRI l'ajoute pour stocker ses informations de nœuds