Dominique,
Tout d'abord je suis quand même étonné que ton aiguille ait l'adresse 1 et que tu y accèdes par ADDRESS=0 et SUBADDRESS=0, Tu es sûr que ce n'est pas plutôt ID=0 et ADDRESS = 1 ? Je serai intéressé que tu me fasses une copie d'écran de l'IDE après avoir envoyé le message <T>.
Quand je regarde le code de Accessories.ccp, je ne vois pas la possibilité de modifier une adresse. Il faut donc créer un nouvel aiguillage et supprimer l'ancien. Ceci dit, il ne serait pas difficile de créer la fonction modify dans DCC++ Accessories.ccp. Ce serait une contribution à DCC++ et Locoduino ;-)
Est-ce que le code de cette page Accessories.ccp te parle même un peu ou pas du tout ?
Tu te souviens que je t'ai expliqué la partie de code à la ligne 143
void Turnout::parse(char *c){
int n,s,m;
Turnout *t;
switch(sscanf(c,"%d %d %d",&n,&s,&m)){
case 2: // argument is string with id number of turnout followed by zero (not thrown) or one (thrown)
t=get(n);
if(t!=NULL)
t->activate(s);
else
INTERFACE.print("<X>");
break;
case 3: // argument is string with id number of turnout followed by an address and subAddress
create(n,s,m,1);
break;
case 1: // argument is a string with id number only
remove(n);
break;
case -1: // no arguments
show(1); // verbose show
break;
}
}
switch(sscanf(c,"%d %d %d",&n,&s,&m)){
sert à compter le nombre de paramètres passés à la fonction. Donc en fait, ceux écrit dans le message. Un seul paramètre, case 1, on delete l'aiguille Exemple <T 3> va supprimer l'aiguille dont l'ID est 3 (pas l'ADDRESS). Cela renvoi le message <0> si le delete s'est bien passé, <X> autrement.
Regarde la fonction void Turnout::remove(int n){ ligne 95.
Une fonction modify serait assez similaire qui modifierait la valeur dans la case pointée par tt au lieu de faire free(tt). Le tour est joué ! tt->data.address = new adress, tt->data.subAddress = new subAddress. Attention toute fois à ne pas utiliser des valeurs déjà prises.
Donc au plus simple, create une nouvelle aiguille et delete de l'ancienne. Ou delete d'abord et create ensuite, je ne sais pas s'il autorise la création de deux aiguilles avec la même adresse.
Dans tous les cas, n'hésite pas à revenir vers moi.
Christophe