Création d'une interface graphique pour NI6009 avec GTK

Fermé
horus - 5 janv. 2013 à 15:45
 horus - 5 janv. 2013 à 16:47
Bonjour,

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:

1 réponse

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
0