Attendre la fin d'une acquisition
bruelhagerri
-
bruelhagerri Messages postés 3 Statut Membre -
bruelhagerri Messages postés 3 Statut Membre -
bonjour à tous,
je travaille en vba sur le logiciel pulselabshop (v6.0)
ce soft sert à récupérer des signaux acoustiques
ma macro permet de faire plusieurs acquisitions à la suite puis enregistrer les données dans un fichier texte; chaque acquisition dure 10s
mon problème est le suivant:
l'avancement du code de la macro n'attends pas la fin de l'acquisition (code: pulselabshop.start).
j'ai trouvé un moyen de la faire fonctionner mais j'aimerai éviter de devoir cliquer lors des mesures successives:
sans l'apparition de la msgbox, l'acquisition ne se fait pas, la commande etant passé. j'ai déjà essayer les "sleep" et "do event", même constat. j'ai essayer également de créer un userframe avec date d'expiration de 10s, mais elle aussi prends le dessus sur ma mesure.
j'ai pas trouvé de flag indiquant la fin des mesures non plus.
pour finir, voici ou sont sauvegardé les données
j'aurais voulu verifier si la derniere case etait vide et attendre tant qu'elle ne l'est pas
genre
mais avant d'être remplie, cette case est de type <type mismatch>, donc je sais pas comment faire ma condition, is empty ne marchant pas :furieux:
(de toute façon je doute que ça marche ...)
comment puis je faire ? thread avec l'userform? (si oui, je veux bien l'adresse d'un cours simple en VB, j'en ai pas trouvé)
merci d'avance !
je travaille en vba sur le logiciel pulselabshop (v6.0)
ce soft sert à récupérer des signaux acoustiques
ma macro permet de faire plusieurs acquisitions à la suite puis enregistrer les données dans un fichier texte; chaque acquisition dure 10s
mon problème est le suivant:
l'avancement du code de la macro n'attends pas la fin de l'acquisition (code: pulselabshop.start).
j'ai trouvé un moyen de la faire fonctionner mais j'aimerai éviter de devoir cliquer lors des mesures successives:
PulseLabShop.start check = timer start = timer tempo=10 while check<tempo+start msgbox "attends 10s" check=timer wend
sans l'apparition de la msgbox, l'acquisition ne se fait pas, la commande etant passé. j'ai déjà essayer les "sleep" et "do event", même constat. j'ai essayer également de créer un userframe avec date d'expiration de 10s, mais elle aussi prends le dessus sur ma mesure.
j'ai pas trouvé de flag indiquant la fin des mesures non plus.
pour finir, voici ou sont sauvegardé les données
Dim FunctionData As Object
Dim Data As Variant
Set FunctionData = Project.FunctionOrganiser.FunctionGroups("LOG").Functions("Spectre dB (Input " & NumeroMicro & ")").FunctionData
Data = FunctionData.GetAllValues(True)
j'aurais voulu verifier si la derniere case etait vide et attendre tant qu'elle ne l'est pas
genre
while data(1600,0) is empty wend
mais avant d'être remplie, cette case est de type <type mismatch>, donc je sais pas comment faire ma condition, is empty ne marchant pas :furieux:
(de toute façon je doute que ça marche ...)
comment puis je faire ? thread avec l'userform? (si oui, je veux bien l'adresse d'un cours simple en VB, j'en ai pas trouvé)
merci d'avance !
A voir également:
- Attendre la fin d'une acquisition
- Fin des zfe - Guide
- Logiciel acquisition vidéo usb gratuit - Télécharger - Montage & Édition
- Fin de la 4g en france - Accueil - Guide opérateurs et forfaits
- Word attend la fin d'une action ole - Forum Excel
- Fin de l'archive incorrecte - Forum Compression
4 réponses
Bonjour
sans garantie j'aurais plutôt écris
while isempty(data(1600,0))
pas d'espace entre "is "et "empty"
en espèrant que...
sans garantie j'aurais plutôt écris
while isempty(data(1600,0))
pas d'espace entre "is "et "empty"
en espèrant que...
bjr,
l'editeur l'accepte, mais la meme erreur m'est renvoyé ...
marche pas donc, mais merci d'avoir répondu.
l'editeur l'accepte, mais la meme erreur m'est renvoyé ...
marche pas donc, mais merci d'avoir répondu.
While (Data(1600, 0)) = QNAN
Data = FunctionData.GetAllValues(True)
Wend
permet de bloquer la macro met ne permet plus a l'acquisition de reprendre comme pourrait le faire la msgbox...
donc, cette solution ne semble pas la bonne
j'ai choisi de créer un userform comme une messagebox mais avec une date limite de 20s. le problème étant que quand cette user s'affiche elle bloque le code. j'aimerai la faire devenir modal donc (comme la msgbox non ?)
pour l'instant le soft fonctionne pke j'ai fait un truc dégueulasse (et mauvais pour la santé des épileptiques!)
userform popup s'ouvre et se ferme
et la en fait j'appelle popup qui se ferme pendant 20 secondes.
si je met ma tempo dans userform popup, mon acquisition s'interrompt.
Userform2 est ma form principale, et pour info, waiting:
Des idées ?
merci
pour l'instant le soft fonctionne pke j'ai fait un truc dégueulasse (et mauvais pour la santé des épileptiques!)
Public Sub UserForm_Activate()
popup.Hide
End Sub
userform popup s'ouvre et se ferme
Sub fenetrepopup()
UserForm2.Hide
waiting
Dim Check, start, tempo As Long
Check = Timer
start = Timer
While Check < start + 20
Check = Timer
popup.Show
waiting
Wend
UserForm2.Show
End Sub
et la en fait j'appelle popup qui se ferme pendant 20 secondes.
si je met ma tempo dans userform popup, mon acquisition s'interrompt.
Userform2 est ma form principale, et pour info, waiting:
Public Sub waiting()
Dim i As Integer
For i = 1 To 1000
DoEvents
Next i
Des idées ?
merci