le 08-28-2010 04:32 AM
Bonjour,
Pour une application, je dois lire deux entre analogique en même temps.
J'utilise pour mes tests l'USB-6210 et pour la prod le PCI-6232.
J'ai réalisé un petit programme en C avec :
DAQmxCreateTask
DAQmxCreateAIVoltageChan ( ..., "Dev1/ai0", ..., DAQmx_Val_RSE, ...);
DADmxStartTask(..);
Jusque là... tout va bien, je peux lire les info avec
DAQmxReadAnalogScalarF64 (...);
puis je défini en parallèle la deuxième lignes de la même manière mais avec "Dev1/ai1"
et là, j'ai une erreur qui m'indique que le divice est déjà utilisé ???
Pouvez-vous m'aider svp.
Merci
Résolu ! Accéder à la solution.
le 08-30-2010 02:27 AM
Normal, on ne peut créer qu'une seule tâche d'aquisition pour un périphérique donné !!
Par contre tu peux créer une tâche avec plusieurs voies configurées...
Regarde les exemples fournis avec CVI , il y a tout ce qu'il faut.
slts,
08-30-2010 02:35 AM - modifié 08-30-2010 02:36 AM
Tout dabord, merci pour la réponse,
Je ne comprends pas, je fais régulièrement la même opération avec les lignes digitales sans aucun problème...
Quoi qu'il en soit, j'ai installé tous les exemples en C et je n'ai rien trouvé qui puisse m'aider ?
Je peux, en effet, définir une tache avec plusieurs lignes (a0:a1 par exemple) mais comment lire uniquement la valeur sur la ligne qui m'intéresse ?
Merci
le 08-30-2010 03:46 AM
Il existe une différence notable entre les DI et les AI, les AI utilisent un convertisseur analogique/numérique qui est multiplexé, ce qui permet d'avoir un seul CA/N pour toutes les voies de la carte, de même l'horloge d'échantillonage est la même pour toutes les voies analogiques.
sinon en appelant la fonction Read tu recois un buffer contenant les échantillons pour toutes tes voies, à toi de récupérer les valeurs que tu souhaites dans ce tableau.
Mais je t'invite a consulter les exemple fournis avec le driver DAQmx et à bien lire les aides des différentes fonctions, cela devrait t'éclairer grandement.
le 08-30-2010 04:24 AM
Bonjour,
J'ai regardé tous les exemples fournis en C, mais aucun ne montre une lecture sur plusieurs lignes.
ce que j'ai trouvé en regardant la doc, c'est que :
- Dans la fonction DAQmxCreateAIVoltageChan, je dois définir la plage à lire soit : " dev01/ai0:1" pour lire les voies 0 à 1
- Pour la lecture, je dois utiliser la fonction ReadAnalogF64 avec le numSampsPerChan à 1, le fillmode GroupbyChanel
Dans mon cas, je veux lire un échantillons par voie, donc je suppose que le ArraySizeInSamps doit être 2 et que je dois founir un tableau de deux éléments à remplir par la fonction...
Est-ce bien cela ?
Merci
Encore une petite question, pouvez-vous me confirmer ceci:
- pour définir les voies de 0 à 4 je dois écrire dev0/ai0:ai4
- pour définir les voies 0 et 4 je dois écrire dev0/ai0:dev0/ai4 -> pas certain de ceci
Re-Merci 😉
le 08-31-2010 03:38 AM
C'est cela oui.
Pour les voies : soit une liste de voies séparées par des virgules : dev1/ao0,dev1/ao2
soit si elles se suivent un intervalle de voies : dev1/ao0:4
Slts
le 09-01-2010 01:40 AM
Uper,
merci, ca fonctionne 😉