Pilotage boucle de calcul assez longue
Publié : jeu. 13/mai/2021 18:27
Bonjour à tous,
Je découvre progressivement PureBasic en écrivant un programme pour driver un programmateur d'eprom via rs232 et suis satisfait de ce que j'apprends petit à petit.
Je comprends les event loop et j'arrive même à gérer plusieurs fenêtres mais pas encore avec une tâche qui tourne en arrière plan !
Le squelette de mon code fonctionne mas je bute sur ce point.
Une opération sur l'eprom peut être assez longue donc une progress bar serait bien et aussi je voudrais pouvoir éventuellement l’interrompre.
Donc j'imagine que le lancement de la tâche dans la fenêtre principale ouvre une petite fenêtre de pilotage avec cette barre de progression et un bouton start et un autre bouton stop.
Cette fenêtre devrait être commune à plusieurs opérations différentes sur l'eprom donc le code (fondamentalement une longue boucle) qui réalise cette opération est dans un sous programme (un sous programme différent par opération).
Comment faire pour que je puisse surveiller dans la boucle les boutons start et stop de la fenêtre de pilotage et aussi que la progress bar soit mise à jour ?
J'ai essayé différente chose mais sans succès jusqu'à maintenant...
En parcourant la doc j'ai le sentiment que la fenêtre de pilotage devrait être un thread différent de celui du programme principal ???
Ce qui m'aiderait c'est d'avoir un petit bout de code qui fait ça !
Une fenêtre principale avec un bouton qui appelle un sous programme.
Ce sous programme ouvre la fenêtre de pilotage et attend le bouton start pour lancer un compteur (par exemple, compteur qui fait avancer la progress bar ou un affichage quelconque dans la fenêtre de pilotage).
Si on actionne le bouton stop le comptage s'arrête on demande confirmation de l'arrêt définitif de la procédure (par un message requester) , si on confirme on ferme la fenêtre de pilotage et on revient à la fenêtre principale et sinon on reprend le comptage avec la progress bar etc....
Si le comptage va au bout on affiche un message requester pour indiquer la bonne fin et on revient à la fenêtre principale en fermant la fenêtre de pilotage.
J'espère que c'est assez clair...
Peut être avez vous cela dans vos tiroirs ?
Merci, cordialement.
Philippe
Je découvre progressivement PureBasic en écrivant un programme pour driver un programmateur d'eprom via rs232 et suis satisfait de ce que j'apprends petit à petit.
Je comprends les event loop et j'arrive même à gérer plusieurs fenêtres mais pas encore avec une tâche qui tourne en arrière plan !
Le squelette de mon code fonctionne mas je bute sur ce point.
Une opération sur l'eprom peut être assez longue donc une progress bar serait bien et aussi je voudrais pouvoir éventuellement l’interrompre.
Donc j'imagine que le lancement de la tâche dans la fenêtre principale ouvre une petite fenêtre de pilotage avec cette barre de progression et un bouton start et un autre bouton stop.
Cette fenêtre devrait être commune à plusieurs opérations différentes sur l'eprom donc le code (fondamentalement une longue boucle) qui réalise cette opération est dans un sous programme (un sous programme différent par opération).
Comment faire pour que je puisse surveiller dans la boucle les boutons start et stop de la fenêtre de pilotage et aussi que la progress bar soit mise à jour ?
J'ai essayé différente chose mais sans succès jusqu'à maintenant...
En parcourant la doc j'ai le sentiment que la fenêtre de pilotage devrait être un thread différent de celui du programme principal ???
Ce qui m'aiderait c'est d'avoir un petit bout de code qui fait ça !
Une fenêtre principale avec un bouton qui appelle un sous programme.
Ce sous programme ouvre la fenêtre de pilotage et attend le bouton start pour lancer un compteur (par exemple, compteur qui fait avancer la progress bar ou un affichage quelconque dans la fenêtre de pilotage).
Si on actionne le bouton stop le comptage s'arrête on demande confirmation de l'arrêt définitif de la procédure (par un message requester) , si on confirme on ferme la fenêtre de pilotage et on revient à la fenêtre principale et sinon on reprend le comptage avec la progress bar etc....
Si le comptage va au bout on affiche un message requester pour indiquer la bonne fin et on revient à la fenêtre principale en fermant la fenêtre de pilotage.
J'espère que c'est assez clair...
Peut être avez vous cela dans vos tiroirs ?
Merci, cordialement.
Philippe