passer thread "en premier plan" lors d'une exception IOError
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:
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.