Discussions au sujet des autres produits NI

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

Digitaliser un signal analogique CVI

Résolu !
Accéder à la solution

Bonjour,

 

Je possède une PCIe 6323 sur un banc de test multiproduit. Ce banc devant accueillir plusieurs interfaces, chacune d'elle est détrompée électriquement grâce à 4 bits (tension 0V-5v).

 

Au départ l'acquisition de ce codage était faite sur 4 entrées PFI (plus 2 pour d'autre capteur tout ou rien) de la 6323 mais ayant besoin de les récupérer je souhaite faire cette acquisition sur des entrées analogique. J'ai donc créé une tache dans laquelle j'utilise la fonction suivante pour configurer mes entrées:

 

 DAQmxCreateAIVoltageChan (gmxPosageTask, "Dev1/ai10:15", "Codage Posage", DAQmx_Val_Cfg_Default, 0.0, 5.0, DAQmx_Val_Volts,"")

 

Je cherche maintenant à récupérer les valeurs de ces entrées de façon à avoir un 1 pour un niveau supérieur à 2,5V (par exemple) ou un 0 pour une valeur inférieure à 2,5V. J'ai tenté avec un

 

DAQmxReadBinaryU32 (gmxPosageTask, 1, 1.0, DAQmx_Val_GroupByChannel, puiVal, 6, &written, 0)

 

Mais j'ai une eurreur sur puiVaL qui serait trop petit!!!! Pourtant il est déclaré comme unsigned int *puiVal.

Quelqu'un pourrait il m'aider sur ce pb ou me dire si j'utilise la bonne fonction ou pas SVP.

Merci d'avance.

0 Compliments
Message 1 sur 4
5 631 Visites

Bonjour,

 

As tu essayé avec un double plutot qu'un U32? 

Rodéric L
Certified LabVIEW Architect
0 Compliments
Message 2 sur 4
5 627 Visites

Test effectué mais il me dit qu'il attend un pointeur vers un uInt32 et qu'il trouve un pointeur vers double a la place...

0 Compliments
Message 3 sur 4
5 625 Visites
Solution
Accepté par l'auteur du sujet Rich31

N'ayant pas de réponse, j'ai finalement trouvée une solution a mon pb. Si cela peut aider quelqu'un, voici ce que j'ai fait:

 

J'ai réalisé une acqisition des entrées grâce à un

 

DAQmxReadAnalogF64(gmxPosageTask, 1, 1.0, DAQmx_Val_GroupByChannel, puiVal2, 6, &written, 0)

 

Puis j'ai créé un mot de 6 bits en comparant mes valeurs à 2,5V

for ( i=0; i<6; i++)

{

   if ( puiVal2[i]<2,5 )

    {

       (*puiVal) = ((*puiVal) |(0<<i));

    }

    else

    {

        (*puiVal) = ((*puiVal) |(1<<i));

}

 

Voila, je ne sais pas si c'était le plus simple à faire (bien que n'étant pas compliqué) mais si ça peut aider...

 

0 Compliments
Message 4 sur 4
5 609 Visites