le 12-06-2010 08:16 AM
Bonjour, je voudrais jouer une sinusoide en continue dont la frequence peut etre change suivant l'utilisateur via une comande. J'ai trouve l'exemple qui joue le son en continue et j'essaire en vain de mettre ca en sous vi commande par un vi avec differentes commandes. Helas la frequence du son ne change jamais et je n'arrive pas a comprendre pourquoi. Je vous joins un exemple merci de votre aide.
Résolu ! Accéder à la solution.
le 12-06-2010 08:23 AM
le 12-06-2010 09:16 AM
J'ai mis les commandes fréquence et volume dans la boucle while. Mais il ne lit que la valeur a l'initialisation du vi. Si par exemple je met au démarrage 2000 Hz il ne lit sans arrêt que cette fréquence et pareil pour le son. Je sais pas si j'ai bien modifie le vi mais je pense que oui. Merci d'avance
le 12-06-2010 11:33 AM
Bonjour,
C'est tout à fait normal, cela respecte le flux de données, je n'avais pas vu que vous utilisiez le VI de génération comme un sous VI.
Dans ce cas là il faut changer votre méthode de communication des données entre les deux VIs.
Dans votre cas, le VI principal va donner les paramètres une seule fois au sous VIs qui va s'exécuter tant que la boucle while n'aura pas fini de tourner.
Il vous faut mettre en place un moyen de scrutation des paramètres en entrée.
Le plus simple est d'utiliser une variable globale fonctionnelle (FGV en anglais ou "Action Engine).
Dans votre VI Principale il faudra appeller et exécuter le sous VI et également mettre une boucle while qui va mettre à jour les valeurs des commandes dans les variables globales fonctionnelles.
Le sous VI va alors scruter en permanence ces variables dans la boucle while et mettera à jour ses valeurs au niveau du signal généré.
Vous pouvez également utiliser les files d'attentes pour communiquer entre vos deux VIs.
A vous de voir. Je vous conseil les FGVs qui sont plus simples et rapides à mettre en oeuvre pour votre cas.
Cordialement,
le 12-07-2010 03:04 AM
Merci de votre réponse. Pour le moment c'est encore flou car je ne connais pas du tout le fonctionnement des variables globales fonctionnelles. Ca fait 3 heures que je suis dessus et j'en suis toujours au même point , c'est a dire que je n'avance pas sur cette gestion. J'ai fait une recherche sur le site de labview , mais pour le moment l'exemple que j'ai trouve ne m'aide pas du tout. Si vous pouviez plus me mettre sur la voie merci d'avance.
le 12-07-2010 04:19 AM
le 12-07-2010 05:15 AM
Bonjour,
Je viens simplement compléter la solution de Maxime qui est clairement la plus performante.
Si toutefois vous avez toujours un peu de mal avec les FGV, vous pouvez aussi créer des références de contrôle (comme le son ou le bouton stop), et passer leur valeur dans le sous-VI. L'implémentation est un peu plus facile qu'une FGV à partir de votre code. J'ai joint un exemple (LV 8.6, à tout hasard, car vous n'avez pas spécifié votre version).
Cordialement,
Eric M. - Senior Software Engineer
Certified LabVIEW Architect - Certified LabVIEW Embedded Systems Developer - Certified LabWindows™/CVI Developer
Neosoft Technologies inc.
le 12-07-2010 05:45 AM
Bonjour,
Je viens simplement compléter la solution de Maxime qui est clairement la plus performante.
Si toutefois vous avez toujours un peu de mal avec les FGV, vous pouvez aussi créer des références de contrôle (comme le son ou le bouton stop), et passer leur valeur dans le sous-VI. L'implémentation est un peu plus facile qu'une FGV à partir de votre code. J'ai joint un exemple (LV 8.6, à tout hasard, car vous n'avez pas spécifié votre version).
Cordialement,
Je dirai que ta solution Eric est plus efficace que la mienne dans le cas présent, et je la conseille.
Aussi, si vous aviez plusieurs éléments qui devaient écrire / lire sur la même variable je vous inviterai à utiliser les FGVs.
Cordialement,
le 12-08-2010 03:49 AM
Merci a vous deux, je viens de reussir a faire ce que je voulais, j'ai appris le fonctionnement des variables fonctionnelles vraiment merci beaucoup.