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 :

convertir hexa en binaire


Sujet :

WinDev

  1. #1
    Membre à l'essai
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Novembre 2013
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Novembre 2013
    Messages : 41
    Points : 20
    Points
    20
    Par défaut convertir hexa en binaire
    Bonjour à tous,

    Voici ma problématique du jour.
    Je dois envoyer des données via mon port COM.
    Ces données sont des valeurs, exemple 43, ou 97, ou 0 peu importe.
    Si j'envoie 43 sur le port com, j'envoi donc 2 octets et ça ne fonctionne pas.
    Il faut que j'envoi 43 en 1 octet pour ce ça fonctionne.

    Et j'ai donc découvert que la valeur que je doit envoyer est une valeur Hexa.

    Il me faut donc convertir cette valeur en binaire et envoyer cet octet binaire.

    Queston 1, sous windev, comment convertir un hexa en binaire?

    Question 2 , une fois converti en binaire, comment faire que ce mot de 8 bits soit envoyer en 1 seul octét en RS232.

    Je vous remercie pour votre aide.
    Fred2355

  2. #2
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 144
    Points : 9 074
    Points
    9 074
    Par défaut
    Bonjour,
    Je ne suis pas chez moi, et je ne peux pas faire de recherches. Alors, je me jette sans filet.
    As-tu regardé en déclarant ta variable en entier sans signe sur 1 octet ?
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  3. #3
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 774
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 774
    Points : 5 183
    Points
    5 183
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Citation Envoyé par frenchsting Voir le message
    As-tu regardé en déclarant ta variable en entier sans signe sur 1 octet ?
    Et après tu envoie ça via sEcrit (précédé par le sOuvre qui va bien). Si c'est vraiment de l'hexa qui est attendu, il faut auparavant (chinois) passer par EntierVersHexa
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  4. #4
    Membre à l'essai
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Novembre 2013
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Novembre 2013
    Messages : 41
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par frenchsting Voir le message
    Bonjour,
    Je ne suis pas chez moi, et je ne peux pas faire de recherches. Alors, je me jette sans filet.
    As-tu regardé en déclarant ta variable en entier sans signe sur 1 octet ?
    Bonjour,
    Merci pour cette piste.
    Je viens de tester mais le soucis reste entier.
    Espérant que ton prochain msg m'apporte une autre piste de recherche.
    Merci

  5. #5
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 774
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 774
    Points : 5 183
    Points
    5 183
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par fred2355 Voir le message
    Si j'envoie 43 sur le port com, j'envoi donc 2 octets et ça ne fonctionne pas.
    Chez moi 43 tient sur un octet : 43[10]=2B[16]=0010 1011[2]
    Ne manquerait-il pas un Val ?
    Un truc dans le style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    oAEnvoyer est octet //On va forcer le fait qu'on travaille sur un octet mais c'est à mon avis inutile
     
    oAEnvoyer =Val("43")
    sEcrit(oAEnvoyer,......)
    Par ailleurs, ton 43 (ou toute autre valeur) est il issu d'un champ de saisie ?
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  6. #6
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 774
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 774
    Points : 5 183
    Points
    5 183
    Billets dans le blog
    1
    Par défaut
    On efface tout et on recommence.
    En relisant la doc, on voit que les prototypes de sEcrit sont
    <Résultat> = sEcrit(<Numéro de port> , <Buffer à écrire>)
    ou
    <Résultat> = sEcrit(<Numéro de port> , <chaine à écrire>)
    Pour passer 43, il faut donc écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    nEcrit est entier
    nNoPort est entier
     
    nNoPort= sOuvre("COM1",nNbOctetLecture,1)
    nEcrit=sEcrit(nNoPort,Caract(43))
     
    SI nEcrit <> 1 ALORS
         //Traitement de l'erreur
    FIN
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    486
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 486
    Points : 875
    Points
    875
    Par défaut
    En Windev pour passer une valeur en hexa vous devez préfixer le nombre par 0x (zero X)
    par conséquent pour passer le nombre décimal 67, vous devez écrire 0x43 en hexa
    et pour passer 43 en décimal, vous devez écrire 0x2B en hexa.

    Je vous conseille de vous munir d'une table ASCII pour faciliter vos conversions.
    Faites une recherche sur Google avec "table ascii" vous trouverez facilement ce dont vous avez besoin.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Novembre 2013
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Novembre 2013
    Messages : 41
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par Patrice Terrier Voir le message
    En Windev pour passer une valeur en hexa vous devez préfixer le nombre par 0x (zero X)
    par conséquent pour passer le nombre décimal 67, vous devez écrire 0x43 en hexa
    et pour passer 43 en décimal, vous devez écrire 0x2B en hexa.

    Je vous conseille de vous munir d'une table ASCII pour faciliter vos conversions.
    Faites une recherche sur Google avec "table ascii" vous trouverez facilement ce dont vous avez besoin.
    Bonjour,
    Merci pour votre commentaire qui vient de mettre la lumiere sur mon soucis.
    Maintenant ça fonctionne, à un details prets, que le portcom ne se ferme pas malgré l'instruction sferme.
    Mais là est un autre sujet.

    Merci.

Discussions similaires

  1. convertir un fichier binaire en ascii
    Par M_JOU79 dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 12/06/2007, 00h48
  2. [Debutant] Conversion Hexa en Binaire
    Par radskin dans le forum C
    Réponses: 6
    Dernier message: 11/09/2006, 11h24
  3. Convertir une chaîne binaire en signal carré
    Par hotdog dans le forum Signal
    Réponses: 1
    Dernier message: 06/09/2006, 11h01
  4. [LG] Convertir un nombre binaire en décimal
    Par minela28x dans le forum Langage
    Réponses: 5
    Dernier message: 05/01/2006, 11h33
  5. Réponses: 4
    Dernier message: 21/12/2005, 13h20

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