Vérifier si le port série est bien connecté dans un thread
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:
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) |