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

VB 6 et antérieur Discussion :

Conversion type DECIMAL en "?"


Sujet :

VB 6 et antérieur

  1. #1
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut Conversion type DECIMAL en "?"
    Bonjour à tous ...

    (je travaille avec Windows XP Pro et Visual Basic 6)

    Je dois réaliser une petite application qui va se connecter sur un pc par le réseau (winsock) et récupérer des valeurs dans la mémoire.

    Les valeurs, j'arrivent à la récupérer sans problème sous un format DECIMAL.

    Ce que je cherche à faire c'est à convertir cette valeur pour obtenir une température en "°C".

    Actuellement, pour aller lire dans la mémoire, j'utilise un programme nommé "ModScan32" qui propose plusieurs affichage des données récupérées soit :

    Binaire --> 0100000110100110
    Décimal --> 16806
    Integer --> 16806
    Hexadécimal --> 41A6H
    Floating Pt. --> 2.36e-41
    Swapped Fp. --> 20.7500

    Ce que je cherche à faire, c'est créer (ou utiliser) une fonction qui permet de passer de DECIMAL à Swapped Fp.

    Est-ce que vous auriez une éventuelle idée pour réaliser cela ???

    Je ne parviens pas à trouver comment on peut passer de 16806 à 20.7500 (°C)

    Merci d'avance votre aide ...

    PS : Je débute en VB6 ... ...

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonjour,

    je pense que tu veux parler d'un format en virgule flottante de type "swapped".

    Ce que tu liras ici est alors susceptible de t'intéresser :

    http://www.randomsupport.com/rs/blog...&c=1&tb=1&pb=1

    (la chose est moins simple avec VB6 qu'avec du C...)

  3. #3
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Merci beaucoup pour ta réponse ...

    C'est ce qu'il me fallait ... et j'ai médité un peu sur le truc ... ... ...

    A ce lien : http://babbage.cs.qc.edu/IEEE-754/Decimal.html j'ai trouvé qqch de pas mal qui fait "le travail à ma place" mais j'ai quand même fait par moi même pour bien comprendre et je suis embêté ...

    La valeur que j'ai c'est 16806 et ... malgré plein de calcul savant avec plein de 0, de 1 et de virgule, je ne vois vraiment pas comment arriver à 20.7500

    ... Je cale vraiment ... peut être est-ce que cela est du car je suis dedans depuis ce matin 6h et que là je commence à me noyer et je ne remarque pas une évidence ... ... ... ... ...

    Est-ce que tu crois que tu pourrais me donner un ptit coup de pouce ou alors me lancer un gilet de sauvetage pour pas que je me noie???

    Merci de ton aide ...

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    désolé, mais j'utilisais pour celà, personnellement, une fonction C déjà écrute dans une dll.

    je souhaite appeler ton attention sur ce commentaire :

    Swap the 2 16bit words (Why? Because it works! It must be something to do with the PLC)
    ‘ Actually, when the PLC moves the 32 bit floats into 2 sequential 16 bit integers, it puts
    ‘ the values in bit order (W1 = High Word, W2 = Low Word). For some reason, the internal
    ‘ representation of a PC is the opposite. If you copy a long (32bit) integer into a two item
    ‘ integer (16 bit) array you see that the words are reversed (W1 = Low Word, W2 = High Word).
    ‘ Because we are using CopyMemory we need to match the input data to the PC’s internal storage
    ‘ format

  5. #5
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Peux tu nous dire quel appareil sort ce message ou as tu une doc qui explique le standard de sortie ? Des conversions binaire<-->nombre decimal ne sont pas toujours "standard"...

  6. #6
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Citation Envoyé par OhMonBato Voir le message
    Peux tu nous dire quel appareil sort ce message ou as tu une doc qui explique le standard de sortie ? Des conversions binaire<-->nombre decimal ne sont pas toujours "standard"...
    Alors, voici le but de mon application :

    Au sein de mon entreprise il existe un pc qui est relié à un automate qui lui-même est relié à des sondes de températures. L'automate à la fonction d'enclencher la clime si la température dépasse les 22°C et d'enclencher le chauffage si la température descend au dessous des 19°C.

    Le but de mon programme, c'est de récupérer des valeurs liées aux sondes soit : La valeur de la zone 1 et la valeur de la sonde 2. Une fois ces deux valeurs connue, il faut que je fasse la moyenne. Ces valeurs ont été stockées dans des adresses mémoires que je connais.

    Au niveau de la documentation, voici ce que j'ai en ma possession :
    http://www.wago.com/wagoweb/document...t/d084200f.pdf

    http://www.wago.com/wagoweb/document...1/a45010df.pdf

    http://www.ac-grenoble.fr/ecole.entr...oeuvre_841.pdf

    Au niveau du document ci-dessus, si vous vous rendez à la page N°16, vous aurez un bref aperçu du logiciel que j'utilise pour voir les valeurs que j'ai citée dans le premier de mes messages.

    ucfoutu, je vais essayer de voir ce code dans l'après-midi pour essayer de bien le comprendre et même qui sait, l'utiliser ... (pour le moment j'étais concentré sur les virgules flottante et tout ça ... ) Merci encore pour ton lien ...

    OhMonBato, est-ce que les informations que je t'ai données correspondent à ta demande ??? ... Si ce n'est pas le cas, excuse-moi ... mais je n'ai rien d'autre ...

    Merci de votre aide ... ...


    [TESTS]
    16806 en binaire = 0100000110100110
    16806 en hexa = 41A6

    ... y a du progrès ...

    J'ai trouvé le FLOATING ... !!! mais passer de FLOATING à SWAPPED ... c'est le grand mystère ... si vous avez une idée ... ... elle sera la bienvenue ..

    [FIN TESTS]

Discussions similaires

  1. Conversion d'un byte[] en type decimal ?
    Par Shypster dans le forum C#
    Réponses: 11
    Dernier message: 19/09/2009, 11h07
  2. [Crystal reports Version 8.x] Conversion Type chaîne en date
    Par Audrey Stelle dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 22/10/2005, 15h58
  3. Conversion Hexa --> Decimal
    Par lory_van_eyck dans le forum Général Python
    Réponses: 2
    Dernier message: 28/09/2005, 08h29
  4. [C#] Type decimal
    Par Emilio04 dans le forum Windows Forms
    Réponses: 15
    Dernier message: 31/05/2005, 14h58
  5. Réponses: 2
    Dernier message: 30/08/2004, 15h48

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