#include "cw3dgrph.h" #include "3DGraphCtrl.h" #include #include #include #include #include #include #include "oleauto.h" #include #include #include #include "hp875x.h" #include "asynctmr.h" #include "initialisation_banc.h" #include "esp_controleur.h" #include "emission.h" int acquisition_AS_single_scan(int panel,int choix_analyseur) { char tampon[100],tampon2[1000],tampon3[5000]; char dir_name[5000],date[100],sp[100],att[100],Ref_Lev[100],Res_Band[100]; const char field_comp_txt[6][3] = {"Hx", "Hy", "Hz", "Ex", "Ey", "Ez"}; int i,j,k,p; int nb_pas_x,nb_pas_y,nb_pas_1,nb_pas_2; int pos_courante_x,pos_courante_y,pos_courante_z; int zero_span,cf,nb_freq; int vitesse; int compteur,pourcentage; int puissance; int param_ampli,param_generateur,choix_appareil,attenuation; int erreur; int h,mn,s,day,month,year,etat; int field_comp; float pas,pasX,pasY,pas_x,pas_y,pasx_x,pasx_y,pasx_z,pasy_x,pasy_y,pasy_z,nb_pas_x_f,nb_pas_y_f; float pas1_x,pas1_y,pas1_z,pas2_x,pas2_y,pas2_z; float length_x,length_y, Pt1Pt2,Pt1Pt3; float tabxy[3]={0}; float pos[3][3]; float xo,yo,zo,probe_dist; float span; double champ[100]={0}; double tab_freq[100]={0}; FILE *fichier,*fichier1,*fichier2,*fichier3,*fichierf,*xml; //Variables pour l'affichage du GRAPH3D int ii,jj; int r,g,b; int couleur[64]; int values[64]; int nb_blocks, nb_bytes; char message[100]; long ix[2]; double **data; unsigned int numAllocatedBlocks, numAllocatedBytes; void *memory = malloc (1234); VARIANT vArray,var1,var2; SAFEARRAY * psa; SAFEARRAYBOUND rgsabound[2]; CAObjHandle plotsHandle = 0; CAObjHandle axesHandle=0; CAObjHandle axeHandle=0; GetProjectDir (dir_name); sprintf(dir_name,"%s\\resultats_emission\\",dir_name); SplitPath (dir_name, NULL, dir_name, NULL); SetDir (dir_name); GetSystemTime (&h, &mn, &s); sprintf(dir_name,"%s_%dh-%dm-%ds",DateStr(),h,mn,s); MakeDir (dir_name); SetDir (dir_name); stop=0; //Lecture des fréquences GetNumTextBoxLines (panel,EMISSION_frequences, &nb_freq); GetTextBoxLineLength (panel,EMISSION_frequences, nb_freq-1, &val); //Création des fichiers de résultats //---------------------------------------------------------------- fichier=fopen("mesure_xyz.txt","wt"); fprintf(fichier,"%%x(mm)\t\ty(mm)\t\tz(mm)\t"); fclose(fichier); for (i=0;ichamp(%e Hz)\n",p,tab_freq[i]); } //Lecture et sauvegarde des paramètres de l'analyseur //--------------------------------------------------- if (choix_analyseur==0) { // Resolution Bandwidth gpibWrite(analyseur,"RB?"); gpibRead(analyseur,read_buffer,2000); sscanf(read_buffer,"%s",Res_Band); fprintf(fichier3,"\nRBW=%s ",Res_Band); // SPAN gpibWrite(analyseur,"SP?"); gpibRead(analyseur,read_buffer,2000); sscanf(read_buffer,"%s",sp); fprintf(fichier3,"\nSPAN=%s ",sp); // Référence/ Range Level gpibWrite(analyseur,"RL?"); gpibRead(analyseur,read_buffer,2000); sscanf(read_buffer,"%s\n",Ref_Lev); fprintf(fichier3,"\nRef level=%s ",Ref_Lev); // Atténuation gpibWrite(analyseur,"AT?"); gpibRead(analyseur,read_buffer,2000); sscanf(read_buffer,"%s",att); fprintf(fichier3,"\nAttenuation=%s ",att); } else { // Resolution Bandwidth gpibWrite(analyseur,":SENS:BAND|BWID :RES?"); gpibRead(analyseur,read_buffer,2000); sscanf(read_buffer,"%s",Res_Band); fprintf(fichier3,"\nRBW=%s ",Res_Band); // SPAN gpibWrite(analyseur,":SENS:FREQ:SPAN?"); gpibRead(analyseur,read_buffer,2000); sscanf(read_buffer,"%s",sp); fprintf(fichier3,"\nSPAN=%s ",sp); // Référence/ Range Level gpibWrite(analyseur,":DISP:WIND:TRAC:Y[:SCAL]: RLEV?"); gpibRead(analyseur,read_buffer,2000); sscanf(read_buffer,"%s\n",Ref_Lev); fprintf(fichier3,"\nRef level=%s ",Ref_Lev); // Atténuation gpibWrite(analyseur,":SENS:POW[:RF]:ATT?"); gpibRead(analyseur,read_buffer,2000); sscanf(read_buffer,"%s",att); fprintf(fichier3,"\nAttenuation=%s ",att); } //------------------------------------------------------- //Sauvegarde des paramètres du générateur //------------------------------------- fprintf(fichier3,"\nGénérateur : P=%d dBm\n",puissance); //Sauvegarde des notes GetCtrlVal (panel,EMISSION_TEXTBOX_NOTES,tampon3); fprintf(fichier3,"\n-------------------------------------\n%s\n-------------------------------------\n",tampon3); fclose(fichier3); */ //-------------------------------------------------------- //Allocation du tableau contenant les mesures //------------------------------------------- data = (double **)malloc((nb_pas_1+1)*sizeof(double *)); for (i=0;i<=nb_pas_1;i++) data[i]=(double *)malloc((nb_pas_2+1)*sizeof(double)); //Initialisation du graph CW3DGraphLib_CWPlot3DClearData (plotHandle, NULL); //CW3DGraphLib__DCWGraph3DSetDefaultView (graphHandle, NULL); CW3DGraphLib_CWPlot3DSetColorMapStyle (plotHandle, NULL, CW3DGraphLibConst_cwCustom); CA_VariantSet1DArray (&vArray, CAVT_INT, 64, &couleur); CW3DGraphLib_CWPlot3DSetColorMapColors (plotHandle, NULL, vArray); CA_VariantSet1DArray (&vArray, CAVT_INT, 64, &values); CW3DGraphLib_CWPlot3DSetColorMapValues (plotHandle, NULL, vArray); CW3DGraphLib_CWPlot3DSetColorMapInterpolate (plotHandle, NULL, VTRUE); CW3DGraphLib_CWPlot3DSetColorMapAutoScale (plotHandle, NULL, VTRUE); CW3DGraphLib__DCWGraph3DGetAxes (graphHandle, NULL, &axesHandle); CW3DGraphLib_CWAxes3DItem (axesHandle, NULL, CA_VariantInt(1),&axeHandle); CW3DGraphLib_CWAxis3DSetMinMax (axeHandle, NULL, CA_VariantInt(0),CA_VariantInt(nb_pas_1)); CW3DGraphLib_CWAxes3DItem (axesHandle, NULL, CA_VariantInt(2),&axeHandle); CW3DGraphLib_CWAxis3DSetMinMax (axeHandle, NULL, CA_VariantInt(0),CA_VariantInt(nb_pas_2)); */ // Balayage du rectangle fixé par les points: Pt1, Pt2 et Pt3 //----------------------------------------------------------------------- //lecture_pos_xyz(&pos_courante_x,&pos_courante_y,&pos_courante_z); pos_courante_x=pos[0][0],pos_courante_y=pos[1][0],pos_courante_z =pos[2][0] ; //fichier=fopen("mesure_xyz.txt","at"); fprintf(fichierf,"Freq(Hz)\t\t%s\n",field_comp_txt[field_comp]); xml=fopen("mesure_xyz.xml", "at"); fprintf(xml,"\n"); fprintf(xml, "\n"); fprintf(xml,"mesure_xyz.xml "); fprintf(xml,"%s %dh-%dmn-%ds",DateStr(),h,mn,s); fprintf(xml,"ESEO"); fprintf(xml,"This document is the property of ESEO"); fprintf(xml, "%s\n", field_comp_txt[field_comp]); fprintf(xml, "\n%s\n%s\n%s\n\n",att,Ref_Lev,sp); GetCtrlVal (panel,EMISSION_btn_LNA_60_dB,&val_LNA); if(val_LNA==1) fprintf(xml,"\n60.0\n "); else fprintf(xml,"\n0.0\n"); fprintf(xml, ""); fprintf(xml, "\n"); fprintf(xml, "Left-handed Cartesian\n"); fprintf(xml, "%fmm\n",pos[0][0]); fprintf(xml, "%fmm\n",pasX); fprintf(xml, "%fmm\n",pos[0][0]+length_x); fprintf(xml, "%fmm\n",pos[1][0]); fprintf(xml, "%fmm\n",pasY); fprintf(xml, "%fmm\n",pos[1][0]+length_y);*/ GetCtrlVal(panel, EMISSION_probe_dist, &probe_dist); fprintf(xml, "%fmm\n", probe_dist); fprintf(xml, "\nHz\n"); for(k=0;k\n\n"); fprintf(xml, "\ndBm\nmm\nmm\nmm\n"); fprintf(xml,"\n"); for (i=0;i<=nb_pas_1;i++) {//Boucle sur l'axe des X for (j=0;j<=nb_pas_2;j++) {//Boucle sur l'axe des Y if (stop==1) //Fin du scan { if (zero_span==0 && choix_analyseur==0) { sprintf(write_buffer,"CONTS;"); //single Sweep gpibWrite(analyseur,write_buffer); } ibloc (analyseur); //Passage au mode "Local" (commande manuelle) if (param_generateur==1) { if (val_gen==0) ibloc (Marconi2031); //Passage au mode "Local" (commande manuelle) else ibloc (Anritsu_68347C); //Passage au mode "Local" (commande manuelle) } return 0; } if (j==0) { demande_vitesse(1,vitesse); demande_vitesse(2,vitesse); demande_vitesse(3,vitesse); } fichier=fopen("mesure_xyz.txt","at"); tabxy[0]=pos[0][0]+(pas2_x*i)+(pas1_x*j); tabxy[1]=pos[1][0]+(pas2_y*i)+(pas1_y*j); tabxy[2]=pos[2][0]+(pas2_z*i)+(pas1_z*j); deplacement_pt1_pt2(pos_courante_x,pos_courante_y,pos_courante_z,tabxy[0],tabxy[1],tabxy[2]); pos_courante_x=tabxy[0]; pos_courante_y=tabxy[1]; pos_courante_z=tabxy[2]; fprintf(fichier,"%f\t%f\t%f",tabxy[0],tabxy[1],probe_dist); fprintf(xml,"%f\t%f\t%f\t",tabxy[0],tabxy[1],probe_dist); fprintf(stderr,"682" ); //Boucle sur les fréquences for (k=0;k0) { rgsabound[0].lLbound = 0; rgsabound[0].cElements = i+1; rgsabound[1].lLbound = 0; //limite inférieure du tableau (array) rgsabound[1].cElements = nb_pas_2+1; // Nbr d'élément dans la dimension psa = SafeArrayCreate(VT_R8, 2, rgsabound); // Création d'un SAFEARRAY (tableau) de variants fprintf(stderr,"828" ); // VT_R8 -> double ; Dimension=2 (X,Y) // Remplissage du tableau. // rgsabound->limites du tableau for (ii=0;ii<=i;ii++) { for (jj=0;jj<=nb_pas_2;jj++) { ix[0]=ii; ix[1]=jj; SafeArrayPutElement(psa, ix, &data[ii][jj]); } } fprintf(stderr,"838" ); CA_VariantSetSafeArray (&vArray, CAVT_DOUBLE, psa); CW3DGraphLib_CWPlot3DPlot3DSimpleSurface (plotHandle, NULL, vArray,CA_DEFAULT_VAL); SafeArrayDestroy(psa); //libérez les ressources associées au VARIANT crée par SafearrayCreate } fprintf(stderr,"844" ); } // Fin de la boucle sur X fprintf(xml,"\n"); fprintf(xml, "\n"); fprintf(xml, "\n"); fprintf(xml, "\n"); fclose(xml); fclose(fichier); // Retour à la position de départ demande_vitesse(1,15); demande_vitesse(2,15); demande_vitesse(3,15); //deplacement_pt1_pt2(pos_courante_x,pos_courante_y,pos_courante_z,pos[0][0],pos[1][0],pos[2][0]); deplacement_pt1_pt2(pos_courante_x,pos_courante_y,pos_courante_z,xo,yo,zo); //deplacement_to_xyz(xo,yo,zo); arret_deplacement(); //Libération du tableau contenant les mesures //-------------------------------------------- /* for (i=0;i<=nb_pas_1;i++) free(data[i]); free(data); */ return 0; }