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_())