WD12 - Thread balance
Stagiaire WDF
Inscrit:
18/07/2008 08:53
Post(s): 14
Bonjour,
Novice en développement windev, je cherche à réaliser une connection avec une balance Precia Molen en mode esclave. Le protocole est OK, seulement j'effectue la demande de poids dans un thread que je lance à l'initialisation de ma fenêtre. Ce thread est une boucle infini finissant par un Multitache(-100) pour rendre la main à mon application. Seulement je constate que celle-ci n'est plus très réactive : le clic n'est pas toujours pris en compte... le thread est-il une bonne solution?

Contribution le : 21/07/2008 14:05
Créer un fichier PDF de la contribution Imprimer


Re: WD12 - Thread balance
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Bonjour,

moi ce qui me dérange c'est un multitache(-100) dans un thread
qui correspond à une attente d'une seconde ce qui me parrait bien long

Contribution le : 21/07/2008 14:31
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: WD12 - Thread balance
Stagiaire WDF
Inscrit:
18/07/2008 08:53
Post(s): 14
Merci de ta réponse... et ça me dérange un peu aussi! L'idée, c'est d'interroger une balance toutes les secondes et être à l'écoute des appuis sur touche de l'écran. J'ai donc lancé un thread dans l'initialisation de la fenêtre et dans celui ci je boucle indéfiniment avec un Multitache(-100) à la fin pour être à l'écoute des touches de l'écran. J'ai essayé avec un TimerSys() et j'ai le même soucis : l'écran prend en compte 1 clic/3 quand je veux appuyer sur un bouton!

Contribution le : 21/07/2008 14:47
Créer un fichier PDF de la contribution Imprimer


Re: WD12 - Thread balance
Animateur WDF
Inscrit:
26/06/2002 16:24
De wdforge.org
Post(s): 2822
Bonjour.

Dans une vie antérieure j'ai aussi lu des afficheurs en port série. La communication s'effectuaient en mode xon-xoff mais le protocole n'importe pas.

Je lançais un lecture et l'envoyais dans un champ pour affichage. Un timer me permettait de 'rafraîchir' tous les 20ms (5 fois par seconde).

La touche de validation stoppait le timer et bouclait les lecture jusqu'à obtenir deux valeurs consécutivement égale (lecture stabilisée).
Si on ne trouvait pas de lectures stable après un certain nombre d'occurrence, on obtenais un message pour stabiliser l'affichage.

la procédure de lecture unique + timer avec un réglage de la fréquence en rapport avec les débit est une bonne solution. En effet cette même procédure peut alors servir lors de la validation.

Contribution le : 21/07/2008 15:30
_________________
R&B
Contact, CV.
Créer un fichier PDF de la contribution Imprimer


Re: WD12 - Thread balance
Stagiaire WDF
Inscrit:
18/07/2008 08:53
Post(s): 14
Pour comparer avec l'application que tu me décris, c'est comme si je n'avais pas accès à la touche de validation! Moi aussi lorsque j'appuie sur la touche, je suspend le thread jusqu'à la fin de mon traitement. Ma priorité, c'est d'être à l'écoute des touches. La tâche secondaire : c'est la mise à jour du poids de la balance. C'est pour cela que j'ai choisi le thread et non le timer!

Contribution le : 21/07/2008 15:58
Créer un fichier PDF de la contribution Imprimer


Re: WD12 - Thread balance
Stagiaire WDF
Inscrit:
11/01/2005 20:08
Post(s): 15
Bonjour,
et en utilisant ThreadPause à la place de Multitache, ça donne quoi ?

Contribution le : 22/07/2008 00:48
Créer un fichier PDF de la contribution Imprimer


Re: WD12 - Thread balance
Stagiaire WDF
Inscrit:
18/07/2008 08:53
Post(s): 14
Je suis en train d'essayer la procédure automatique de WD12 sans trop de succès : même réaction!
Pour cyberkat : le ThreadPause bloquait mon application. Pour info la doc dit de ThreadPause :
"Il est conseillé d'utiliser la fonction ThreadPause à la place des fonctions Multitâche ou Temporisation lorsque plusieurs threads sont utilisés (y compris pour le thread principal de l'application) si la temporisation n'a pas besoin de traiter les actions de l'utilisateur. "
Dans mon cas, je ne faisais appel qu'à un seul thread

Contribution le : 22/07/2008 08:45
Créer un fichier PDF de la contribution Imprimer


Re: WD12 - Thread balance
ChefDeProjet WDF
Inscrit:
29/05/2007 17:03
De Sassenage
Post(s): 180
Pour la gestion du clavier, je passerais plutôt par un hook clavier, l'exemple hotkey en donne le principe de base.

Pour la lecture, j'aurais pour ma part utilisé un timer et non pas un thread, une touche clavier détruit le timer, une autre le relance, ce qui a le meme effet que la suspension du thread, mais sans boucle infinie.

Parceque meme un thread, en boucle infinie, prend énormément de ressource, il n'y a qu'a regarder les ressources machine utilisé grâce au gestionnaire de tache.

Contribution le : 22/07/2008 09:08
_________________
be aware
Créer un fichier PDF de la contribution Imprimer


Re: WD12 - Thread balance
Stagiaire WDF
Inscrit:
18/07/2008 08:53
Post(s): 14
Si j'ai bien compris, en m'aidant de la fonction Evenement() sur chaque bouton de ma fenêtre, je dois pouvoir m'en sortir... c'est vrai mais mon code n'est plus très propre. Il n'y a vraiment pas moyen de lancer un processus secondaire qui mettrait à jour un champ sans handicaper le processus principale??

Contribution le : 22/07/2008 10:52
Créer un fichier PDF de la contribution Imprimer


Re: WD12 - Thread balance
ChefDeProjet WDF
Inscrit:
29/05/2007 17:03
De Sassenage
Post(s): 180
Avec un timer, cela vous permet de lancer un traitement à intervale régulier sans monopoliser votre thread principal.

Mais il y a toujours le soucis de stoper votre timer.

Je ne pense pas qu'un hook soit necessaire, un simple bouton qui tue votre timer et qui le relance si vous recliqué dessus suffit.

Contribution le : 22/07/2008 11:32
_________________
be aware
Créer un fichier PDF de la contribution Imprimer


Re: WD12 - Thread balance
Stagiaire WDF
Inscrit:
18/07/2008 08:53
Post(s): 14
C'est la solution adoptée pour l'instant mais sans grande conviction! Le Timer est d'intervalle 1s et pourtant l'appui sur certaines touches à certains moments n'est pas détecté!
Merci quand même pour toutes vos suggestions!

Contribution le : 22/07/2008 11:50
Créer un fichier PDF de la contribution Imprimer


Re: WD12 - Thread balance
ChefDeProjet WDF
Inscrit:
29/05/2007 17:03
De Sassenage
Post(s): 180
concernant votre probleme de touche, s'agit il de touche clavier?

si oui, un raccourcis sur un bouton qui embarque le code d'arret du timer ne fonctionnerait il pas?

Contribution le : 22/07/2008 15:08
_________________
be aware
Créer un fichier PDF de la contribution Imprimer


Re: WD12 - Thread balance
Stagiaire WDF
Inscrit:
18/07/2008 08:53
Post(s): 14
Non j'ai dis touche mais je pensais : clic! L'application est destiné à des terminaux tactiles!!

Contribution le : 22/07/2008 15:41
Créer un fichier PDF de la contribution Imprimer


Re: WD12 - Thread balance
ChefDeProjet WDF
Inscrit:
29/05/2007 17:03
De Sassenage
Post(s): 180
A se moment n'est il pas possible de brancher l'évènement WM_MOUSEUP qui se déclenche lorsque l'on relache le bouton de la souris et dans cet évènement de tuer le timer?

Contribution le : 22/07/2008 16:00
_________________
be aware
Créer un fichier PDF de la contribution Imprimer


Re: WD12 - Thread balance
Stagiaire WDF
Inscrit:
18/07/2008 08:53
Post(s): 14
Oui c'est faisable seulement j'ai 4 ou 5 application qui vont utiliser le module de pesée c'est pourquoi j'aimerai faire un code clean sans gestion d'évènement dans ma procédure. J'ai déjà fait l'essai : en effet, ça fonctionne bien! Merci quand même.

Contribution le : 22/07/2008 16:11
Créer un fichier PDF de la contribution Imprimer


Re: WD12 - Thread balance
Stagiaire WDF
Inscrit:
18/07/2008 08:53
Post(s): 14
Autant pour moi, vous ne pouviez pas deviner : j'avais un Multitache(50) dans une boucle de 5 lors de mon acquisition de poids (RécupèrePoids) dans le but de m'assurer de la réponse de la balance! J'ai donc passer ce Multitache à -50 et oh miracle; cela fonctionne!! Désolé encore et merci pour tout!!

Contribution le : 22/07/2008 17:51
Créer un fichier PDF de la contribution Imprimer


Re: WD12 - Thread balance
ChefDeProjet WDF
Inscrit:
29/05/2007 17:03
De Sassenage
Post(s): 180
mais de rien, heureux de vous avoir aidé.

Contribution le : 23/07/2008 09:50
_________________
be aware
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2