IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #81
    Membre chevronné
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    février 2013
    Messages
    796
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : février 2013
    Messages : 796
    Points : 1 862
    Points
    1 862
    Par défaut
    Salut Pat
    Citation Envoyé par Pat42 Voir le message
    Auriez vous connaissance de littérature(d'un cours ou d'un bouquin) expliquant l' indexation en détail (telle que vous l'avez utilisé dans le prg ).
    Quentends-tu par indexation, si c'est l'usage de cette syntaxe infoDonnees[compteurSeconde] = donneeBit; par exemple, soit des tableaux, tu peux regarder ici ou là-bas

    Citation Envoyé par Pat42 Voir le message
    Du coup, je n'ai plus l'heure exacte et ça me stress
    Autrement il y a d'autres solutions!
    Quelle est la durée de la maintenance?

    Cordialement
    jpbbricole
    L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

  2. #82
    Membre émérite

    Homme Profil pro
    savant fou :)
    Inscrit en
    septembre 2019
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : savant fou :)

    Informations forums :
    Inscription : septembre 2019
    Messages : 1 258
    Points : 2 334
    Points
    2 334
    Par défaut
    Salut et bonne année 2021!
    Je n'ai malheureusement pas encore toutes les compétences en programmation pour comprendre vos modifs (je les comprends en surface, mais pas en détail)
    Je vais essayer d'expliquer - peut-être ce sera utile: vous avez un tableau, infoDonnees qui contient 59 cases
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     #define nombreDeSeconde 59
     byte infoDonnees[ nombreDeSeconde];
    dans lequel le code de @JP stocke les 'bits' (0 ou 1) pertinents au fur et à mesure de leur arrivée chaque seconde.

    Un groupe consécutif de ces 0 et 1 constitue (lorsqu'on les regroupe) une information pertinente. Par exemple, le protocole nous dit que les informations concernant le N° du mois en cours sont stockées sur 5 bits consécutifs en format DCB (Décimal codé binaire) et sont reçus lors des 5 secondes N° 45, 46, 47, 48 et 49. C'est ce que @JP a mémorisé dans le code par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     #define bitDonneesMoisStart 45
     #define bitDonneesMoisNbr 5
    Un dessin vaut mieux qu'un long discours, donc en gros ça ressemble à cela:
    Nom : BCD.png
Affichages : 37
Taille : 139,1 Ko

    Donc lorsque l'on veut aller chercher le N° du mois, il faut calculer la valeur d'un "octet fictif" (à droite sur le schéma) dont les 5 bits de poids faibles (bitNombre) seraient remplis à partir des cases du tableau, en commençant à la ligne 45 (bitStart).

    Un octet dispose de 8 bits, et est codé en base 2. On définit donc sa valeur comme une somme pondéré par la valeur des bits (un 1 on prend la valeur, un 0 on ne la prend pas):
    Le bit le plus à droite (bit #0) compte pour 1 (20),
    et en allant vers la gauche le bit #1 pour 2 (21),
    le bit #2 pour 4 (22)
    ...
    et le dernier bit #7 vaut 128 (27).

    Le code de @JP propose une fonction qui va effectuer ce travail: aller chercher dans le tableau une succession de valeurs (bitNombre) à partir d'une certaine place (bitStart) et effectuer cette somme pondérée.

    C'est codé dans cette boucle for
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	for (int bitIndex = 0; bitIndex < bitNombre; bitIndex ++)
    	{
    		extrait += infoDonnees[(bitStart+0) + bitIndex] << bitIndex;
    	}
    La "magie" des puissances de 2 se fait en informatique avec un décalage à gauche (opérateur arithmétique << dit bitwise left shift) << bitIndex.

    Si vous prenez un 1, en binaire représenté 00000001, et que vous le décalez de 3 positions à gauche par exemple, vous obtenez 00001000 ce qui vaut 8, soit 23. Si par contre vous avez décalé 3 fois un octet valant 0 (en binaire 00000000) il reste bien sûr à zéro.

    Donc la boucle prend les 0 ou 1 aux bonnes cases du tableau et effectue un décalage croissant (donc puissance de 2 croissante) et la somme avec le += pour arriver à former le bon octet avec des 0 et 1 aux bons endroits.

    En sortie de cette boucle, la variable extrait contient donc la valeur de notre octet.
    Comme on sait que c'est un codage BCD, les chiffres de 0 à 9 sont codé sur quatre bits
    • Chiffre Bits
    • 0.........0000
    • 1.........0001
    • 2.........0010
    • 3.........0011
    • 4.........0100
    • 5.........0101
    • 6.........0110
    • 7.........0111
    • 8.........1000
    • 9.........1001


    On a la représentation du N° du mois en deux bouts, les 4 bits de poids forts sont la dizaine et les 4 bits de poids faible sont les unités

    il faut donc faire un peu de cuisine pour prendre les 4 bits du haut d'un côté et les 4 bits du bas de l'autre. Soit on le fait avec des opérateurs qui travaillent sur les bits (masques et décalage) soit on fait la même chose avec des division et modulo par 16 (24). C'est ce qu'à choisi de faire @JP dans son code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	extrait = (extrait/16*10) + (extrait%16);                         // Transformer du BCD en decimal
    Comme tout le tableau contient des informations codées en BCD (DCB en français ) la fonction de @JP est générique et peut s'appliquer à d'autres parties du tableau.

  3. #83
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    mai 2013
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : mai 2013
    Messages : 345
    Points : 1 210
    Points
    1 210
    Par défaut En marge
    Bonjour Pat42,

    Juste pour mettre mon grain de sel. Le SIGLENT sait sauvegarder des copies d'écran, entre autres, en BMP et PNG sur une clé USB. C'est pratique et de bonne qualité. J'ai abandonné les photos d'écran car j'avais toujours des reflets et une horizontalité améliorable. Si ça peut aider...

    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  4. #84
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    mars 2019
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : mars 2019
    Messages : 53
    Points : 23
    Points
    23
    Par défaut
    Bonjour , désolé de n'avoir pu vous répondre plus rapidement , mais les 8 jours derniers m'ont beaucoup occupé.
    Merci a vous JP et J may pour le coup de main que vous me donnez à chaque fois que "j'attaque la falaise".

    Avec tes liens sur les tableaux et la super explication de J MAY j'espère que cela va rentrer mais pas trop, sinon, je n'aurais plus le plaisir de "converser" avec vous.

    Concernant la mise en panne de l'émetteur , l'horaire est d'environ 8h à environ 11h30. En fait j'aimerais installer cette horloge, ce qui me permet au fil de ce projet (à rallonge) d'en apprendre un peu plus.

    Merci aussi à Guesset de s'être inséré dans la discussion . C'est un Siglent SDS 1202X-E et je vais tester...


    Bon! j'ai de la lecture qui m'attend...

    A+
    Cordialement

    Pat

Discussions similaires

  1. TOP 10 sur WeBI
    Par aemag dans le forum Webi
    Réponses: 9
    Dernier message: 21/05/2008, 21h41
  2. Detecter si l'on a toujours la synchro sur son modem
    Par yoghisan dans le forum API, COM et SDKs
    Réponses: 25
    Dernier message: 21/10/2005, 19h09
  3. Top 10 sur plusieurs items
    Par hussard dans le forum Langage SQL
    Réponses: 1
    Dernier message: 03/10/2005, 10h33
  4. Réponses: 3
    Dernier message: 23/08/2005, 10h43
  5. Détection d'un front sur la broche RI d'un port série
    Par G3G3 dans le forum Ordinateurs
    Réponses: 2
    Dernier message: 19/08/2005, 18h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo