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

Bibliothèques tierces Python Discussion :

Envoyer de l'hexa sur le port Série


Sujet :

Bibliothèques tierces Python

  1. #1
    Invité
    Invité(e)
    Par défaut Envoyer de l'hexa sur le port Série
    Bonjour à tous
    J'ai un petit souci, je débute un peu en python veuillez donc bien m'excuser pour les éventuelles aneries

    Je dois faire quelque chose de relativement simple, envoyer une commande hexadécimale sur le port série
    J'ai réussi une grosse partie grâce à PySerial qui est absolument génial tellement c'est simple

    J'arrive à ouvrir, tester, fermer le port
    et même envoyer une commande, seulement il la traite systématiquement comme une chaine de caractères
    J'ai tenté en écrivant 0xFE par exemple, il me l'envoie telle quelle

    Dans la doc de mon module série, les commandes sont aussi écrites sous leur forme décimale (254 pour 0xFE par exemple)

    Je jongle très mal avec les différents formats et là je sais vraiment plus où j'en suis

    Pourriez vous me guider ? Merci

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Points : 923
    Points
    923
    Par défaut
    Envoyer en hexa? Tu veux dire sous format "binaire"?
    Du genre 1 octet <=> 2 chiffres hexa?
    Tu peux convertir en caractères avec "\xfe" par exemple
    Sinon je t'envoie du côté du module struct qui permet une gestion plus complète

  3. #3
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    Moi, j'utilise la fonction chr(). Sinon, il te le transforme directe en entier. Enfin je peux pas retester mais il me semble que c'est ça.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyComPort.write(chr(0xFE))
    et pour lire de l'autre côté:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x = ord(MyComPort.read())

  4. #4
    Invité
    Invité(e)
    Par défaut
    Merci à tous les deux je vais tester ça de suite et je vous tiens au courant

  5. #5
    Invité
    Invité(e)
    Par défaut
    Alors, ça n'a pas marché, ni le \xFE ("Invalid Token")
    ni le chr(0xFE)
    En fait j'ai fait afficher le chr(0xFE) et il affiche du blanc, et rien ne se passe

    Pour m'expliquer je vous montre le programme (bon, il n'est pas structuré, c'est vraiment pour tester le module, je le referai complètement dès que ça fonctionnera bien)
    les relatives explications commencent à la page 17
    enfin je donne ça juste comme ça

    Edit: je ne vous laisse meme pas le temps de regarder, j'ai réussi
    En envoyant 254 puis 88 directement (par exemple) ça fait ce qu'il faut sur l'écran LCD
    (oui j'avais oublié de préciser que c'est un module pour un écran LCD alphanumérique qui se pilote avec des commandes série)

    Reste un point à régler

    Pour afficher du texte, je dois envoyer directement les chaînes pour que cela fonctionne, c'est plutot sympa mais étonnant qu'il n'y ai plus besoin de la commande d'initialisation
    et ça ne me permet pas de faire les caractères spéciaux programmés dans le module déjà

    Vous auriez des pistes ?

    Merci beaucoup !
    Dernière modification par Invité ; 10/12/2006 à 18h28.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonsoir
    je ne comprends plus rien
    J'ai cherché à faire un module qui me permettai de simplement lui donner un caractère et de le lui faire afficher sur l'écran LCD

    J'ai prévu pour la suite le même genre de choses avec des primitives texte pour ne plus avoir à s'embêter à taper les codes à la main (254, 88 ce que je tape avec mon premier programme de test et ça fonctionne)
    Là, il se met à m'afficher.. les codes hexa, tels que je les lui envoie
    J'envoie 65 pour faire un A il écrit 65

    Je dois faire une erreur dans le type des données mais ze suis perdu

    J'utilisais le chr(254) puis chr(88) dans l'autre programme pour que cela fonctionne, là, il ne veut plus puisque je traite des chaines de caractères déjà.

    Une piste pour moi ? Merci
    Dernière modification par Invité ; 10/12/2006 à 18h28.

Discussions similaires

  1. Ecrire en hexa sur le port série avec java.comm
    Par theanthony33 dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 15/06/2009, 17h07
  2. Réponses: 4
    Dernier message: 09/01/2007, 15h20
  3. Envoyer des données sur le port série
    Par jbidou88 dans le forum Flash
    Réponses: 3
    Dernier message: 18/09/2006, 11h33
  4. [javax.comm] Envoyer des données sur le Port série
    Par deuspi dans le forum Applets
    Réponses: 2
    Dernier message: 29/08/2006, 09h40
  5. Réception sur le port série sous DOS avec Borland V3.0
    Par jackyjacky dans le forum Autres éditeurs
    Réponses: 24
    Dernier message: 19/03/2004, 23h18

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