C++ PCI-6703 Générer une tension analogique

Bonjour,
Je suis nouveau  sur Measurement Studio for VC++ et j'ai besoin de votre aide.
J'ai une carte PCI-6703 avec un boitier SCB-68.
J'ai installé les drivers nécessaires NI-DAQmx avec le Measurement & Automotion Explorer.
J'ai installé le logiciel Measurement Studio 2009 (version d'évaluation en attendant la validation pour que mon chef de projet achète la version complète).
Je travaille sous Visual Studio 2008 et sous VC++ (je ne peux pas utiliser LabView (sinon c'était plus facile) pour pouvoir synchroniser les codes de tout le projet).
Je souhaite générer des tensions analogiques (10V) à la sortie de la carte PCI-6703 pour le boitier SCB-68. Ce dernier va envoyer les signaux à une carte électronique pour allumer/éteindre des leds.
Je me suis bloqué au niveau de mon programme. J'ai essayé ces lignes de codes mais ça ne marche pas (je me suis inspiré des codes que j'ai trouvé sur le forum mais je pense qu'il a des lib qui ne collent pas) :
#include <cvirte.h>
#include "windows.h"
#include <NIDAQmx.h>
int main (int argc, char *argv[])
    TaskHandle daqmxhandle;
    if (InitCVIRTE (0, argv, 0) == 0)
        return -1;    /* out of memory */
    DAQmxCreateTask ("", &daqmxhandle);
    DAQmxCreateAOVoltageChan (daqmxhandle, "Dev1/ao0", "", -10.0, 10.0,
                              DAQmx_Val_Volts, "");
    for(int i=0; i<10;i++)
     DAQmxWriteAnalogScalarF64 (daqmxhandle, 1, 10.0, 10, 0);
     Sleep(3000);   
     DAQmxWriteAnalogScalarF64 (daqmxhandle, 1, 10.0, 0, 0);   
     Sleep(3000);
    DAQmxClearTask (daqmxhandle);
    return 0;
-----------------------------------------------Erreur----------------------------------------------------------
1>------ Rebuild All started: Project: test1, Configuration: Debug Win32 ------
1>Deleting intermediate and output files for project 'test1', configuration 'Debug|Win32'
1>Compiling...
1>test1.cpp
1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7256) : warning C4005: 'THREAD_BASE_PRIORITY_MIN' : macro redefinition
1>        c:\program files\national instruments\measurementstudiovs2008\vcnet\include\cvidef.h(140) : see previous definition of 'THREAD_BASE_PRIORITY_MIN'
1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7257) : warning C4005: 'THREAD_BASE_PRIORITY_IDLE' : macro redefinition
1>        c:\program files\national instruments\measurementstudiovs2008\vcnet\include\cvidef.h(143) : see previous definition of 'THREAD_BASE_PRIORITY_IDLE'
1>Compiling manifest to resources...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1
1>Copyright (C) Microsoft Corporation.  All rights reserved.
1>Linking...
1>test1.obj : error LNK2019: unresolved external symbol _DAQmxClearTask@4 referenced in function _main
1>test1.obj : error LNK2019: unresolved external symbol _DAQmxWriteAnalogScalarF64@28 referenced in function _main
1>test1.obj : error LNK2019: unresolved external symbol _DAQmxCreateAOVoltageChan@36 referenced in function _main
1>test1.obj : error LNK2019: unresolved external symbol _DAQmxCreateTask@8 referenced in function _main
1>test1.obj : error LNK2019: unresolved external symbol _InitCVIRTEEx@12 referenced in function _main
1>C:\Documents and Settings\Default\Mes documents\Visual Studio 2008\Projects\test1\Debug\test1.exe : fatal error LNK1120: 5 unresolved externals
1>Build log was saved at "file://c:\Documents and Settings\Default\Mes documents\Visual Studio 2008\Projects\test1\test1\Debug\BuildLog.htm"
1>test1 - 6 error(s), 2 warning(s)
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========

Bonjour,
Votre problème vient du mode d'acquisition : votre tache fait l'acquisition d'une seule valeur (échantillon) à la fois.
Ce qui vous limite alors, c'est la vitesse de votre cpu : la boucle while (d'ailleurs le wait 0ms est inutile) tourne a vitesse maximale, mais non cadencée ! Votre calcul est donc complètement faux.
Pour résoudre ceci, il faut acquérir N échantillons, et faire un traitement sur le tableau de valeurs pour en déduire la fréquence directement (il y a des vi's déjà créés pour cela)
En espérant que cela vous aide,
P.S. vous avez posté sur le forum anglais, la prochaine fois, faites le dans la communauté française, vous aurez une réponse plus rapidement.
Bonjour,
Votre problème vient du mode d'acquisition : votre tache fait l'acquisition d'une seule valeur (échantillon) à la fois.
Ce qui vous limite alors, c'est la vitesse de votre cpu : la boucle while (d'ailleurs le wait 0ms est inutile) tourne a vitesse maximale, mais non cadencée ! Votre calcul est donc complètement faux.
Pour résoudre ceci, il faut acquérir N échantillons, et faire un traitement pour en déduire la fréquence directement.
En espérant que cela vous aide,
V-F

Similar Messages

  • Générer une tension puis la mettre en DLL.

    Bonjour,
    J'aimerais réaliser un programme permettant de faire varier une tension1 en fonction d'un temps1, puis une tension2 en fonction d'un temps2. Ces 2 tensions doivent etre généré sur la même voie de sortie chacune leur tour. Après avoir créé se programme sous CVI 7.1.1, j'aimerais le passer en DLL pour le faire fonctionner avec TestStand.
    Je vous joint mon petit bout de programme.
    Merci par avance.
    Miguel
    Pièces jointes :
    Tension_alim_prog.c ‏3 KB
    Tension_alim_prog.h ‏2 KB

    Bonjour Manu23,
    Afin de pouvoir déclencher et stopper ta mesure sur 2 seuils différents tu dois utiliser le noeud propriété suivant:
    La fênetre de déclenchement prend comme paramètre le seuil haut et le seuil bas.
    Cordialment
    Jean-Baptiste C.
    National Instruments France
    #adMrkt{text-align: center;font-size:11px; font-weight: bold;} #adMrkt a {text-decoration: none;} #adMrkt a:hover{font-size: 9px;} #adMrkt a span{display: none;} #adMrkt a:hover span{display: block;}
    >> Téléchargez dès maintenant toutes les présentations techniques !

  • Labwindows/CVI générer 2 tensions différentes en meme temps

    Bonjour,
    Voici mon probleme, je souahiterais générer deux tensions analogique diférentes en meme temps.
    Pour cela je posséde deux cartes d'acquisitions NI 9263 qui sont dans un Ni cDAQ-9172.
    J'ai essayé de faire la generation de ces deux signaux dans une meme tache, mais je ne sais pas comment envoyer un signal different sur chaque voie.
    La seconde solution a été de générer deux taches, synchronisées sur un trigger pour les démarrer en meme temps, la encore j'ai un probleme, CVI me renvoie une erreur disant que la resource spécifiée est réservée.
    voici l'organisation de mon code:
    DAQmxCreateTask (Master task)
    DAQmxCreateAOVoltageChan(Master task)
    DAXmxCfgSampClkTiming(Master task)
    DAQmxCreateTask (slave task)
    DAQmxCreateAOVoltageChan(slave task)
    DAXmxCfgSampClkTiming(slave task)
    GetTerminalNameWithDevPrefix(Trigger)
    DAQmxWriteAnalogF64 (Master task)
    DAQmxWriteAnalogF64 (Slave task)
    Avez vous une solution pour resoudre ce probleme?
    Je vous remercie,
    cordialement
    Résolu !
    Accéder à la solution.

    Bonjour,
    Je vous remercie de votre réponse. Je viens d'essayer ce que vous me dite. Mais cela ne change rien, je me retrouve avec les deux signaux identiques. En divisant le nombre d'echantillons par rapport a mon tableau, je n'envoie alors que la premiere partie de mon tableau, mais toujours sur les deux sorties. et non premeir partie de mon tableau sur une voie et deuxieme partie sur la deuxieme
    voici mon code:
     double Fe=100000;
     double Vmin=-10, Vmax=10;
     int N_samples= 80000;
     TaskHandle AOtaskHandle=0;
    Generation(tableau_pulse, pressure); // creer un signal en marche d'escalier
     DAQmxCreateTask("",&AOtaskHandle);    
     DAQmxCreateAOVoltageChan (AOtaskHandle, "Dev1/ao1", "", Vmin, Vmax, DAQmx_Val_Volts, NULL);
      DAQmxCreateAOVoltageChan (AOtaskHandle, "Dev1/ao0", "", Vmin, Vmax, DAQmx_Val_Volts, NULL); 
     DAQmxCfgSampClkTiming (AOtaskHandle, "", Fe, DAQmx_Val_Rising,DAQmx_Val_ContSamps, N_samples);                 
     DAQmxSetWriteAttribute (AOtaskHandle, DAQmx_Write_RegenMode, DAQmx_Val_DoNotAllowRegen);
     DAQmxWriteAnalogF64 (AOtaskHandle, N_samples/2, FALSE, 5, DAQmx_Val_GroupByScanNumber, tableau_pulse , NULL, NULL); tableau_pulse
     // DAQmx Start Code
     DAQmxStartTask(AOtaskHandle); 
    Delay (0.8);
     Error: 
      if( AOtaskHandle )
       // DAQmx Stop Code
       DAQmxStopTask(AOtaskHandle);          
       DAQmxClearTask(AOtaskHandle);          
       AOtaskHandle = 0;             
     free(tableau_pulse);
    cordialement

  • Peut-on générer une clé KDM avec le format DCP

    Bonjour,
    Je dois faire un fichier DCP pour un cinéma avec une clé KDM. Media encoder me propose un export DCP. J'ai essayé, mais le fichier ne pèse que 3go pour 8 minutes alors que j'ai lu qu'on doit avoir 20go par minute.
    De plus je ne vois pas comment générer cette clé.
    Merci de tous vos conseils avisés!

    Bonjour,
    Je vous remercie pour l'attention que vous avez apporté à ma solution.
    J'ai "écrété"  le signal carré car le signal généré par le VI "Waveform carré"  est compris entre +2.5 V et -2.5 V (voir graphe "signal de la waveform" du VI en pièce jointe).
    Votre module USB 6009 peut générer un tension comprise entre 0 et 5 V : si je ne l'écrète pas, il va indiquer une erreur.
    J'ai juste extrait de la Waveform les valeurs de tensions (qui ***** présente sous forme d'un tableau),  j'ai utilisé le VI "écrété" pour retirer la composante négative du signal.
    Puis, j 'ai regénéré la Waveform en reprenant les mêmes caractéristiques temporels (même écart de temps entre chanque échantillon et même fréquence de génération)  avec les valeurs de tensions issues du VI "écrété".
    Cordialement
    Guillaume D
    Pièces jointes :
    test1.vi ‏17 KB

  • Etage de sortie PCI-6703

    Bonjour,
    J'ai un petit soucis sur
    une voie d'une carte PCI-6703. Un étage de sortie est défectueux et
    j'aimerais avoir un schema d'un etage de sortie. J'ai repéré une
    résistance défectueuse mais ce schema m'aiderais.
    En ce qui
    concerne l'envoi en réparation, les délais sont incompatibles avec mon
    planning et le montage à l'air facilement réparable.
    Merci
    Mathieu 
    Résolu !
    Accéder à la solution.

    Bonjour,
    Malheureusement nous ne pouvons fournir de schéma électronique de nos cartes.
    Cependant, s'il s'agit d'une opération vitale, ou de questions précises, je vous invite à contacter le commercial de terrain responsable de votre région qui pourra peut être vous fournir certaines informations.
    Cordialement,

  • Insérer une variable dans une boite de dialogue

    Bonjour,
    Je souhaite insérer une variable (valeur extraite d'un tableau Excel) dans une boite de dialogue. J'ai vu qu'on pouvait modifier le VI Express de la boite de dialogue mais je ne vois pas comment insérer cette variable dans le message d'entrée.
    D'avance merci

    Hello,
    First, I think that you can get more help if you write in english. Because i didn't understand completly your question.
    What you're trying to do it's simply what's in the attached picture? it's not all the code. Simply the read cell and the dialog.
    Software developer
    www.mcm-electronics.com
    PS: Don't forget to rate a good anwser ; )
    Currently using Labview 2011
    PORTUGAL
    Attachments:
    excel_dialolog.JPG ‏5 KB

  • Comment insérer une balise PA dans la dernière version de DW CC2014 ?

    Bonjour,
    Comment insérer une balise PA dans la dernière version de DW CC2014 ?
    "Traçage d'une seule balise div PA ou de plusieurs balises div PA à la suite
    Dans la catégorie Mise en forme du panneau Insertion, cliquez sur le bouton Tracer un div pour un élément PA ."
    Impossible de trouver la " catégorie Mise en forme du panneau Insertion " ?
    It's DW CC2014 and I don't find how i can insert tag PA. where is the command in "insertion" ?

    Bonjour Philippe,
    vous pouvez utiliser Adobe Dreamweaver * Utilisation des balises div. Contraire a «Choisissez Insertion > Objets mise en forme > Balise Div.» dans mon DW Allemande ce seulement «insérer >>> Div».
    Bonne chance
    Hans-Günter

  • Comment je peux récupérer une chaine de caratères d'un fichier(txt par expl) dans une ligne (spécifiée) et une colonne (aussi spécifiée) avec notre adorable software LABVIEW

    Salut à tous,
    Comment je peux récupérer une chaine de caratères d'un fichier(txt par expl) dans une ligne (spécifiée) et une colonne (aussi spécifiée) avec notre adorable software LABVIEW.
    Thx
    Nizar
    Résolu !
    Accéder à la solution.

    Si ton fichier est un fichier tableur ce qu'a dit yohann me parait le mieux. Par contre si c'est un fichier texte qui contient une chaine au format tableur (sepération avec des tabulations) il faut utiliser "lire un fichier texte" + "Convertir un chaine au format tableur en tableau" et ensuite indexer la case qui t'intéresse.
    Maintenant si tu as un simple fichier texte  et que tu veux lire un couple ligne/colonne qui désigne un caractère précis il faut utiliser "définir la position dans le fichier" en connaissant la largeur de ton fichier texte. et la tu n'as plus qu'à rentrer dans offset: indice_ligne*largeur+indice_colonne comme une vieille réminiscence du c.
    Sebastien DEVISSCHER - Nerys

  • Générer une séquence TTL

    Bonjour à tous,
    Pour pouvoir trigger une appli externe, je souhaiterais pouvoir créer une interface LV pour générer une séquence TTL 5.0v (via port série? ou adaptateur USB-TTL?)
    Le seul paramétrage requis étant la durée entre chaque impulsion TTL à générer. Pensez vous que cela soit possible? Je connais un peu l'architecture LV mais je ne suis pas familier avec les fonctions gérant les I/O série ou USB.
    merci d'avance pour votre aide

    bonjour à tous,
    pour piloter une ligne du port série, tu peux piloter par exemple la ligne RTS 
    c'est une fonction VISA du port serie
    par contre elle n'est pas en 0 - 5V mais -10 -> + 10V
    Luc Desruelle | Voir mon profil | LabVIEW Code & blog
    Co-auteur livre LabVIEW : Programmation et applications
    CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW
    CLD : Certified LabVIEW Developer / Certifié Développeur LabVIEW

  • En quel format transférer une session "Soundscape" en session "Logicpro"?

    En quel format transférer une session "Soundscape" en session "Logicpro"?

    Je croix que vous devrez essayer le format OMF.

  • Comment récupérer une ancienne sauvegarde sur iCloud?

    je voudrais récupérer une sauvegarde du mois d'aout 2012 mais il ne m'apparait plus qu'un suavegarde faite aujourd'hui .
    En fait il me manque beaucoup de mes contacts et je comptais les récupérer avec cette ancienne sauvegarde qui apparaissait au début mais plus maintenant . Comment faire ?  De plus je suis sous iOS 6.1.3 et il ne veut pas mettre à jour mon Iphone et m'installer la version iOS 7.0.3 !! je ne sais pas quoi faire non plus.
    Merci pour vos réponses

    je voudrais récupérer une sauvegarde du mois d'aout 2012 mais il ne m'apparait plus qu'un suavegarde faite aujourd'hui .
    En fait il me manque beaucoup de mes contacts et je comptais les récupérer avec cette ancienne sauvegarde qui apparaissait au début mais plus maintenant . Comment faire ?  De plus je suis sous iOS 6.1.3 et il ne veut pas mettre à jour mon Iphone et m'installer la version iOS 7.0.3 !! je ne sais pas quoi faire non plus.
    Merci pour vos réponses

  • Est-il possible de transférer une synchronisation iphone depuis un pc sur un MAC

    Est-il possible de transférer une synchronisation d'un iphone depuis un pc sur un MAC sans perde toutes les données de l'iphone ????

    Bonjour,
    Vous savez les outil de transfert?  Il y a un logiciel de iPhone peut aider à transférer les données de iPhone vers PC. Par example:
    Transférer musiques iPhone vers Pc
    transférer les musiques de iPhone vers PC

  • Error 10403 at AO Buffer COnfig, PCI-6703

    Using any of the solutions generated by the DAQ solution wizard (such as Custom Funciton Generator) for multipoint waveforms, I always get Error 10403 at the AO Buffer Config. I saw this problem posted earlier, but there was no solution.
    Labview 6.0
    NI-DAQ ver. 6.9.1
    PCI-6703
    Win2000
    Any thoughts?
    Thanks,
    A. Flannery

    Hi Tony,
    First of all, I am not NI. I am just a guy who has worked with NI stuff and have learned what to look out for. All I can do is try to help, so here goes.
    The -10403 error is the driver telling you that you are attempting something that is not possible. After reading your response, I broke out a catalog to figure what is up with the 6703.
    First, the block diagram shows no on-board buffer. This is bad.
    Second, the fine print (see page 396) shows that only "Programmed I/O" is available (see Data Transfers). This is also bad.
    I would suggest you contact NI directly to discuss the posiblity of trading in the 6703 towards credit for an interface that will meet your needs.
    If you have any other questions that you think I may be ab
    le to help with, "fire-away" (just don't kill the messenger:<)) ).
    Just trying to help,
    Ben
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • J'essaie d'insérer une animation An dans Dw mais il manque un plug-in-?

    J'essaie d'insérer une animation Edge Animate dans une page de Dreamweaver mais j'ai le message suivant "impossible de charger le plug-in" quand je veux le visualiser en direct.

    Bonjour Christian-
    Pouvez-vous mettre un lien vers votre fichier de sorte que nous pouvons jeter un coup d'oeil dans un navigateur? Vous devrez peut-être supprimer l'animation Flash manuellement via le mode de code dans Dreamweaver. Veuillez noter que cette question est probablement mieux posée dans le forum Dreamweaver, comme cette équipe gère l'intégration.
    http://forums.adobe.com/community/dreamweaver?view=discussions
    Ce message a été traduit machines.
    Can you post a link to your file so that we can take a look at it in a browser?  You may need to remove the Flash animation manually via code mode in Dreamweaver.  Please note that this question is probably better asked in the Dreamweaver forum, as that team handles the integration.
    Thanks,
    -Elaine

  • Créer une sortie analogique 6025E

    Bonjour,
    j'aimerai savoir comment procéder pour créer une sortie analogique (AO0) me permettant d'envoyer une tension comprise entre 0 et 5 V à un débimètre massique (Brooks, Mass Flow Controller, 5580 TR). 
    J'ai pour le moment réussi à créer une entrée analogique (AI15) me permettant de récuperer la valeur du retour.
    Le tout en passant par la carte PCI-6025E.
    Merci d'avance
    Résolu !
    Accéder à la solution.

    Je comprends mieux ce que tu veux faire.
    Il faut que tu utilises les VI qui sont dans la palette E/S de mesures, DAQmx acquisition de données.
    Je te conseille également de regarder dans les exemples de code fournit avec LabVIEW (Menu Aide, Recherche d'exemples...), tu devrais trouver ton bonheur ;-)
    Cordialement
    Benoît C.
    Certified LabVIEW Associate Developer

Maybe you are looking for

  • Error while activating the ODS "Request No longer Exist in ODS".

    Hi All, I had deleted one request from four ODS's before completely loaded from R/3. Now when i am trying to activate from one of them using process chain it is giving me the error massage "Request No longer Exist in ODS". But when i am manually acti

  • HDD for Time Machine and other stuff

    Just a very short question.. Can I use my external harddrive for Time Machine and for example putting files on it to take it to my friend, or the otherway around, put files on it and take it back home? The reason I ask this is that I hooked up a USB

  • How to get my applet signed

    Hi I have an applet which has the functionality to print images.when i am working with appletviewer on local machine it works. when i tried to print through browser i am getting access denied error...i came to know that my applet has to get signed so

  • Problem in connecting JSP with Oracle 9i.

    Hi, I am having problem in connecting JSP with Oracle 9i. I am using windows XP and my JDK version is 1.4. For executing JSP I am using "jakarta-tomcat-5.5.4-preconfigured". My database name is global. I have set java_home, j2ee_home, oracle_home, pa

  • Can't see my layout-window anymore

    Hello everybody, I have a problem! I opened a domain in iWeb but now I don't see the layout-window anymore, even if I open a other domain. There is just the navigation-bar on the top starting with "iWeb ..." I have to do some changes, please help me.