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

Python Discussion :

entrée au clavier non bloquante


Sujet :

Python

  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    63
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 63
    Par défaut entrée au clavier non bloquante
    Bonjour,

    Je réalise un script en jython pour le programme JMRI http://jmri.sourceforge.net pour commander mon train électrique par l'ordinateur.

    Pour envoyer les bons ordres au train, l'ordinateur a besoin de connaître sa position. Pour ce faire, il faut ajouter un matériel spécifique, avec des capteurs sur le circuit qui renvoient l'information à l'ordinateur, car une simple horloge est beaucoup trop imprécise.

    Ce matériel étant très onéreux, j'ai donc décidé de faire autrement et d'envisager la communication de la position du train par le clavier.
    J'ai donc modifié (sacrifié ? ) un clavier. Chaque capteur correspond ainsi à une touche.

    Le script récupère l'information grâce à raw_input() ce qui me pose deux problèmes:
    _ le premier, c'est que ça bloque le programme. Par exemple, si l'on veut qu'un train parte à un temps donné, le programme n'exécutera aucune action tant que la touche entrée n'aura pas été pressée.
    Je pourrais également faire un système qui active le contact de la touche entrée tous les 500ms, mais ce n'est pas une solution très élégante et elle risquerait peut-être de faire planter l'ordinateur.

    _ le second, c'est qu'il faut valider toute entrée par enter. C'est faisable, mais ça complique assez considérablement l'interface entre les capteurs et la carte du clavier.

    C'est pour cela que je voulais vous demander si vous connaissiez une fonction en python (ou peut-être en java, s'agissant de jython ?) qui permette d'entrer des caractères par le clavier de manière non bloquante
    et sans validation par enter

  2. #2
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Citation Envoyé par Z20500 Voir le message
    J'ai donc modifié (sacrifié ? ) un clavier. Chaque capteur correspond ainsi à une touche.
    Haha, belle idée ça

    Pour ton premier problème (bloquer le programme), tu peux te servir de threads, et d'une queue d'événements à gérer. Un thread recevra ces événements (raw_input donc), et les ajoutera à la queue. L'autre se chargera de la gestion du train et des événements reçus par la queue.
    C'est une possibilité bien sur. Ce n'est peut-être pas la meilleure, et il en existe très certainement plein d'autres.

    Pour le deuxième souci, c'est plus difficile...
    Si tu as accès au module readline sous Jython, il te serait peut-être utile.
    Vois ici:
    http://docs.python.org/library/readl...odule-readline
    http://docs.python.org/library/rlcompleter.html

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 067
    Par défaut
    faut pas lire une entrée au clavier mais un évènement clavier. Pygame peut très bien gérer ça, je ne connais pas les autres libs.
    d'ailleur c'est même faisable en shell si tu veux inclures du code shell.

  4. #4
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Mai 2002
    Messages : 309
    Par défaut
    Il y a aussi pyHook sur Windows

Discussions similaires

  1. Différence entre Asynchrone et modèle non bloquant
    Par unoomad dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/05/2014, 14h02
  2. Réponses: 19
    Dernier message: 22/11/2008, 13h50
  3. lecture non bloquante de clavier
    Par Bayard dans le forum Général Python
    Réponses: 4
    Dernier message: 10/08/2007, 21h27
  4. [API] Communication série NON-bloquante : OVERLAPPED/Thread
    Par Rodrigue dans le forum C++Builder
    Réponses: 2
    Dernier message: 07/11/2003, 13h43
  5. [Turbo Pascal] Entrée au clavier sous forme ******
    Par Upal dans le forum Turbo Pascal
    Réponses: 12
    Dernier message: 15/02/2003, 14h42

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