Je rembraye sur ce sujet, après quelques observations supplémentaires.
Je précise que, en expo, ce type de plantage n'arrive que quand on joue beaucoup avec les modifications de trains, ou placements dynamiques de trains.
Lorsqu'on laisse tourner les trains, ça peut tourner une journée complète sans problème.
A la dernière expo, c'est arrivé après 6 heures de fonctionnement ininterrompu, et énormément de manips sur trains.
Il y a deux problèmes à résoudre:
1) le problème de la détection de dysfonctionnement du logiciel de pilotage, ou du PC.
2) Le problème du redémarrage "dans l'état".
DETECTION DE DYSFONCTIONNEMENT
================================
Là, il n'y a pas 36 solutions: il faut en effet un "watchdog", indépendant du PC principal, qui détecte que le PC ou logiciel a un problème.
Le principe du watchdog LDT (voir message de gily ci-dessus) est très bien (envoi d'une commande d'aiguille à intervalle < 5 secondes).
Par contre, apparemment, il repose sur une connectique 5 broches, entre centrale et booster, qu'il interrompt.
Mais ça suppose d'avoir des boosters, ... et cette connectique n'est pas supportée par Lenz.
Je pense donc à faire quelque chose de ce style compatible Xpressnet. Et ce watchdog enverrait donc la commande Power Off via le bus Xpressnet.
L'autre solution serait d'avoir un logiciel watchdog, sur un autre PC (avec une autre interface), et reliée au PC principal via Comm/IP. C'est quand même assez lourd.
Donc pour le moment, la solution, c'est le bon "STOP" sur la manette physique reliée au réseau.
REDEMARRAGE DANS L'ETAT.
=========================
Lors qu'on remet en route, il y a deux problèmes:
- le redémarrage des trains à leur vitesse antérieure, alors qu'on voudrait qu'ils s'arrêtent (en fait, c'est ça, le pire problème).
- le repositionnement des trains à l'endroit ou ils se sont arrêtés.
EVITER LE REDEMARRAGE PARASITE DES TRAINS
-----------------------------------------------------------
Si on n'éteint pas la centrale, dès qu'on enlève le STOP , ou le OFF, en réappuyant sur le bouton STOP, tout redémarre à la vitesse antérieure.
Même si on éteint la centrale, et si on la rallume, il arrive que tout redémarre aussi, même parfois avec la centrale Lenz en mode MANUEL, qui est supposé remettre toutes les vitesses à 0.
Pour le moment, dès qu'on relance CDM-Rail, et qu'on se connecte à un serveur, ça supprime le STOP ou le OFF, donc tout redémarre. alors qu'on n'a pas relancé le RUN. Et ça, c'est très déroutant, surtout quand on est dans la situation un peu stressante, où tout vient de planter.
Mettre en OFF par défaut au redémarrage, ça pose problème, parce que beaucoup d'opérations (tests de configuration d'aiguille, de détecteur, étalonnage de trains) supposent que l'on ne soit ni en STOP, ni en OFF, et quand ça ne marche pas, on ne pense pas toujours à ce bête détail.
J'envisage donc de mettre une option (de RUN), pour dire si on veut mettre ou non la centrale en OFF, lors de la connexion au serveur.
Je pense d'ailleurs que cette même option permettra d'envoyer automatiquement les commandes de vitesse 0 à tous les trains configurés dans la galerie, au moment de la connexion au serveur.
La condition nécessaire pour que ça marche est de charger le réseau AVANT de se connecter au serveur.
D'autre part, je vais aussi mettre en place la détection automatique d'un contexte d'urgence généré depuis moins de 5 minutes, qui permettra de voir si un plantage s'est produit. Et lorsqu'on charge le réseau, CDM-Rail proposera de restituer ce contexte d'urgence AVANT connexion au serveur. Et une fois faite cette restitution, toutes les locos présentes dans le contexte d'urgence auront leur vitesse remise à 0.
REDEMARRAGE A PARTIR DU CONTEXTE D'URGENCE
--------------------------------------------------------------
Relancer le RUN à partir du contexte d'urgence, ça ne marche pas ... parce que les trains ont en général dépassé la dernière position stockée, et parfois au-delà de la zone de détection suivante. Donc, il ne faut pas compter dessus.
par contre, il donne quand même la position approximative des trains, ce qui simplifie quand même considérablement l'opération de recalage manuel des trains réels et des trains virtuels.
Il faut:
- Repositionner chaque train virtuel proprement de façon à ce qu'il soit complètement sur un canton (surtout pas à cheval sur deux cantons).
- Repositionner les trains réels (à la manette) à la position des trains virtuels.
JP