Je doit créer une interface graphique pour NI6009 j'ai donc utilisé GTK le problème c'est que je bloque en utilisant un printf il m'affiche bien /dev15 par exemple mais une fois de retour dans ma fonction il m'affiche 2681407 je ne comprend pas vraiment voici mon programme:
int verif;
int channel;
/********************************************************************
Initialisation des ports USB
entrees : Rien
sortie : Sortie avec succes
********************************************************************/
int InititialisationUSB(){
int i;
char tempstr[15], NIdevice1[10], NIchannel[15];
int32 NIerror = 0;
int32 digital_data;
int present_devices[max_devices];
// Paramètres des fonctions NiDAQ
int32 samplesdone;
for (i=1;i<max_devices+1;i++) {
strcpy(NIdevice1, "/DEV");
itoa( i,tempstr,10);
strcat(NIdevice1, tempstr);
printf("%s%s","Module: ", NIdevice1);
NIerror = DAQmxCreateTask ("", &taskHandle);
strcpy(NIchannel,NIdevice1);
strcat(NIchannel,"/port0:1");
NIerror += DAQmxCreateDOChan(taskHandle,NIchannel,"",DAQmx_Val_ChanForAllLines);
NIerror+=DAQmxStartTask(taskHandle);
digital_data= 4095;
NIerror+=DAQmxWriteDigitalU32(taskHandle,1,1,10.0,DAQmx_Val_GroupByChannel,&digital_data,&samplesdone,NULL);
NIerror+=DAQmxStopTask(taskHandle);
NIerror += DAQmxClearTask (taskHandle);
printf("%s%d\n"," ErrorNI: ", NIerror);
if(NIerror==-601175){
channel=NIdevice1;
printf("channel : %s",channel);
}
present_devices[i]=NIerror;
}
verif=1;
i = 1;
while ((i<=max_devices)&&(present_devices[i]!=0)){i++; }
if (i==max_devices+1){
strcpy(NIdevice, "");
printf("Error ADUSB1: No NI device present!");
return 0;
}
strcpy(NIdevice1, "/DEV");
itoa( i,tempstr,10);
strcat(NIdevice1, tempstr);
if ((strcmp(NIdevice,NIdevice1)==0)&&(Init==1)){
printf("Module ADUSB: Initialisation deja faite!");
return 1;
}
else {
strcpy(NIdevice, NIdevice1);
DAQmxGetDevProductType(NIdevice, tempstr, 15);
printf("Initialisation ADUSB reussie sur module %s\n" , NIdevice);
return 1;
}
}
static void information (GtkWidget *wid, GtkWidget *win) // pour afficher le port à utiliser
{
GtkWidget *dialog = NULL;
/* Initialisation */
InititialisationUSB();
printf("\n\n\n les valeurs recu: %d et %d",verif,channel);
int i, Retour;
char NIerrBuff[2048];
int32 NIerror = 0;
// float64 analog_data_list[8];
float64 Valeur_Analogique[2];
/* Sorties logiques sur le port 0 et le port1 valeur simple LSB/MSB*/
if (Init != 0){
for( i=0;i<=0xFF;i++){
Retour=SortieLogique(i);
sleep(10); // 98 donne 100ms et 7.88 donne 10ms
}
}
else {
printf("\n Erreur ADUSB5: Initialisation module non faite!");
}
printf("%d",channel);
dialog = gtk_message_dialog_new (GTK_WINDOW (win), GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, "%d",channel);
gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER);
gtk_dialog_run (GTK_DIALOG (dialog));
gtk_widget_destroy (dialog);
}
Merci d'avance de votre aide... je suis perdu la
A voir également:
Création d'une interface graphique pour NI6009 avec GTK
J'ai réussi à afficher ma valeur j'ai enlever deux fonction j'ai tous mis dans la même me reste maintenant à modifier le titre sur les bouton car c'est tous le temps noté information ainsi que la taille comment faire svp ? merci