(1) 2 »


Timersys
DSI WDF
Inscrit:
05/05/2004 13:46
Post(s): 314
Bonjour,
Malgré plusieurs tentatives infructueuses je n'arrive pas à lancer un timer dans une fenêtre puis fermer cette fenêtre et conserver le timer pendant la durée de vie de l'application.
(éventuellement le supprimer et le recréer par l'intermédiaire de cette fenêtre afin de modifier la fréquence).

Contribution le : 12/10/2004 12:07
Créer un fichier PDF de la contribution Imprimer


Re: Timersys
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Bonjour GoZeub,

Une solution consisterait à créer le timerSys au début du projet et d'utiliser une variable globale de type booléan pour executer ou pas la procédure appelée par le timer.

Cette variable sera initialisée selon tes besoins.
donc a vrai à l'ouverture de la dite fenêtre, et continuerait son exécution même après la sa fermeture.

Contribution le : 12/10/2004 12:47
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: Timersys
DSI WDF
Inscrit:
05/05/2004 13:46
Post(s): 314
Merci de ta réponse DrCharly,
Néanmoins je ne vois pas trop comment réaliser ce TimerSys avec les explications que tu m'as envoyé. Surement me suis je mal exprimé je vais tenter de le faire par étapes.

//Initialisation du projet

TimerSys("Affiche_Blabla",1000,1)
//Ici le timer est valable pour l'ensemble du projet


//On rentre dans une fenêtre de paramétrage pour la fréquence

FinTimerSys(1)
TimerSys("Affiche_Blabla",500,1)
//Je souhaiterai que le nouveau timer soit affecté également sur l'ensemble du projet


Merci d'avance

Contribution le : 12/10/2004 13:24
Créer un fichier PDF de la contribution Imprimer


Re: Timersys

Inscrit:
18/12/2003 13:14
Post(s): 212
Bonjour GoZeub
Tu n'as pas essayé de mettre la fréquence du timer dans une variable globale au projet ?

Contribution le : 12/10/2004 15:04
_________________
Bonne Chance.
M'envoyer un message......
Créer un fichier PDF de la contribution Imprimer


Re: Timersys
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
De rien GoZeub, c'est moi qui n'avait pas compris.

Test effectué avec succès:
dans la déclaration globale du projet
GLOBALE
TymerSys("Test",1000,1)  //toutes les 10 secondes

J'ai créé une fenêtre de paramètre avec un champ numerique pour saisir ma nouvelle valeur.
Ce champs est nommé txtTemp

dans le code de fermeture de la fenêtre
frmParam..ValeurRenvoyer = txtParam..Valeur

Dans le code du bouton qui appel la fenêtre param
nTemp est un un entier

nTemp = Ouvre(frmParam)
si nTemp > 0 alors
  FinTimerSys(1)
  Multitache()   //Peut être pas nécessaire mais laisse le temps
  TimerSys("Test",nTemp,1)
FIN


Ma procédure
PROCEDURE Test()
Message(HeureVersChaine(HeureSys()))


voilà
pour moi en version 815p cela fonctionne correctement.

Contribution le : 12/10/2004 15:20
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: Timersys
DSI WDF
Inscrit:
05/05/2004 13:46
Post(s): 314
Merci pour votre aide Bassy et DrCharly pourtant cela ne suffit toujours pas à résoudre ce problème

Mettre la fréquence dans une variable globale ne servirait à rien car le timer est lancé dès l'initialisation du projet et la variable associée n'est plus reprise en compte ensuite. J'ai également tenté d'appeler le timer à partir d'une procédure globale(comme écrit dans l'aide) mais le problème reste le même : à la sortie de la fenêtre le timer s'éteint.

Sinon DrCharly ton code fonctionne bien mais tu détournes le problème ! lol Le timer n'est plus créé dans la fenêtre "paramétrage" mais dans une fenêtre "menu" et la fermeture de cette fenêtre "menu" entrainera la fin du timer.

Merci encore

Contribution le : 12/10/2004 15:44
Créer un fichier PDF de la contribution Imprimer


Re: Timersys
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Très bien,

D'où l'intéret des classes

Une classe qui manipule un timer.
Cette classe est déclaré dans le code d'initialisation du projet mais n'est activée que par une méthode de la classe
Une méthode de cette meme classe permet de modifier la temporisation et une autre methode permet de lui passer la chaine correspondante à la fonction ou procédure qui doit être exécutée.

Alors comme ca ça fonctionne pas non plus

Contribution le : 12/10/2004 16:51
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: Timersys
DSI WDF
Inscrit:
05/05/2004 13:46
Post(s): 314
Euuuhhhh... ça doit fonctionner mais je m'y prend surement mal.

//Déclaration de CTimer
CTimer est une classe
	GLOBAL
		Frequence est un entier
		NumTimer1 est un entier
FIN


PROCEDURE  Timer1()

::NumTimer1=TimerSys("Ctimer::Aff_Test",::Frequence)


PROCEDURE Modif_Freq(NewFreq est un entier)

FinTimerSys(::NumTimer1)
::Frequence=NewFreq
SI ::NumTimer1<>0 ALORS :Timer1()


PROCEDURE GLOBALE Aff_Test()

Trace("Yes")



//Initialisation projet
TTimer est un CTimer
TTimer:Modif_Freq(500)
TTimer:Timer1()


//Code de modification fréquence dans une fenêtre param.
TTimer:Modif_Freq(100)



J'ai du surement passer à coté de quelque chose

Contribution le : 13/10/2004 10:09
Créer un fichier PDF de la contribution Imprimer


Re: Timersys
Utilisateur WDF
Inscrit:
09/06/2004 09:31
Post(s): 78
Bonjour ,

une autre solution a discuter :

Creer un thread dans le code d'initialisation du projet

threadexecute(.....);
dans voici le code de ce dernier :

boucle
threadattendsignal(infini);
procedure_a_appeler();
fin


Ensuite tu pourras creer ton timer la ou tu veux aussi bien dans le code du projet que dans le code d'un bouton d'une fenetre...
dont voici le code du timer

fonction_timer()
threadenvoisignal("monthread")

Contribution le : 13/10/2004 10:52
Créer un fichier PDF de la contribution Imprimer


Re: Timersys
Utilisateur WDF
Inscrit:
09/06/2004 09:31
Post(s): 78
Re bonjour ,

Je voulais aussi rappeler que les timers doit etre utilisé a bon escient car le code executé d'un timer lancé dans le code du projet est executé par le thread principal.

Ce qui veut dire que si le traitement est long vous n'avez plus la main sur votre application ( bouton, saisie...) car c'est aussi le thread principal qui s'en occupe.
Et que si vous etes bloqué dans votre code de timer alors votre application est bloqué ce qui est different avec un thread.

Dans les timers il vaut mieux mettre des codes non complexe avec des risques d'erreur minimal et des temps de réponse optimum.

Contribution le : 13/10/2004 11:32
Créer un fichier PDF de la contribution Imprimer


Re: Timersys
DSI WDF
Inscrit:
05/05/2004 13:46
Post(s): 314
Merci pour ton aide Agent X,
Néanmoins il n'est pas possible de placer un "ThreadExecute" dans l'initialisation du projet avec l'utilisation de la fonction "Utilise". Celle-ci termine immédiatement le thread, pourquoi je ne sais pas...

Sinon quelqu'un sait-il pourquoi mon code avec les classes ne permet-il pas de conserver le timer lors du passage d'une fenêtre à une autre ?

Contribution le : 13/10/2004 13:11
Créer un fichier PDF de la contribution Imprimer


Re: Timersys
Utilisateur WDF
Inscrit:
09/06/2004 09:31
Post(s): 78
parce que un timer est lié a une fenetre ou a un projet donc si tu crees un timer dans une fenetre et cette derniere est fermé ca arrete le timer

donc l'idée c'est de mettre le timer dans le projet -->probléme tu ne peux pas jouer sur la frequence du timer car changer la frequence ca veut dire arreter le timer du projet et en relancer un autre avec la nouvelle frequence.
Donc quand tu le relances dans une fenetre ou autre a la fermeture ca l'arrete.

Je sais pas si avec executetraitement tu peux demander d'exectuer le code du projet ?

sinon vire tes utilse et opte pour une autre gestion de tes fenetres



Contribution le : 13/10/2004 13:45
Créer un fichier PDF de la contribution Imprimer


Re: Timersys
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Bonjour GoZub,

La réponse s'est faite un peut désirée, mais je voulais la tester d'abord,

J'ai donc écrit une petite classe pour mettre concètement mon idée en action et cela fonctionne parfaitement.

Cependant l'idée d'Agent_X n'est pas mal du tout et devrait être intégrée à la classe
Ce serait un plus.

Tiens moi au courant si tu veux tester ma classe.

Contribution le : 13/10/2004 15:04
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: Timersys
DSI WDF
Inscrit:
05/05/2004 13:46
Post(s): 314
Bonjour DrCharly,
Bien sûr je suis interressé par ta classe
Le fait que tu t'impliques autant sur les problèmes d'autruis me surprend agréablement !

Merci beaucoup

Contribution le : 13/10/2004 15:40
Créer un fichier PDF de la contribution Imprimer


Re: Timersys
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Ok,

Je monte un exemple et je te l'envoi.

Pourra tu en echange créer une petite doc dessus afin de la publier sur le site cela serait bien.

Merci d'avance

Contribution le : 13/10/2004 16:19
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: Timersys
DSI WDF
Inscrit:
05/05/2004 13:46
Post(s): 314
Oki si c'est fonctionnel pas de soucis.
Merci d'avance

Contribution le : 13/10/2004 16:26
Créer un fichier PDF de la contribution Imprimer


Re: Timersys
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
C'est dans la boite

Contribution le : 13/10/2004 17:28
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: Timersys
DSI WDF
Inscrit:
05/05/2004 13:46
Post(s): 314
Merci DrCharly je t'ai réenvoyé un mail

Contribution le : 14/10/2004 10:12
Créer un fichier PDF de la contribution Imprimer


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

Je ne sais pas si cela est normal, mais il est vrai que même si le timer est lancé à partir d'un objet, celui ci est détruit lors de la fermeture de la fenêtre qui a demandé la création du timer.

L'extrait de l'aide ne reporte pas à ma connaissance ce phénomène
Citation :

Code d'une méthode d'un objet :

Si la fonction TimerSys est appelée dans une méthode d'un objet, le timer est associé à l'objet. Le timer est interrompu par FinTimerSys ou par la libération de l'objet. La procédure appelée par le timer doit être :


Dans notre cas le TymerSys est bien appelé dans une méthode d'un objet.
Mais celui-ci est apparemment détruit à la fermeture de la fenêtre et non à celle de l'objet.

Je vais donc faire une demande auprès du support technique.

Contribution le : 14/10/2004 13:01
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: Timersys
Utilisateur WDF
Inscrit:
09/06/2004 09:31
Post(s): 78
oui j'ai remarqué certaine erreur dans la doc aussi

notamment je cite

Citation :

Si est une procédure globale au projet, le "thread" est automatiquement arrêté à la fin de l'exécution du projet.

Durée de vie du "thread"

Le thread est automatiquement arrêté à la fin de l'exécution de la procédure W-Langage lancée par la fonction ThreadExécute. De même si le mot clé RETOUR est utilisé dans la procédure W-Langage, le thread est automatiquement arrêté.



L'exemple que j'ai donné plus haut marche correctement meme sur plusieurs fenetre le hic c'est que ce monsieur , si gentil qu'il puise le paraitre lol , utilise la fonction utilise et cette derniere je ne sais pas pourquoi ni je ne vois l'interet tue tout les threads meme ceux lancé en tete de projet

je voudrais bien aussi une explication...

Contribution le : 14/10/2004 14:12
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant
(1) 2 »




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