Bonjour à toutes et à tous!
Je suis en train de faire un petit logiciel qui a besoin du port série pour se connecter à un raspberry pi.
Et j'ai besoin de checker en permanence (à des intervalles de 0.5 ou de 1s) si le port série est bien ouvert.
Pour cela, j'ai mon interface graphique en Qt5 et je créer un thread qui est une boucle qui s'arrête lorsque l'ordinateur détecte que la connexion avec le port série est perdue.
Pour checker si le port est bien ouvert j'utilise la fonction intégrée dans pyserial:
Sauf que dans mon thread l'état reste toujours à True même si je rompt la connexion...
Code : Sélectionner tout - Visualiser dans une fenêtre à part MonPort.isOpen()
Voici mon code (simplifié):
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 class MainWindow(QMainWindow): def __init__(self, parent=None): # Chargement de l'interface de la fenêtre principale QMainWindow.__init__(self, parent) self.ui = IDRA_Ui.Ui_MainWindow() self.ui.setupUi(self) #[...] self.port = serial.Serial(str(SelectedPort)) # Connexion self.ThreadPortisOpen = PortisOpen(self.port) self.ThreadPortisOpen.jobDone.connect(self.colost) self.ThreadPortisOpen.start() class PortisOpen(QThread): #Signaux jobDone = pyqtSignal(bool) def __init__(self, port): QThread.__init__(self) self.port = port def run(self): while self.port.isOpen(): time.sleep(0.5) print(self.port.isOpen()) self.jobDone.emit(True)
Partager