le 11-10-2010 02:53 AM
#include <stdio.h> #include <NIDAQmx.h> #define DAQmxErrChk(functionCall) if( DAQmxFailed(error=(functionCall)) ) goto Error; else int main(void) { int32 error=0; TaskHandle taskHandle=0; uInt8 data[8]={0,1,0,1,1,1,1,1}; char errBuff[2048]={'\0'}; /*********************************************/ // DAQmx Configure Code /*********************************************/ DAQmxErrChk (DAQmxCreateTask("",&taskHandle)); DAQmxErrChk (DAQmxCreateDOChan(taskHandle,"Dev1/port0/line0:7","",DAQmx_Val_ChanForAllLines)); /*********************************************/ // DAQmx Start Code /*********************************************/ DAQmxErrChk (DAQmxStartTask(taskHandle)); /*********************************************/ // DAQmx Write Code /*********************************************/ DAQmxErrChk (DAQmxWriteDigitalLines(taskHandle,1,1,10.0,DAQmx_Val_GroupByChannel,data,NULL,NULL)); Error: if( DAQmxFailed(error) ) DAQmxGetExtendedErrorInfo(errBuff,2048); if( taskHandle!=0 ) { /*********************************************/ // DAQmx Stop Code /*********************************************/ DAQmxStopTask(taskHandle); DAQmxClearTask(taskHandle); } if( DAQmxFailed(error) ) printf("DAQmx Error: %s\n",errBuff); printf("End of program, press Enter key to quit\n"); getchar(); return 0; }
Une simple écriture sur un port numérique avec la gestion d'erreur associée...Je ne trouve pas ça complexe...
On a 6 fonctions qui suivent un ordre logique :
DAQmxCreateTask
DAQmxCreateDOChan
DAQmxStartTask
DAQmxWriteDigitalLines
DAQmxStopTask
DAQmxClearTask
Cordialement,
le 11-10-2010 05:17 AM
Re Bonjour,
Y aurait-il un interlocuteur ayant développé sur NIDAQ trad ?
Serait-il possible d'avoir un exemple des instructions nécessaires pour:
- initialiser la carte 6025E pour faire une sortie sur A0 ? Ily a beaucoup d'instructions, mais lesquelles et dans quel ordre ?
Calibrate_E_Series(1, ND_SELF_CALIBRATE, ND_USER_EEPROM_AREA,0.0); //plantage sans retour d'erreur
status = AO_Configure (1, 1, 1,0, 0, 1) ;
status = AO_Write(1, 1, 5) ;
- comment mettre le port2 en bidirectionnel ? si je mets 2 comme indiqué dans la doc, ça ne marche pas
status =DIG_Prt_Config(1, 2, 0,2) ;
11-10-2010 05:30 AM - modifié 11-10-2010 05:30 AM
Re Bonjour,
Y aurait-il un interlocuteur ayant développé sur NIDAQ trad ?
Serait-il possible d'avoir un exemple des instructions nécessaires pour:
- initialiser la carte 6025E pour faire une sortie sur A0 ? Ily a beaucoup d'instructions, mais lesquelles et dans quel ordre ?
Calibrate_E_Series(1, ND_SELF_CALIBRATE, ND_USER_EEPROM_AREA,0.0); //plantage sans retour d'erreur
status = AO_Configure (1, 1, 1,0, 0, 1) ;
status = AO_Write(1, 1, 5) ;
- comment mettre le port2 en bidirectionnel ? si je mets 2 comme indiqué dans la doc, ça ne marche pas
status =DIG_Prt_Config(1, 2, 0,2) ;
Il faut savoir que DAQ Trad n'est plus supporté officiellement par NI. Ce qui explique la difficulté de trouver des documents / exemples liés à ce driver.
D'où l'intérêt d'utiliser DAQmx. En général les utilisateurs passent de DAQ Trad à DAQmx avec le temps...
DAQmx est le driver qui est utilisé par la plus grande part des utilisateurs de produits NI. En utilisant ce driver vous aurez plus de chance d'avoir une réponse de la part de NI mais aussi des utilisateurs de ce forum.
Rien que la fonction de Calibration ou il faut choisir la ROM sur laquelle écrire montre les défauts de DAQ Trad.
Si quelqu'un de NI ayant envie de se mettre aux fonctions DAQ Trad passe par là, il pourra peut être vous aider...