11-30-2011 05:33 AM
Bonjour à toute la communauté national instrument,
Dans le cadre d'un projet je dois utiliser une carte ni-6009 pour acquérir des signaux analogiques et en générer.
Comme j'utilise en parralèle une base de données, je programme sous Windev.
Voici mon problème :
- Je n'arrive pas à générer un signal analogique constant de +3V sur le port Dev1/ai0. Ce dernier servira à alimenter un capteur.
//Mes variables eTaskhandle1 est un entier sans signe eTaskhandle2 est un entier sans signe eErreur est un entier chPortin, ChPortout est une chaîne Data est un réel ENbrEchEcrit est un entier sans signe //Définitions chPortin = "Dev1/ai0" ChPortout="Dev1/ao0" Data=3 eTaskhandle1=0 eTaskhandle2=0 ENbrEchEcrit=0 //Création de la tâche eErreur=AppelDLL32("nicaiu.dll","DAQmxCreateTask","U_gen",&eTaskhandle2) //Lancement eErreur=AppelDLL32("nicaiu.dll","DAQmxStartTask",&eTaskhandle2) //Je définie le port comme une sortie analogique eErreur = AppelDLL32("nicaiu.dll","DAQmxCreateAOVoltageChan",eTaskhandle2,ChPortout,"",0.0,5.0,10348,"") //J'écris 3V eErreur = AppelDLL32("nicaiu.dll","DAQmxWriteAnalogF64",&eTaskhandle2,1,1,10.0,"DAQmx_Val_GroupByChannel",&Data,&ENbrEchEcrit,Null) //Je supprime la tâche une fois finie eErreur=AppelDLL32("nicaiu.dll","DAQmxClearTask",&eTaskhandle2)
Merci d'avance pour votre aide.
12-01-2011 08:02 AM
Bonjour à tous,
Mon problème est résolu voici la réponse.
/Mes variables // quelques constantes NI // DAQmx_Val_Volts = 10348 // DAQmx_Val_Rising = 10280 // DAQmx_Val_FiniteSamps = 10178 // DAQmx_Val_GroupByChannel = 0 eTaskhandle1 est un entier sans signe eTaskhandle2 est un entier sans signe eErreur est un entier chPortin, ChPortout est une chaîne Data est un tableau de réel ENbrEchEcrit est un entier sans signe //Définitions chPortin = "Dev1/ai0" ChPortout="Dev1/ao0" eTaskhandle1=0 eTaskhandle2=0 ENbrEchEcrit=0 //Création de la tâche eErreur=AppelDLL32("nicaiu.dll","DAQmxCreateTask","U_gen",&eTaskhandle2) //Lancement eErreur=AppelDLL32("nicaiu.dll","DAQmxStartTask",eTaskhandle2) //Je définie le port comme une sortie analogique eErreur = AppelDLL32("nicaiu.dll","DAQmxCreateAOVoltageChan",eTaskhandle2,ChPortout,"",0.0,5.0,10348,Null) //J'écris 3V ajoute(Data, 3.0) eErreur = AppelDLL32("nicaiu.dll","DAQmxWriteAnalogF64",eTaskhandle2,1,1,10.0,0,&Data,&ENbrEchEcrit,Null) //Je supprime la tâche une fois finie eErreur=AppelDLL32("nicaiu.dll","DAQmxClearTask",eTaskhandle2)
Cordialement.
Olivier
08-06-2012 07:30 AM
Bonjour, Olivier.
Aujourd'hui moi aussi je cherche à manipuler une carte N.I via Windev.
Pourrais tu me m'aider un peu ?
Cordialement.
Dominique
08-06-2012 07:55 AM
Bonjour Dominique,
Je vais devoir répondre négativement à ta requête. Ça fait plusieurs mois que je n'ai plus travailler sur Windev, je ne te serai pas d'une grande aide. Donnes moi ton adresse mail, je vais tenvoyer les sources de notre programme d'acquisition de tensions.
Si je peux te donner deux conseils avec Windev :
- Renseigne toi bien sur les fonction NIDaq que tu vas utiliser (types et nombre d'arguments, initialisation des fonctions, récupération des erreurs).
- Pour utiliser une fonction NIDaq (donc écrite dans un autre langage que Windev), utilises cette synthaxe
Nombre est un entier
Nombre = AppelDLL32("nicaiu.dll","NomFonction",Argument)
La valeur du nombre te renseignera sur la bonne exécution de la fonction
Olivier
08-06-2012 08:45 AM
J'ai suivie cette syntaxe. la création des voies ne pose pas vraiment de soucie c'est plus au sur la génération de l'horloge et de récupération de valeur que je suis un peu dans le flou.
Ton code pourrait vraiment m'aider. Je t'en remercie d'avance.
Cordialment.
Dominique.
Mail : baillif.dominique@gmail.fr
08-30-2012 03:50 PM
Desolé dominique, je n'ai plus le code source de mon projet. J'espère que tu arriveras à te débrouiller. Cordialement.