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 :

Actualisation variable de sortie impossible


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Avril 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2022
    Messages : 4
    Par défaut Actualisation variable de sortie impossible
    Bonjour,

    Je débute en Python. Quelque chose doit m'échapper. Je travaille sur Visual studio 2022.

    Ma variable de sortie ne se met pas à jour et je ne comprend pas pourquoi.
    Il s'agit d'un bout de programme pour piloter un servomoteur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
          if    motor_on= Flase and alarm=False:
                         outputdata[1]= 2  # cela revient à démarrer le servomoteur   (ok)
          elif  motor_on==True and motor_ref==False and alarm==False:
                         outputdata[1]= 18 #cela revient à faire un référencement 0 du servomoteur
          else: print("Error")
    Le blocage se situe sur la ligne 4, le servomoteur ne réagit pas à cette ligne. il est censé bouger et rien ne se passe.

    En vous remerciant d'avance de votre aide

    Alex

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 769
    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 769
    Par défaut
    Citation Envoyé par Alex2022 Voir le message
    Le blocage se situe sur la ligne 4, le servomoteur ne réagit pas à cette ligne. il est censé bouger et rien ne se passe.
    Côté Python, on ne peut que s'assurer que la ligne est bien exécutée et que le tableau est mis à jour avec un "print". Et si c'est correct, peut être que le moteur n'est pas alimenté.

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

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 605
    Par défaut
    Bonjour,

    y a déjà des trucs qui vont pas en ligne 1, avec Flase et non False et l'emploi du signe d'assignation = au lieu de ==.

    SVP, mettez votre code entre balises [CODE] en rééditant votre premier message. Ca rendra votre bloc de code plus clair parce que là...

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 605
    Par défaut
    Que donne ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if not motor_on and not alarm:
        outputdata[1] = 2 # cela revient à démarrer le servomoteur (ok)
    elif motor_on and not motor_ref and not alarm:
        outputdata[1] = 18 #cela revient à faire un référencement 0 du servomoteur
    else:
        print(f"Error :")
        for var in (motor_on, alarm, motor_ref):
            print(var)

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Avril 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2022
    Messages : 4
    Par défaut
    Bonjour,

    Merci pour vos réponses.
    Voici la partie du code réactualisée sans les fautes de frappe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     if motor_on== False and alarm==False:
                     outputdata[1]= 2 # cela revient à démarrer le servomoteur (ok)
     if motor_on==True and motor_ref==False and alarm==False:
                     outputdata[1]= 18 #cela revient à faire un référencement 0 du servomoteur (not ok)
    Le moteur se met bien en route mais la valeur 18 n'est pas transmise à l'octet outputdata[1].

    @ Arioch : l'operateur not n'est pas reconnu dans VS.


    Merci à vous.

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 845
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Alex2022 Voir le message
    Je débute en Python. Je travaille sur Visual studio 2022.
    ...
    l'operateur not n'est pas reconnu dans VS.
    Et si tu travaillais sur Python juste pour voir si Python sait lire du python mieux que ne le fait VS???
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 769
    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 769
    Par défaut
    Salut,

    Citation Envoyé par Alex2022 Voir le message
    Le moteur se met bien en route mais la valeur 18 n'est pas transmise à l'octet outputdata[1]
    L'instruction outputdata[1] = 18 assigne 18 en position 1 d'outputdata.
    S'il y avait un bug de ce genre côté Python, ça se saurait...

    Et si vous aviez pris le temps de vous familiariser avec le langage avant de vous lancer dans de petits projets, vous seriez bien plus confiant sur ce qu'il fait ou pas.

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

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Avril 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2022
    Messages : 4
    Par défaut
    Lorsque j'arrête l'exécution puis je la redémarre, la ligne en question s'exécute correctement et le moteur bouge!!

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Avril 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2022
    Messages : 4
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    L'instruction outputdata[1] = 18 assigne 18 en position 1 d'outputdata.
    S'il y avait un bug de ce genre côté Python, ça se saurait...

    Et si vous aviez pris le temps de vous familiariser avec le langage avant de vous lancer dans de petits projets, vous seriez bien plus confiant sur ce qu'il fait ou pas.

    - W


    Le même programme marche en c#...

  10. #10
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 845
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Alex2022 Voir le message
    Lorsque j'arrête l'exécution puis je la redémarre, la ligne en question s'exécute correctement et le moteur bouge!!
    A un certain moment, il faut trancher dans le vif. Faire un print(outputdata) avant et après l'instruction (en espérant que VS sache lire cette instruction)...

    Citation Envoyé par Alex2022 Voir le message
    dis un truc intéressant sinon boucle la
    Le même programme marche en c#...
    Déjà ici on n'agresse pas ceux qui viennent bénévolement t'offrir leur temps pour t'apporter de l'aide, même si tu n'aimes pas leur façon de le manifester. Et surtout pas un expert reconnu de ce forum qui totalise 19k messages et 33kpts. Si ce qu'il disait n'était pas intéressant ça fait longtemps qu'il aurait été éjecté du forum.
    D'autant plus que si tu avais attentivement lu son texte, tu aurais vu qu'il n'a pas mis en cause ton code mais ton apprentissage de Python, apprentissage auquel tu as visiblement consacré peu de temps (écrire "=" au lieu de "=="). Peut-être que c'est une erreur de copier/coller mais peut-être pas, qui peut le savoir (en tout cas pas nous).
    Donc ici on développe ses arguments, on les soutient par sa réflexion. C'est effectivement intellectuellement plus difficile que de dire "ferme la" mais justement ça montre son intelligence (et ici tu as plutôt montré le contraire).
    Ensuite dire que le code fonctionne en C# ça ne démontre rien. Les langages ne sont pas les mêmes, les comportements non plus. On a eu ce cas récent d'un intervenant qui s'étonnait que son code Python, traduit directement du Perl, fonctionnait en Perl mais pas en Python.
    Sauf qu'il utilisait certains automatismes inhérents au Perl qui ne sont pas présents dans Python. Bref Perl faisait pour lui certains trucs par défaut que Python ne fait pas sans qu'on le lui demande explicitement (et qu'il n'avait pas demandé)

    C'est peut-être la même chose en C#. De mon côté quand j'ai voulu porter des trucs Python en C# j'ai eu du mal (principalement de par mon manque de connaissance de C# et de son fonctionnement interne). Sans parler en plus de cette histoire de code Python lu par un moteur VS et non par le vrai moteur Python.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  11. #11
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 769
    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 769
    Par défaut
    Citation Envoyé par Alex2022 Voir le message
    Hey toi qui familiarisé, dis un truc intéressant sinon boucle la.
    Le même programme marche en c#...
    Ce que je vous dis c'est que le soucis est ailleurs de ce que vous nous montrez.
    Si vous n'ajoutez un "print" pour visualiser qu'outputdata[1] contient bien ce qui lui a été assigné (comme suggéré dans ma première réponse), vous n'allez pas chercher ailleurs...

    Comme on ne se déplacera pas chez vous pour voir ce que vous négligez dans la description du problème rencontré... tant que vous serez scotché a cette idée, vous n'avancerez pas (et on ne peut pas vous aider...).

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/10/2007, 17h13
  2. Transmettre une variable depuis php impossible
    Par omdafer dans le forum Flash
    Réponses: 4
    Dernier message: 28/08/2007, 18h45
  3. Variable de sortie de la fonction Imcontour
    Par emilieGre dans le forum Images
    Réponses: 3
    Dernier message: 18/07/2007, 12h49
  4. Problème de variables entrée/sortie de fonctions
    Par cococococococo dans le forum Interfaces Graphiques
    Réponses: 11
    Dernier message: 13/06/2007, 12h22
  5. Réponses: 1
    Dernier message: 02/06/2006, 21h18

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