Exécuter programme dans un timer

ratus888 -  
 swed -
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 338 Statut Membre 102
 
Salut,

Sans donner le langage de programmation et ton code on ne risque pas de bcp t'aider
0
ra
 
language: VB (macro sous excel).
je posterai le code plus tard
0
ratus888
 
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
swed
 
Bonjour,

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

Cordialement, M.
0