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 :

Thread qui ne se lance pas


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2014
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Thread qui ne se lance pas
    Bonjour,
    J'ai commencé le python depuis peu afin de programmer un robot tournant sous linux.
    L'objectif de ce code est de faire tourner les roues lorsque l'utilisateur entre z. La connexion se fait en ssh.
    Le problème est que le Thread_2 ne se lance pas et la variable f n'est pas modifier par le raw_imput.
    J'image aussi qu'il y'a bien plus pratique que raw_input suivie d'une tempo pour envoyer la commande. ^^

    Code : 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    #!/usr/bin/env python
     
    import threading
    import time      
    import RPi.GPIO as GPIO  # bibliothèques du GPIO        
    GPIO.setmode(GPIO.BCM)   
    GPIO.setup(22,GPIO.OUT)  
    GPIO.setwarnings(False)
     
    entre = ''
    Etat_moteur = 0
     
    def Commande():
     
            while 1:
                    print("commande")
     
                    if entre == 'z':
                            Etat_moteur = 1
     
                    else:
                            Etat_moteur = 0
     
    def Moteur():
            while 1: # Si Etat_moteur est a 1 les roues mettent en marche, les tempo sont pour faire un PWM
                    GPIO.output(22,Etat_moteur)   # sortie au niveau logique haut sur la broche 22
                    time.sleep(0.0030)
                    GPIO.output(22,0)   # sortie au niveau logique bas sur la broche 22
                    time.sleep(0.0070)
     
     
    thread_1 = Commande()
    thread_2 = Moteur()
    thread_1.start()
    thread_2.start()
     
    while 1:
            entre = raw_input #On demande a l'utilisateur d'entrer l'ordre.
            time.sleep(1)
    Merci de votre aide.

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Il n'est pas possible que ce code ne te retourne pas d'erreurs.

    Que sont censées faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    thread_1.start()
    thread_2.start()
    Si tu penses avoir créé des threads, je pense qu'il faudra absolument que tu ailles faire un tour là-bas

    Et ceci ne fait rien du tout:
    je te laisse deviner pourquoi.

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par pommefrite Voir le message
    J'ai commencé le python depuis peu afin de programmer un robot tournant sous linux.
    Commencer à programmer en Python, c'est prendre un tuto comme le Swinnen, le lire et faire les exercices.
    Ce n'est qu'après avoir maîtrisé un peu les bases du langage que vous allez être un peu efficace dans la programmation de votre robot.
    Avant vous allez passer beaucoup de temps à attendre qu'on lise votre code pour essayer de le comprendre: pas possible de faire tourner çà sans l'équipement externe...

    Relisez votre code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while 1:
            entre = raw_input #On demande a l'utilisateur d'entrer l'ordre.
            time.sleep(1)
    Vous assignez raw_input à entrée mais ca va se faire sans attendre la lecture de ce que vous avez tapé.
    Appeler une fonction comme raw_input est le base de chez base que vous allez apprendre avec les premiers chapitres de n'importe quel tuto.
    note: ici on préfère le Swinnen, on sait ce qu'il y a dedans.

    Le problème est que le Thread_2 ne se lance pas et la variable f n'est pas modifier par le raw_imput.
    J'image aussi qu'il y'a bien plus pratique que raw_input suivie d'une tempo pour envoyer la commande. ^^
    Thread_2 se lance, mais entrée est toujours != 'z' donc çà ne fait rien.
    Pratiquer avec les tutos permet aussi d'apprendre à relire son code et d'être un peu plus confiant sur ce qu'il fera (ou pas).
    A vous de voir...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2014
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Merci de vos réponses.

    Commencer à programmer en Python, c'est prendre un tuto comme le Swinnen, le lire et faire les exercices.
    Ce n'est qu'après avoir maîtrisé un peu les bases du langage que vous allez être un peu efficace dans la programmation de votre robot.
    Avant vous allez passer beaucoup de temps à attendre qu'on lise votre code pour essayer de le comprendre: pas possible de faire tourner çà sans l'équipement externe...
    Effectivement c'est ce que je vais faire, je connais d'autre langage mais ça ne suffit pas ^^.

    Si tu penses avoir créé des threads, je pense qu'il faudra absolument que tu ailles faire un tour là-bas
    Je vais potasser tout ça au travers des tuto dés que j'aurai un peu de temps.

Discussions similaires

  1. Label dans une fenêtre lancée par un thread qui ne s'affiche pas !
    Par totojava dans le forum Agents de placement/Fenêtres
    Réponses: 9
    Dernier message: 23/01/2011, 15h07
  2. Thread qui ne se lance pas
    Par davels dans le forum Langage
    Réponses: 6
    Dernier message: 04/12/2007, 18h05
  3. Thread qui ne se lance pas
    Par barbiche dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 20/03/2007, 16h06
  4. mmc.exe qui ne se lance pas
    Par r0d dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 27/04/2005, 17h11

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