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...
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)