SourisD17, application Win/Linux/OS-X pour D17

Les commandes numériques du réseau (appelées à tort "digitales") sont l'avenir du train miniature. Mais comment choisir, comment sauter le pas, avec ou sans ordinateur ? Autant de questions dont les réponses se trouvent dans l'expérience des uns et des autres…

Modérateur : MOD

Répondre
Sercat
Messages : 23
Enregistré le : dim. 17 avr. 2016, 18:36
Echelle pratiquée : HO
Prénom : SERGE

Re: SourisD17, application Win/Linux/OS-X pour D17

Message par Sercat » lun. 13 janv. 2020, 21:09

Nickel, que c'est fantastique et parait bien plus simple quand on maitrise le codage.
Je te remercie pour ton travail.
La loco concernée: un autorail X 3800 Picasso Jouef est maintenant reconnu et souris D17 m'affiche bien son adresse "9"
Par contre j'en ai profité pour vérifié toutes les autres locos et il s'avère que seul le Picasso nécessite cette modification du code.
J'ai été obligé de remettre les lignes d'origine pour toutes les autres.
Précisions pour les personne intéressés, le Picasso a été modifié avec un kit de re-motorisation Iprod et est équipé d'un décodeur ESU lokpilot standard 53611.
Merci encore et bonne soirée.

Avatar du membre
Bug Killer
Éloquent
Messages : 398
Enregistré le : ven. 08 sept. 2017, 12:46
Echelle pratiquée : H0
Prénom : Jean-Michel
Site Internet : http://jmdubois.free.fr/dcc/
Localisation : Loir et Cher
Âge : 65

Re: SourisD17, application Win/Linux/OS-X pour D17

Message par Bug Killer » mar. 14 janv. 2020, 07:55

Les compte-rendus de lecture en mode direct d'une des autres locos avec le code d'origine et le code modifié me seraient utiles pour trouver un compromis.
Que la vapeur soit avec toi.

Sercat
Messages : 23
Enregistré le : dim. 17 avr. 2016, 18:36
Echelle pratiquée : HO
Prénom : SERGE

Re: SourisD17, application Win/Linux/OS-X pour D17

Message par Sercat » mar. 14 janv. 2020, 12:35

compte-rendu lecture CV en mode direct avec code d'origine sur loco CC72001 Jouef, moteur lecteur DVD, et décodeur ESU standard:

Client 0 ' PRD0001 '
Decoder::DirectRead address 1
Decoder::MeanCurrent 22
Decoder::DirectRead bit 0
Decoder::ReadAck fail, max current 22
Decoder::ReadAck fail, max current 22
Decoder::ReadAck fail, max current 22
Decoder::ReadAck fail, max current 22
Decoder::ReadAck fail, max current 22
-
-
-
Decoder::DirectRead bit 7
Decoder::ReadAck fail, max current 22
Decoder::ReadAck fail, max current 22
Decoder::ReadAck fail, max current 22
Decoder::ReadAck fail, max current 22
Decoder::ReadAck fail, max current 22
Decoder::DirectRead value address 0, value 2
Decoder::ReadAck fail, max current 22
Decoder::ReadAck OK, current 54
Decoder::DirectRead verify 2
Client 0 '? '
#au0 dcc i000000000000000000000000 d000000000000 e000000000000 u000000000000000000000000 c03 PR0002
au0 dcc i000000000000000000000000 d000000000000 e000000000000 u000000000000000000000000 c02

compte-rendu lecture CV en mode direct avec code modifié sur la même loco:

Client 0 ' PRD0001 ? '
Decoder::DirectRead address 1
Decoder::MeanCurrent 21
Decoder::DirectRead bit 0
Decoder::ReadAck fail, max current 22, >= 25 expected
Decoder::ReadAck fail, max current 21, >= 25 expected
Decoder::ReadAck fail, max current 21, >= 25 expected
Decoder::ReadAck fail, max current 21, >= 25 expected
Decoder::ReadAck fail, max current 21, >= 25 expected
Decoder::DirectRead bit 1
Decoder::ReadAck fail, max current 22, >= 25 expected
Decoder::ReadAck OK, current 27
Decoder::DirectRead bit 2
Decoder::ReadAck OK, current 28
-
-
-
Decoder::DirectRead bit 7
Decoder::ReadAck fail, max current 22, >= 25 expected
Decoder::ReadAck fail, max current 21, >= 25 expected
Decoder::ReadAck fail, max current 21, >= 25 expected
Decoder::ReadAck fail, max current 21, >= 25 expected
Decoder::ReadAck fail, max current 22, >= 25 expected
Decoder::DirectRead value address 0, value 6
Decoder::ReadAck fail, max current 22, >= 25 expected
Decoder::ReadAck fail, max current 21, >= 25 expected
Decoder::ReadAck fail, max current 22, >= 25 expected
Decoder::ReadAck fail, max current 22, >= 25 expected
Decoder::ReadAck fail, max current 21, >= 25 expected
Decoder::DirectRead verify -1
au0 dcc i000000000000000000000000 d000000000000 e000000000000 u000000000000000000000000 c02 PRFFFFFFFF
Client 0 '? '
#au0 dcc i000000000000000000000000 d000000000000 e000000000000 u000000000000000000000000 c02

En lecture avec le code modifié j'ai une fenêtre qui apparait dans laquelle j'ai le message:

CV could not be read.
L'adresse de la loco est 2.
Encore merci pour tout.

Avatar du membre
Bug Killer
Éloquent
Messages : 398
Enregistré le : ven. 08 sept. 2017, 12:46
Echelle pratiquée : H0
Prénom : Jean-Michel
Site Internet : http://jmdubois.free.fr/dcc/
Localisation : Loir et Cher
Âge : 65

Re: SourisD17, application Win/Linux/OS-X pour D17

Message par Bug Killer » mar. 14 janv. 2020, 19:38

Il me faudrait les compte-rendus complets.
Que la vapeur soit avec toi.

Sercat
Messages : 23
Enregistré le : dim. 17 avr. 2016, 18:36
Echelle pratiquée : HO
Prénom : SERGE

Re: SourisD17, application Win/Linux/OS-X pour D17

Message par Sercat » mar. 14 janv. 2020, 21:51

compte-rendus complets:

code origine:

Client 0 ' PRD0001 '
Decoder::DirectRead address 1
Decoder::MeanCurrent 22
Decoder::DirectRead bit 0
Decoder::ReadAck fail, max current 22
Decoder::ReadAck fail, max current 22
Decoder::ReadAck fail, max current 22
Decoder::ReadAck fail, max current 22
Decoder::ReadAck fail, max current 22
Decoder::DirectRead bit 1
Decoder::ReadAck fail, max current 22
Decoder::ReadAck OK, current 54
Decoder::DirectRead bit 2
Decoder::ReadAck fail, max current 24
Decoder::ReadAck fail, max current 22
Decoder::ReadAck fail, max current 22
Decoder::ReadAck fail, max current 22
Decoder::ReadAck fail, max current 22
Decoder::DirectRead bit 3
Decoder::ReadAck fail, max current 25
Decoder::ReadAck fail, max current 25
Decoder::ReadAck fail, max current 25
Decoder::ReadAck fail, max current 22
Decoder::ReadAck fail, max current 22
Decoder::DirectRead bit 4
Decoder::ReadAck fail, max current 22
Decoder::ReadAck fail, max current 22
Decoder::ReadAck fail, max current 22
Decoder::ReadAck fail, max current 22
Decoder::ReadAck fail, max current 22
Decoder::DirectRead bit 5
Decoder::ReadAck fail, max current 22
Decoder::ReadAck fail, max current 22
Decoder::ReadAck fail, max current 22
Decoder::ReadAck fail, max current 22
Decoder::ReadAck fail, max current 22
Decoder::DirectRead bit 6
Decoder::ReadAck fail, max current 22
Decoder::ReadAck fail, max current 22
Decoder::ReadAck fail, max current 22
Decoder::ReadAck fail, max current 22
Decoder::ReadAck fail, max current 22
Decoder::DirectRead bit 7
Decoder::ReadAck fail, max current 22
Decoder::ReadAck fail, max current 22
Decoder::ReadAck fail, max current 22
Decoder::ReadAck fail, max current 22
Decoder::ReadAck fail, max current 22
Decoder::DirectRead value address 0, value 2
Decoder::ReadAck fail, max current 22
Decoder::ReadAck OK, current 54
Decoder::DirectRead verify 2
Client 0 '? '
#au0 dcc i000000000000000000000000 d000000000000 e000000000000 u000000000000000000000000 c03 PR0002
au0 dcc i000000000000000000000000 d000000000000 e000000000000 u000000000000000000000000 c02

code modifié:

Client 0 ' PRD0001 ? '
Decoder::DirectRead address 1
Decoder::MeanCurrent 21
Decoder::DirectRead bit 0
Decoder::ReadAck fail, max current 22, >= 25 expected
Decoder::ReadAck fail, max current 21, >= 25 expected
Decoder::ReadAck fail, max current 21, >= 25 expected
Decoder::ReadAck fail, max current 21, >= 25 expected
Decoder::ReadAck fail, max current 21, >= 25 expected
Decoder::DirectRead bit 1
Decoder::ReadAck fail, max current 22, >= 25 expected
Decoder::ReadAck OK, current 27
Decoder::DirectRead bit 2
Decoder::ReadAck OK, current 28
Decoder::DirectRead bit 3
Decoder::ReadAck fail, max current 22, >= 25 expected
Decoder::ReadAck fail, max current 22, >= 25 expected
Decoder::ReadAck fail, max current 21, >= 25 expected
Decoder::ReadAck fail, max current 21, >= 25 expected
Decoder::ReadAck fail, max current 21, >= 25 expected
Decoder::DirectRead bit 4
Decoder::ReadAck fail, max current 22, >= 25 expected
Decoder::ReadAck fail, max current 21, >= 25 expected
Decoder::ReadAck fail, max current 21, >= 25 expected
Decoder::ReadAck fail, max current 21, >= 25 expected
Decoder::ReadAck fail, max current 21, >= 25 expected
Decoder::DirectRead bit 5
Decoder::ReadAck fail, max current 22, >= 25 expected
Decoder::ReadAck fail, max current 21, >= 25 expected
Decoder::ReadAck fail, max current 21, >= 25 expected
Decoder::ReadAck fail, max current 22, >= 25 expected
Decoder::ReadAck fail, max current 21, >= 25 expected
Decoder::DirectRead bit 6
Decoder::ReadAck fail, max current 22, >= 25 expected
Decoder::ReadAck fail, max current 21, >= 25 expected
Decoder::ReadAck fail, max current 21, >= 25 expected
Decoder::ReadAck fail, max current 21, >= 25 expected
Decoder::ReadAck fail, max current 21, >= 25 expected
Decoder::DirectRead bit 7
Decoder::ReadAck fail, max current 22, >= 25 expected
Decoder::ReadAck fail, max current 21, >= 25 expected
Decoder::ReadAck fail, max current 21, >= 25 expected
Decoder::ReadAck fail, max current 21, >= 25 expected
Decoder::ReadAck fail, max current 22, >= 25 expected
Decoder::DirectRead value address 0, value 6
Decoder::ReadAck fail, max current 22, >= 25 expected
Decoder::ReadAck fail, max current 21, >= 25 expected
Decoder::ReadAck fail, max current 22, >= 25 expected
Decoder::ReadAck fail, max current 22, >= 25 expected
Decoder::ReadAck fail, max current 21, >= 25 expected
Decoder::DirectRead verify -1
au0 dcc i000000000000000000000000 d000000000000 e000000000000 u000000000000000000000000 c02 PRFFFFFFFF
Client 0 '? '
#au0 dcc i000000000000000000000000 d000000000000 e000000000000 u000000000000000000000000 c02

Bonne soirée.

Avatar du membre
Bug Killer
Éloquent
Messages : 398
Enregistré le : ven. 08 sept. 2017, 12:46
Echelle pratiquée : H0
Prénom : Jean-Michel
Site Internet : http://jmdubois.free.fr/dcc/
Localisation : Loir et Cher
Âge : 65

Re: SourisD17, application Win/Linux/OS-X pour D17

Message par Bug Killer » mar. 14 janv. 2020, 23:43

Si c'est la même loco et que son adresse DCC n'a pas changé, il se passe quelque chose d'anormal. Le code d'origine pense qu'elle est en adresse 2, le code modifié qu'elle est en adresse 6 car il existe une surconsommation lors du test du bit de poids 4. Quelle est réellement son adresse ?
Que la vapeur soit avec toi.

Avatar du membre
Bug Killer
Éloquent
Messages : 398
Enregistré le : ven. 08 sept. 2017, 12:46
Echelle pratiquée : H0
Prénom : Jean-Michel
Site Internet : http://jmdubois.free.fr/dcc/
Localisation : Loir et Cher
Âge : 65

Re: SourisD17, application Win/Linux/OS-X pour D17

Message par Bug Killer » mer. 15 janv. 2020, 00:00

Si la cause est celle à laquelle je pense, le code suivant devrait fonctionner :

Code : Tout sélectionner

bool Decoder::ReadAck(int reference, byte reset)
{
	unsigned int i;
	unsigned int current;
	unsigned int threshold = reference + reference / 5;
	unsigned int maxcurrent = 0;

	for (i = 0; i < 500; ++i) {
		if ((current = (unsigned int) analogRead(A0)) >= threshold) {
			TRACE_DECODER("Decoder::ReadAck OK, current %d\n", current);
			for (i = 0; i < 500; ++i)
				if ((unsigned int)analogRead(A0) < threshold)
					break;
			Reset(reset ? reset : 1);
			return true;
		}

		if (maxcurrent < current)
			maxcurrent = current;
	}

	TRACE_DECODER("Decoder::ReadAck fail, max current %d, >= %d expected\n", maxcurrent, threshold);
	return false;
}
Que la vapeur soit avec toi.

Sercat
Messages : 23
Enregistré le : dim. 17 avr. 2016, 18:36
Echelle pratiquée : HO
Prénom : SERGE

Re: SourisD17, application Win/Linux/OS-X pour D17

Message par Sercat » mer. 15 janv. 2020, 13:18

C'était toujours sur la même loco ( CC72001 Jouef ) avec l'adresse 2.
J'ai modifié le code de décoder.cpp avec les infos que tu ma transmises hier soir et toutes les locos sont reconnues.
Cela ne fonctionne pas toujours du premier coup, j'ai parfois un message stipulant qu'il n'arrive pas à lire, mais au final toutes les locos ont été lues et l'adresse de la CV 1 est bien la bonne.
J'ai même changer l'adresse d'une machine sans aucun problème.
Merci beaucoup.

Avatar du membre
Bug Killer
Éloquent
Messages : 398
Enregistré le : ven. 08 sept. 2017, 12:46
Echelle pratiquée : H0
Prénom : Jean-Michel
Site Internet : http://jmdubois.free.fr/dcc/
Localisation : Loir et Cher
Âge : 65

Re: SourisD17, application Win/Linux/OS-X pour D17

Message par Bug Killer » mer. 15 janv. 2020, 18:05

J'ai pu accéder à mon réseau de tests. Avec mes 4 locos, je trouve que le dernier algorithme n'est pas assez fiable alors que celui d'origine fonctionne à 100%. Nous sommes donc devant le cas particulier de ton Picasso. Je pense que le mieux est de reprendre l'algorithme initial et de baisser la valeur du seuil qui est 30 actuellement.

Remplacer dans ReadAck :

Code : Tout sélectionner

		if ((current = (unsigned int)((analogRead(A0) - reference) * 0.2 + current * 0.8)) > 30) {
par :

Code : Tout sélectionner

		if ((current = (unsigned int)((analogRead(A0) - reference) * 0.2 + current * 0.8)) > 17) {
et vérifier que la lecture et l'écriture fonctionnent pour toutes les locos.
Modifié en dernier par Bug Killer le jeu. 16 janv. 2020, 11:37, modifié 1 fois.
Que la vapeur soit avec toi.

Sercat
Messages : 23
Enregistré le : dim. 17 avr. 2016, 18:36
Echelle pratiquée : HO
Prénom : SERGE

Re: SourisD17, application Win/Linux/OS-X pour D17

Message par Sercat » jeu. 16 janv. 2020, 08:24

Décidément, tu ne lâches rien et tu vas jusqu'au bout.
malheureusement ça ne fonctionne toujours pas avec mon Picasso.
C'était bien parti car avec les 6 premières locos,aucun problème en lecture et écriture.
Peut-être une ou il a fallu légèrement insister avant d'arriver à lire correctement l'adresse.
Ne t'inquiètes pas et ne perds pas plus de temps avec moi,la solution que tu as proposée en premier fonctionnait uniquement avec le Picasso et le sachant il me suffit de charger dans le Wemos soit l'une,soit l'autre en fonction de la machine à vérifier ou modifier,ce qui n'arrive,en plus,pas tous les jours.
Encore merci pour ton aide et le temps que tu y a consacré.
Bien amicalement.
Serge

Répondre