PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Timer ou thread ?
Timer ou thread ?
Débuté par Cyril, 23 mai 2020 11:39 - 6 réponses
Membre enregistré
44 messages
Popularité : +1 (1 vote)
Posté le 23 mai 2020 - 11:39
Bonjour à tous,

Je développe une application de pilotage et je me retrouve face à une problématique que je n’arrive pas à régler .


Pour faire simple ,

J’ai 2 bouton qui pilotent une interface externe.

Bouton 1 : positionne l’interface externe dans le mode A.

Bouton 2 : positionne l’interface externe dans le mode B.


Il est possible d’agir directement sur l’interface externe et de la positionner dans le mode A ou B.

Cette action doit se répercuter dans l’interface Windev .

Au clic sur btn 1 , btn 1 est grisé et l’interface externe est en mode À.
Au clic sur btn 2 , btn 1 n’est plus grisé , btn 2 est grisé et l’interface externe est en mode B.


En basculant l’interface externe dans l’un des modes , j’aimerai que btn 1 ou btn 2 soit grisé.

Cela fonctionne par intermittence aujourd’hui....

Une fonction tourne avec un timer pour connaître l’état de l’interface externe .
J’ai essayé avec un thread mais c’est idem . Fonctionnement aléatoire .

Auriez vous une idée pour ce type de fonctionnement bidirectionnel ?



Merci
Membre enregistré
312 messages
Popularité : +8 (10 votes)
Posté le 23 mai 2020 - 13:01
Bonjour

Comment communiques tu avec l interface externe ?
Membre enregistré
44 messages
Popularité : +1 (1 vote)
Posté le 23 mai 2020 - 14:48
Bonjour,

je communique via API WEB : HTTPRequête()

Merci
Membre enregistré
44 messages
Popularité : +1 (1 vote)
Posté le 23 mai 2020 - 15:26
Il n’y a pas de notification lors du changement d’état côté interface externe.
C’est mon application qui requête en boucle pour demander l’état de l’interface externe .

Je pense qu’il y a des cas ou la requête qui demande l’état et les actions réalisées côté application qui se mordent la queue :-).

J’ai essayer en mettant un FinTimer ça améliore mais le fonctionnement n’est pas garantie .

Je ne maîtrise pas les thread et je me demande si cela n’est pas plus adapté . Il semble selon la documentation non recommandé d’utiliser des thread qui change l’interface d’un application .

Merci
Membre enregistré
312 messages
Popularité : +8 (10 votes)
Posté le 23 mai 2020 - 17:00
Ton interface externe ne renvoi jamais d information ?

Tu peux passer par une procedure automatique (toute les secondes ?)
Cette procedure sera exécuté en arriere plan.
Dans la procedure si
Bouton de l interface choisi different du bouton grisé dans ton appli alors
Tu execute dans le threadprincipal l evenement clic du bouton correspondant a l interface choisi.
Reste a voir s il faut mettre en pause la procedure automatique au moment de l execution
Membre enregistré
44 messages
Popularité : +1 (1 vote)
Posté le 23 mai 2020 - 17:20
Malheureusement l’interface externe ne renvoie rien . Il faut l’interroger .

Excellente idée le test « si bouton différent ». C’est exactement cela qui me manquait comme test .

La pause semble indispensable pour fiabiliser.

Problème résolu

Merci ++
Membre enregistré
312 messages
Popularité : +8 (10 votes)
Posté le 23 mai 2020 - 17:26
Avec plaisir