IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Automatisation de mesure, code non fini


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Automatisation de mesure, code non fini
    Bonjour,
    je suis un tres gros debutant en programmation a t elle point que je ne sais meme pas en quoi est le code que j ai ecrit est! Je sais que je develope sous le logiciel LabWindow/CVI.
    Le but de mon programme est d'automatiser une mesure, je pilote par GPIB une source laser et un lambdametre. Voila je vous explique en detail qu'est ce que je doit faire.
    Je cherche a mesurer le temps de stabilisation en longueur d'onde de ma source laser pour cela :
    • Je mesure la temperature de mon laser (TempAmbian).
    • J'allume mon laser + Depart chrono (T1)
    • Je mesure la longueur d'onde
    • Je reboucle la mesure de longueur donde juska ce que j'ai 2 valeur de longueur donde egale qui se suivent (3 valeur egal qui se suivent seraient l'ideal).
    • J'eteint mon laser + Fin du chrono (T2)
    • Calcul du temps de stabilisatioon (T=T2-T1)
    • Je mesure la temperature de mon laser (TempOsics)
    • Si TempOsics=TempAmbian, alors je recommence la mesure en longueur d'onde

    J'effectue ces mesures dans un temps donne.

    Si vou spouvez m'aider a finir ce code, je met en majuscule les commande que j'aimerai faire mais que j'arrive pas a transcrire
    Enfin j'aimerai aussi, recuperer les valeur de temperature (TempOsics) de longueur d'onde (Lambda) et de temps (duree) dans un fichier excel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    int main (int argc, char *argv[])
    {
    	int Start, Duree, T1, T2;
    	long entier;
    	float L=0,Temp=0, Delta=1, *test, TempOsics=0, TempAmbian,a;
    	int i=1, x, NbrMes=10000, j=NbrMes/2+1, z;
    	int HandleB, HandleO, Lambda=1,pLambda=0 ;
    	float buffer[20000];  
    	char reponseT[50], question[50], duree[8];
    	int Time=0, MesTime=5;
     
     
    	if (InitCVIRTE (0, argv, 0) == 0)
    		return -1;    /* out of memory */
     
    //Init 
    	HandleB = Initialise_Burleigh(4);
    	HandleO = Initialise_hp(10);
    	envoi_osics(HandleO,"CH2:PASS OPTO");	//autorise les fonction cachées
     
    //Mesure TempAmbiante
    	sprintf (question, "ch2:tmes?");
    	envoi_question_osics(HandleO, question ,reponseT);
    	sscanf (reponseT, "CH2:TMES=%f", &TempAmbian);
    	printf("Temp Ambiante : %f \n",TempAmbian);	
     
    	while (Time<MesTime) \\ J EFFECTUE TOUTE LES MESURE TANT QUE LE TEMPS DE FONCTIONNEMENT N’A PAS DEPASSER LA CONSIGNE QUE JE CHOISI{
    //Mesure temperature Osics
    	sprintf (question, "ch2:tmes?");
    	envoi_question_osics(HandleO, question ,reponseT);
    	sscanf (reponseT, "CH2:TMES=%f", &TempOsics);
    	printf("Temp osics : %f \n",TempOsics);
     
     
    	if (TempOsics == TempAmbian )// SI LA TEMPERATURE OSICS EST A LA TEMPERATURE AMBIANTE ALORS J EFFECTUE LES MESURE DE LONGUEUR D ONDE		{
    		envoi_osics(HandleO,"CH2:ENABLE");	//allume LASER
    		T1=GetSystemTime; \\START CHONO (T1)
    		Delay(1);	//delay pour que le burleigh est le tps de lire une valeur
     
    		// Si lambda different que lambda precedent on continue de mesurer
    		while (Lambda!=pLambda)
    			{
    //Mesure de la longueur d'onde 
    			L =  Lit_Burleigh(HandleB);	//lecture burleigh
    			z =  (L*1000);	   //arrondi a lentier le plus proche
    			Lambda= RoundRealToNearestInteger (z);
    			buffer[i] = Lambda;	//converti float en char
    			pLambda=buffer[i-1];
    			printf("%i\n",Lambda);
    			i++;
     
    //Mesure de la temperature
    			sprintf (question, "ch2:tmes?");
    			envoi_question_osics(HandleO, question ,reponseT);
    			sscanf (reponseT, "CH2:TMES=%f", &TempOsics);
    			buffer[j]=TempOsics;
    			j++;
    			} 
     
    		envoi_osics(HandleO,"CH2:DISABLE"); //eteint laser si lambda stable
    		T2=GetSystemTime;  // FIN CHRONO T1
    		Duree=T2-T1;
    		printf("%i\n",Duree);
    		}
     
    	Delay(1);
    		}
    //creation fichier excel
    //RECUPERE LES VALEUR DE TempOsics, Duree, Lambda
    	ArrayToFile ("C:\\DFB\\mesure.xls", buffer, VAL_FLOAT, NbrMes, 2,
    				 VAL_GROUPS_TOGETHER, VAL_GROUPS_AS_COLUMNS,
    				 VAL_SEP_BY_TAB, 10, VAL_ASCII, VAL_TRUNCATE); 
     
    	Delay(5);				 	
    	return 0;
    }
    Je me rend compte que je demande beaucoup de chose, mais je suis vraiment tres embeter par ce programme ca fait deja @ semaine que je travail dessus et la je suis bloque.
    Tous ce qu'il y a ecrit plus haut je l'ai fait de moi meme, je suis super fiere mais franchement je n'y connais rien
    Alors MERCI a tous, je reste dispo pour fournir davantage d'info au cas ou ca ne serai pas clair.

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par sennju Voir le message
    Alors MERCI a tous, je reste dispo pour fournir davantage d'info au cas ou ca ne serai pas clair.
    Ouaip pas clair du tout.
    Commençons par la seule chose que j'ai compris => récupérer les valeurs dans un fichier Excel
    Ben malheureusement tu ne peux pas. Le format Excel est un format propriétaire Micro$oft et donc on ne connait pas sa structure donc on ne peut pas la recréer.
    Fort heureusement, tu as le format CSV qui est justement fait pour importer e/ou exporter dans et depuis Excel des fichiers.
    Tu écrits ton fichier CSV en simple texte. Chaque valeur sera séparée de la suivante par un point-virgule (ou autre-chose si le point-virgule est déjà pris c'est toi qui voit) et chaque ligne séparée de la suivante par un "\n".
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    FILE *fp=fopen("toto.csv", "w");
    if (fp == NULL)
    {
        // Gérer le cas où le fichier n'a pas été ouvert
        // Généralement on quitte la fonction
    }
    for (i=0; i < 10; i++)
        fprintf(fp, "%s;%s;%d\n", nom[i], prenom[i], age[i]);
    fclose(fp);
    Ensuite tu ouvres Excel et tu lui demandes d'importer un fichier "csv" en lui précisant que le séparateur c'est le point-virgule (ou autre-chose). Tu te retrouveras avec un document contenant une valeur par colonne et autant de lignes que de lignes dans ton CSV.

    Pour le reste j'ai rien pigé. Mais un conseil => découpe ton problème en tâches élémentaires et affecte une fonction pour chaque tâche sinon tu vas produire un code imbitable....

    Citation Envoyé par sennju Voir le message
    je suis un tres gros debutant en programmation a t elle point que je ne sais meme pas en quoi est le code que j ai ecrit est!
    Ben ma poupougne... si tu ne le sais pas comment pourrais-t-on, nous, le savoir ? A vue de nez il me semble que c'est du C mais sait-on jamais....
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. code non managé avec interface managée ...
    Par izbad dans le forum MFC
    Réponses: 6
    Dernier message: 19/12/2005, 16h36
  2. Probléme de code non portable
    Par Stany dans le forum Windows
    Réponses: 2
    Dernier message: 23/08/2005, 11h02
  3. code non éxécutable
    Par abidi_niz dans le forum Langage SQL
    Réponses: 1
    Dernier message: 18/07/2005, 10h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo