begin process at 2012 05 24 17:11:46
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Python

 > 

Divers

 > 

Aide et documentation

 > 

Aide pour acquisition d'une pression


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Aide pour acquisition d'une pression

lundi 4 mai 2009 à 23:59:30 | Aide pour acquisition d'une pression

sebfluo

Bonjour a tous.
Je suis entrain de réaliser un petit programme avec une interface graphique(réalisée avec QT designer et PyQT) permettant d'acquérir une pression d'un capteur situé sur une carte électronique via une liaison série. Cette pression s'affiche dans le shell de python(grace au print pb), l'interface est composée de 2 boutons (Marche Arrêt) permettant de contrôler une pompe,ainsi qu'un bouton Fin permettant la fermeture du port série et de l'interface graphique. Mon programme doit donc gérer deux choses en même temps : l'acquisition instantanée de la pression ainsi que l'interrogation des boutons pour contrôler la pompe. J'ai donc utilisé 2 Thread. Mon problème est que mon programme n'arrive pas à arrêter le thread d'acquisition de la pression lorsque j'appui sur le bouton Fin (la variable arrette reste toujours a 0 ce qui ne permet pas de sortir de la boucle) .J'aimerai donc que lorsque j'appui sur le bouton Fin le Thread d'acquisition de la pression s'arrete.
En espérant que vous pourrai m'aider, merci d'avance.
Seb

Voici le code source:

#!/usr/bin/python
# -*- coding: utf-8 -*-
# -*- coding: cp1252 -*-
from PyQt4 import QtCore, QtGui
import sys
import time
import timer
import serial
import threading
from applipre import *

global arrette
arrette=0
cmd1 = '\x1B\x40\x88\x01\x01\x31'                                       # remise à 0
cmd2 = '\x1B\x40\x88\x01\x02\xD3'                                      # mise en mode Test
cmd3 = '\x1B\x40\x8F\x05\x03\x01\x00\x01\x00\x60'       #commande demarrage pompe ON
cmd6 = '\x1B\x40\x8F\x05\x03\x01\x00\x00\x00\xA4'       #commande Arret Pompe OFF
cmd4 = '\x1B\x40\x8F\x02\x01\x01\xDC'                             #commande Ouverture sortie d'air
cmd5 = '\x1B\x40\x8F\x02\x01\x00\x82'                               #commande fermeture sortie d'air
press = '\x1B\x40\x92\x01\x03\xAD\x00'                             #commande lecture pression
ser = serial.Serial(0,9600,8,"N",1)  # Ouverture du port série

ser.write(cmd1)                           # remise à 0 de la carte
ser.write(cmd2)                           # mise en mode Test de la carte

class MonApplication(Ui_MainWindow):
       """Main Qt Window"""
       def setupUi2(self,Form):
            Ui_MainWindow.setupUi(self, Form)
            QtCore.QObject.connect(self.gonflage,QtCore.SIGNAL("clicked()"),self.marpom)         #Bouton gonflage
            QtCore.QObject.connect(self.stop,QtCore.SIGNAL("clicked()"),self.arrpom)        #Bouton stop gonflage
            QtCore.QObject.connect(self.fin,QtCore.SIGNAL("clicked()"),self.fini)                   #Bouton Fin
 
       def marpom(self):            #Appui sur le bouton  marche pompe
            ser.write(cmd3)                      # commande demarrage pompe ON
            ser.write(cmd4)                      #commande Ouverture sortie d'air

       def arrpom(self):            #Appui sur le bouton arret pompe
            ser.write(cmd5)                      #commande fermeture sortie d'air
            ser.write(cmd6)                      #commande Arret Pompe OFF
          
       def fini(self):                #Appui sur le bouton Fin
           ser.close()                          # fermeture port série         
           arrette=1                              
           MainWindow.close()  

def pression():                         #Acquisition de la pression
            while arrette!=1:                #tant que arrete  est différent de 1
                   if ser.isOpen():
                          ser.write(press)                      #commande lecture pression
                          ser.flushInput()                     #efface le buffer
                          x=ser.read(10)                       #lecture de la pression
                   time.sleep(0.2)
                   #Pression Capteur B
                   h=ord(x[7])                          #Decimale du 7eme caractère
                   i=ord(x[8])                          #Decimale du 8eme caractère
                   pb=((h+(i*256))*0.1)            #Calcel pression
                   print pb                #Affiche de la pression
                   
if __name__ == "__main__":
              app = QtGui.QApplication(sys.argv)
              MainWindow = QtGui.QMainWindow()
              ui = MonApplication()
              MainWindow.show()
              ssp=threading.Thread(None, pression, None,)               #Déclaration du thread d'acquisition de la pression
              ssp.start()                                                                                                          #Lancement du thread
              ssp2=threading.Thread(None, ui.setupUi2(MainWindow), None,)
              ssp2.start()             
              sys.exit(app.exec_())


Cette discussion est classée dans : bouton, commande, self, pression, x01


Répondre à ce message

Sujets en rapport avec ce message

héritage de wxObject et polymorphisme ?? [ par RV2931 ] Bonjour,Je programme en wxPython et j'aurai voulu savoir comment dériver un objet wx pour faire un bouton personalisé par exemple, avec des informatio connexion python [ par tsic ] Bonjour, Voilà, j'ai débuté recemment avec python et je veux faire une connexion client serveur (windows) par l'intermédiaire d'une interface QT Desig msn client/serveur python [ par tsic ] Bonjour, je suis bloqué ilya preque 2 semaines dans le code suivant. je veut que le client et le serveur envoyent leurs message d'une maniere comme ms wxBoxSizer [ par Vonscott ] Salut à tous,Ceci est mon tout premier POST sur le forum ( mais certainement pas le dernier )Jusque la, je travaillais sous PHP/MySQL et j'ai voulu dé [QT4][python]probleme menu bouton [ par tsic ] salut,Mon interface client a un menu et un boutton (au debut non actif) .à la connexion j'ai ajouter la ligne suivante:"self.ui.bouton_env.setEnabled( Créer une commande linux en python [ par skylin3 ] Bonjour,J'aimerai savoir si c'est possible et comment faire pour créer une commande que je peux utilisé dans ma console linux (Debian 4.0) créer en py Récupérer la valeur choisie dans une liste déroulante [ par amaury74 ] Bonjours à tous,Ma question peu paraitre bête mais je n'ai pas trouvé de réponse claire.Voila: j'ai programmé une interface graphique avec wx.Python. Comment Afficher les donnes d'une BD dans WXGRID ??? [ par medmst ] slt a tousmon probleme est .. comment afficher les donnees d'un bd dans WXGRID ???mon code-source est : pas d'erreur de compilation mé il n'affiche ri Diverses questions et precision [ par sheorogath ] Bonjour,je me remets au python mais plus serieusement cette fois ci :palors j'ai plusieurs question sur des choses sur lesquels je trouve que peux d'i Appeler une méthode d’objet juste construit / comparaison profonde [ par gaspos ] Bonjour, y a-t-il un moyen d'appeler méthode d'objet juste construit ? <?xml:namespa


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,920 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales