Discussions Générales > Bus DCC
Fonctions DCC de 21 à 28
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
[#] Page suivante
Utiliser la version classique