Bonjour à tous.

Au sein de mon projet (lié à un Raspberry mais peu importe) j'ai le besoin de vérifier si un des composants est bien connecté pendant que mon programme tourne.
Indirectement ce composant est relié à l'aide d'un câble et pourrait être débrancher par inadvertance.

Pour cette partie seule j'ai fait ce petit bout de code (pas top mais ça marche, au passage si c'est dégueux et qu'il y a plus simple je prends) :

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
#!/usr/bin/python
# -*- coding: latin-1 -*-
 
import time
import smbus
 
verif = True
while verif:
#Essayer de faire une lecture du registre sur le bus i2c adresse 0x20
    try :
        val = smbus.SMBus(1).read_byte(0x20)
    except (IOError):
        error = True
        while error :
            try:
                val = smbus.SMBus(1).read_byte(0x20)
                error = False
            except (IOError):
                pass
            time.sleep(0.02)
    time.sleep(0.02)

Maintenant ce que j'ai besoin de faire :


J'ai mon programme principal qui tourne pour mon IHM, à partir duquel je lance un thread avec le code ci-dessus.
Il faudrait que tant que le "try" provoque une exception IOError, le thread se mette "au premier plan" et empêche le programme principal de fonctionner (que le programme soit en attente de reconnexion du câble en gros). Et le thread repart en tâche de fond tant que c'est connecté et mon programme reprend la main.

Est-ce envisageable de façon pas trop compliquée?

Merci d'avance.