Discussions au sujet des autres produits NI

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

Envoyer un signal pendant une duree T

Bonjour,

 

Je souhaite envoyer des signaux de fréquence f donnée avec une Fe=10*f, pendant une durée T bien déterminée!!

J'ai quelques soucies pour géré le temps pendant lequel le signal est généré...

 

Voici ma fonction d'envoie:

 

void Signal(int f){
int32 error=0;
TaskHandle taskHandle=0;
float64 data[1000];
char errBuff[2048]={'\0'};
bool32 done=0;
int i=0;
int32 written;
int Freq=1000*f;
int Fe=100*Freq;


for(;i<1000;i++)
data[i] = 5.0*sin((double)i*2.0*PI*Freq/Fe); // /!\ Formule pour une fr�quence F!!!

/*********************************************/
/*/ DAQmx Configure Code
/*********************************************/
DAQmxErrChk (DAQmxCreateTask("",&taskHandle));

DAQmxErrChk (DAQmxCreateAOVoltageChan(taskHandle,
"Dev1/ao0", //The physical name of the channel
"", //The name to associate with this channel
-10.0, //10v minimum
10.0, //10v maximum
DAQmx_Val_Volts,
NULL));

DAQmxErrChk (DAQmxCfgSampClkTiming(taskHandle,
"", // external clock source line or use "" for internal clock
Fe, // expected rate of external clock or actual rate of internal clock
DAQmx_Val_Rising, // acquire on rising or falling edge of ticks
DAQmx_Val_ContSamps, // continuous or finite samples
1000));

/*********************************************/
/*/ DAQmx Write Code
/*********************************************/
DAQmxErrChk (DAQmxWriteAnalogF64(taskHandle,1000,0,1,DAQmx_Val_GroupByChannel,data,&written,NULL));

/*********************************************/
/*/ DAQmx Start Code
/*********************************************/
DAQmxErrChk (DAQmxStartTask(taskHandle));

printf("Generating voltage continuously\n");
/*********************************************/
/*/ DAQmx IsDone Code
/*********************************************/
DAQmxErrChk (DAQmxIsTaskDone(taskHandle,&done));

 

 

 

J'ai tenter de changer les parametres de la fonction NIDAQmWriteAnalogF64() mais sans succès.

 

Une idée? Merci d'avance!

0 Compliments
Message 1 sur 2
3 239 Visites

Bonjour Paul,

 

Une génération finie te permettrait de générer un nombre d'échantillons fixe et déterminé au préalable et ceci à une fréquence (Fe=10*f) connue et donc tu auras une génération qui aura une durée fixe est déterminée. Dans ton exemple, la generation et continue eet donc ne peut être arrétée que par une erreur ou la décision de l'utilisateur (décision logicielle).

 

Cordialement,

 

 

Jérémy M. | LinkedIn - Contact
Don't forget to give Kudos to good answers.

Message 2 sur 2
3 056 Visites