Exécuter programme dans un timer

Fermé
ratus888 - 23 août 2010 à 19:44
 swed - 24 août 2010 à 15:27
Bonjour,

Je souhaite réaliser une mise à jour des données en temps réel.
je m'explique:
excel communique à un autre logiciel via une liaison DDE pour récupérer des données. Mon code fonctionne (logiciel de récupération de données et timer). Or mon problème c'est que je voudrai rafraîchir les données toutes les deux secondes et générer une impulsion sur la liaison RS232.
mon problème est que je n'arrive pas générer une impulsion d'une période de deux secondes car j'ai l'impression que mon code s'exécute à la fin de mon timer alors que je voudrai qu'il s'exécute à l'intérieur. en clair, j'ai une impulsion toute les 2,2 secondes (temps timer + temps exécution code) alors que je voudrai une impulsion toute les 2 secondes et que le temps d'exécution du code soit inclu dans l'écoulement du timer?


4 réponses

Nico# Messages postés 323 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 28 août 2013 102
23 août 2010 à 22:21
Salut,

Sans donner le langage de programmation et ton code on ne risque pas de bcp t'aider
0
language: VB (macro sous excel).
je posterai le code plus tard
0
Sub LancerTimer()

On Error Resume Next
'Interval = 2 ' temps de cycle configuré dans fichier texte
Application.OnTime Now + TimeSerial(0, 0, Interval), "ExecutionTimer"

End Sub

Sub ArretTimer()

On Error Resume Next
Application.OnTime Lheure, "ExecutionTimer", , False
tt = iserialmclctrl(intf, I_SERIAL_RTS, 0) ' RTS = 0
Call iclose(intf)

End Sub

Sub ExecutionTimer()

On Error Resume Next
If attente_60s = 30 Then ' tempo de 30 secondes
Premiere_R_I ' cette fontion doit être effectuée toute les 2 seconde
Else
attente_60s = attente_60s + 1 'icément tant que les 30s ne se sont pas écoulées
End If

Lheure = Now + TimeSerial(0, 0, Interval)
Application.OnTime Lheure, "ExecutionTimer"

End Sub





la fonction Premiere_R_I génère une impulsion sur rts de la liaison série (rs232) or à l'oscilloscope l'impulsion est générée toute les 2.2s (les 2s viennent du timer et les 0.2 de la fonction).

moi je souhaite que la fonction soit réalisé dans le timer et non après ainsi avoir une impulsion toute les 2s.

d'avance merci
0
Bonjour,

Tu devrais mettre à jour l'heure au tout début de ExecutionTimer, pas à la fin.
Ca paraît logique...

Cordialement, M.
0