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

WinDev Discussion :

Récupération données DLL [WD15]


Sujet :

WinDev

  1. #1
    Membre actif Avatar de thierrybatlle
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2005
    Messages : 618
    Points : 222
    Points
    222
    Par défaut Récupération données DLL
    Bonjour,

    Je dois récupérer des données dans une DLL.
    Je reçois des données binaire d'une taille de 4 octets et je dois lire le 1er octet (8 bits de poids fort).
    Dans un autre cas je dois lire le 4eme octet (8 bits de poids faible).

    Pour les données décimales je les récupère de la sorte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    API("MI_F3010.dll","Lecture_registre",21,1,&nNumSerie)
    Et j'affiche "nNumSerie" ce qui fonctionne très bien.
    21 --> correspond au numéro de registre à lire.
    1 --> nombre de registres successifs à lire (1 par défaut).

    Quel type je dois utiliser ?
    Comment lire un octet précis quand en reçois 4 ?
    Et que veut dire poids fort ou poids faible ?

    Merci à tous.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    444
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 444
    Points : 428
    Points
    428
    Par défaut
    Poids fort et poids faible correspondent respectivement au(x) premier(s) octet(s) et au(x) dernier(s) octet(s).

    Si tu récupères des données décimales sur 4 octets, tu peux définir ta variable de la sorte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mavariable est un réel sur 4 octets
    Sinon ton registre fait 4 octets ?

    Après pour récupérer les 2 premiers ou les 2 derniers octets, pour le moment j'ai pas mieux à te proposer que de faire une sorte de masque avec un ETBinaire (exemple ici):

    pour récupérer les bits de poids faible tu peux faire un ETBinaire avec ta variable et 2^16 - 1 (soit 65535) ce qui correspond en binaire à que des 1 sur les 2 derniers octets et que des 0 sur les 2 premiers.
    Pour les bits de poids fort tu dois faire un ETBinaire avec 2^32 - 2^16 - 2 (je te laisse faire le calcul ) ce qui aura pour effet de mettre que des 1 sur tes 2 premiers octets et que des 0 sur les 2 derniers.
    Mieux vaut un petit lien qu'un long discours.

  3. #3
    Membre chevronné
    Avatar de mogwai162
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Points : 1 860
    Points
    1 860
    Par défaut
    Je confirme mais il existe deux fonctions PoidsFort et Poidsfaible qui font déjà ça très bien.

    En Windev 14 il découpe un entier sur 4 en deux entiers sur 2 (non signés bien sûr)
    Patrick Catella

    Je ne réponds pas aux messages privés si ceux ci suivent un sujet. Il est préférable pour tous de poursuivre la discussion dans le sujet d'origine.

    Je suis Concepteur développeur Windev (10 ans) et Windev mobile (4 ans) en recherche d'emploi. J'etudie toute proposition

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour,
    Citation Envoyé par thierrybatlle Voir le message

    Comment lire un octet précis quand en reçois 4 ?
    Et que veut dire poids fort ou poids faible ?

    Si on veut accéder directement à un octet d'une valeur numérique quelconque, on peut aussi utiliser un tableau d'octets dans lequel on copie les octets de la valeur numérique.

    Voici un exemple pour un numérique stocké sur 4 octets, avec mise en évidence du poids des octets.

    Code WLangage : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    nData est un entier sur 4 octets
    tOctets est un tableau de 4 entiers sans signe sur 1 octet
     
    // La valeur de nData est donnée en représentation hexadécimale afin
    // de mieux voir par la suite les octets de différents poids qui composent
    // cette valeur (cf. plus bas pour avoir la liste des octets).
    nData = 0x0F0A0601
     
    // Le tableau tOctets est rempli avec les octets de nData.
    Transfert(&tOctets, &nData, 4)
     
    // Voici maintenant le contenu du tableau tOctets,
    // de l'octet de poids le + faible à l'octet de poids le + fort:
    //   tOctets[1] = 0x01
    //   tOctets[2] = 0x06
    //   tOctets[3] = 0x0A
    //   tOctets[4] = 0x0F

    L'ordre des octets dans le tableau tOctets[] pourrait dépendre de l'architecture de l'ordinateur sur lequel le programme s'exécute.
    Dans l'exemple ci-dessus, il s'agit d'une architecture de type x86 "Little-endian" où les octets sont stockés un à un, du poids faible au poids fort.

    Pour en savoir plus, un petit tour sur la page Endianness de Wikipedia: http://fr.wikipedia.org/wiki/Endianness

    _

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme récupération donnée dans script xsl
    Par jmacdev dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 12/05/2006, 17h37
  2. Récupération données formulaire en php5
    Par jcaspar dans le forum Langage
    Réponses: 1
    Dernier message: 08/03/2006, 20h45
  3. Récupération données en registre
    Par cgoln dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/12/2005, 11h05
  4. Récupération des DLLs utilisés par un soft
    Par chris_wafer_2001 dans le forum MFC
    Réponses: 7
    Dernier message: 21/11/2005, 14h58
  5. Réponses: 3
    Dernier message: 13/09/2005, 12h21

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