Utilitaire CS2: Commande de Loc

Bonsoir à tous

Je viens de finir pour mon usage un petit programme de commande qui permet la commande de loc au travers de la CS2 au moyen de la souris ou du clavier.
Le but principal c’est de pouvoir commander les fonctions F16 à F28 des locs en protocole DCC, en plus des capacités de la CS2.
En raison de la méthode de communication de la CS2, il ne peut pas fonctionner en même temps qu’un autre programme communiquant avec la CS2.

Au démarrage rien n’est actif. Le programme attends de recevoir l’adresse IP de la CS2. Normalement c’est automatique, mais cela peut être aussi fait manuellement.
Une fois l’adresse IP de la CS2 validée, il est possible de sélectionner un protocole, et une adresse de loc.
]L’utilisation de F5, F6 et F7 permet de choisir le protocole./:m]
]Les touches du pavé numérique permettent de rentrer l’adresse/:m]
]La touche espace fait la fonction “STOP” / “GO” pour autant que le contrôle ne soit pas dans l’adresse ou la vitesse./:m]
Une fois l’adresse de loc validée, la commande est possible, soit à la souris, soit au clavier:
]La vitesse est ajustée avec les touches + et - du pavé numérique./:m]
]L’inversion de sens est possible avec les touches * (marche avant), / (marche arrière) et 0 (inversion du sens) du pavé numérique./:m]
]Toutes les fonctions sont accessibles au moyen du clavier
[list]
]La fonction F0 est sur la touche à la gauche du 1 du clavier principal/:m]
]Les fonctions F1 à F10 sont sur les touches 1 à 0 du clavier principal/:m]
]Les fonctions F11 à F20 sont sur la première rangée de lettres sous les chiffres/:m]
]Les fonctions F21 à F30 sont sur la deuxième rangée de lettres sous les chiffres/:m]
]La fonction F31 est sur la troisième rangée de lettres sous le chiffre 1/:m]/
:m][/list:u]
C’est normalement indépendant de la langue du clavier (Français(France), Français(Suisse), US, etc…)

Il y a encore quelques petites améliorations à venir:
]La détection de l’état Stop/Go au démarrage du programme, J’ai pas trouvé la commande pour demander l’état./:m]
]Il y a un son d’erreur lors de la validation par enter des champs Adresse et Vitesse, le fonctionnement n’est pas affecté./:m]
]Une meilleure gestion de la barre espace./:m]

Le programme est écrit en Delphi XE2 Starter (c’est du Pascal Objet) et fonctionne chez moi sous Win7 et normalement sans autre sous Windows 2000 à 10.
Le forum acceptant les zip, le fichier est en pièce jointe au message. Il se peut que votre antivirus bloque le fichier car inconnu dans sa base (Avast sort sur les forums).
Je fournis les sources sur demande par MP pour les intéressés.

Bonne soirée

Delias
CS2Utility.zip (703 KB)

Bonjour Sylvain,

Tu as eu le courage de te lancer dans la communication avec la CS2, chapeau bas. :thks:
J’avais souhaité faire de même avec mon application Android après avoir traité la communication avec l’ECoS mais j’ai abandonné.
J’avais pas trop compris pourquoi il fallait utiliser un protocole de train miniature pour communiquer sur un réseau informatique. :scratch:
L’ECoS est dotée quant à elle d’un web-service ultra simple à exploiter en informatique.

Je me plongerais bien dans les sources pour voir comment tu as réussi à combiner tout ça (et admirer le travail au passage). Même si de toute manière je n’en ferais pas plus.

Cordialement
R_E

Bonsoir R_E
Bonsoir à tous!

Oui, j’ai eu le courage, … de me remettre à la programmation.
Pour le coup, l’échange d’info entre la CS2 et l’ordi (ou smartphone) n’est pas des plus compliqué. Enfin c’est mon avis.
Il faut juste un serveur et un client UDP (c’est un des protocoles TCP les plus simple) qui se trouve comme simple composant dans l’EDI.
Ensuite il faut envoyer et recevoir des trames de 13 bytes, qui sont bien définies.
Prio, Commande, Hash (2 bytes), Longueur du message (DLC), Data 1 à 8.
Les commandes et la signification des bytes de data sont bien indiquées dans la doc.

Mais il y a quelques pièges qui sont mal expliqué / documenté:

  • La prio est toujours à 0, si on essaie de respecter les prio 1, 2, 3 et 4 comme décrit la doc, ça marche pas.
  • Trois bits du Hash doivent être à des valeurs définie, sinon cela ne marche pas. Donc comme Hash on met $ 03 00 et c’est bon.
  • La commande contient le bit de réponse en LSB (séparé sur le CAN) donc les commandes sont écrites deux fois dans la doc (en code CAN et en code UDP), dû au décalage. Et le retour c’est une réponse donc le code de commande est +1 (ça c’est pas expliqué explicitement).

Ensuite si on affiche tous les messages reçus, on peut voir comment les deux parties logiques de la CS2 communique (vu que la passerelle CAN/UDP transmet tout). Donc on peut repérer toutes les les trames simplement en effectuant la commande sur la centrale.

Prochaine étape la manipulation des CVs, et il y a des choses très intéressante. Notamment la lecture de 256 CVs à la suite en DCC et mfx.

Bonne soirée

Delias

Félicitations pour ton courage !

Je te souhaite un grand succès.
Fabrice