Discussions Générales > Bus DCC

Fonctions DCC de 21 à 28

(1/3) > >>

Tony04:
Bonjour à tous,
j'ai trouvé une explication sur les fonctions mais que de 0 à 20, la voici:

--- Code: ---// Format DCC des fonctions
<f CAB BYTE1 [BYTE2]>

F0-F4 : BYTE1: 128 + (F1 * 1) + (F2 * 2) + (F3 * 4) + (F4 * 8) + (F0 * 16)
128 = 10000000

F5-F8 : BYTE1: 176 + (F5 * 1) + (F6 * 2) + (F7 * 4) + (F8 * 8)
176 = 10110000

F9-F12 : BYTE1: 160 + (F9 * 1) + (F10 * 2) + (F11 * 4) + (F12 * 8)
160 = 10100000

F13-F20 : BYTE1: 222
BYTE2: (F13*1) + (F14*2) + (F15*4) + (F16*8) + (F17*16) + (F18*32) + (F19*64) + (F20*128)

--- Fin du code ---

Je suppose que parmi les grands spécialistes du forum il se trouve une âme charitable qui pourrait me fournir le codage des fonctions de 21 à 28.

Je vous en remercie par avance.

Cordialement
Antoine

bobyAndCo:
Bonjour,

Je ne vois pas trop où est ton problème à partir du moment où tu as fait le plus difficile et es déjà allé jusqu'à F20. Pour F21 à 28, c'est la même chose qu'avec F13-F20 sauf byte 1 = 223


--- Code: ---$scope.setFn = function (n) { // OPERATE ENGINE DECODER FUNCTIONS F0-F28
var res = 0;
var arg = 0;
var data = "f"; // <f CAB BYTE1 [BYTE2]>
data += " ";
data += $scope.locoSelectionnee.address;
data += " ";

for( var i = 0; i < arguments.length; i++) {
$scope.locoSelectionnee.fn[arguments[i]] = $scope.locoSelectionnee.btn_fn[arguments[i]] ? Math.pow(2, i) : 0;
res += $scope.locoSelectionnee.fn[arguments[i]];
}
switch (n) {
case 0:
data += 128 + res;
break;
case 5:
data += 176 + res;
break;
case 9:
data += 160 + res;
break;
case 13:
data += 222;
data += " ";
data += res;
break;
case 21:
data += 223;
data += " ";
data += res;
break;
}
$scope.setParamLocos(data);
}

--- Fin du code ---

C'est aussi expliqué sur le github : https://github.com/DccPlusPlus/BaseStation/wiki/Commands-for-DCCpp-BaseStation

Bien amicalement

Christophe

Tony04:
Bonjour Christophe,

en effet, maintenant il y a aussi les fonctions de 21 à 28 sur GITHUB, ce n'était pas le cas quand je l'avais consulté pour prendre mes premières infos.

En tous les cas merci à toi pour la rapidité de ta réponse.

Bonne journée à tous.
Antoine

Tony04:
Re Bonjour,

je me trouve devant un autre (petit) casse-tête pour un ami qui a des locos avec 64 crans de vitesse.
Comment dois-je gérer cette exception avec DCCpp, faut-il tout simplement afficher 64 et envoyer 128 (127) à l'arduino ou y a-t-il une autre solution.

Au sujet de ces 127 crans, toutes les centrales affichent 128 au maximum, alors que DCCpp n'accepte que 127 (voir 126, il faudrait que je fasse un nouveau test).
J'ai lu dans PacketRegister.cpp que 1 correspond à l'arrêt d'urgence, est-ce à dire que si j'envoie <t 1 3 11> ma loco va s'arrêter (la aussi nouveau test à faire mais ma centrale est indisponible pour l'instant). Je suis preneur de tout éclaircissement.

Merci par avance et bonne soirée à tous
Antoine

bobyAndCo:
Mon cher Antoine, l'arrêt d'urgence, aussi appelé e stop est - 1 !!!


--- Code: ---        //*******************************************************************************************//
//*************************************** eStop ********************************************//
//*******************************************************************************************//


// Arret immediat de la locomotive
$scope.eStop = function() {
if($scope.locoSelectionnee != null) {
$scope.locoSelectionnee.vitesse = -1;
$scope.setTraction ();
}
}

--- Fin du code ---

Quand tu sais pas tu demandes ;-))))))

Et contrairement à ce que l'on peut voir de temps en temps, selon la norme NMRA, l'e stop ne s'applique que pour une loco. Pour tout arrêter, faire par exemple une boucle for sur les locos dont la vitesse est supérieure à 0.

Bien amicalement

Christophe

Navigation

[0] Index des messages

[#] Page suivante

Utiliser la version classique