#include "diabolo.h" #include "reglage.h" #define uc(iii) (((long)(iii))&0xff) #define us(iii) (((long)(iii))&0xffff) void param_reglage(void) { nouveauD(fenetre_param_reglage,reglage_id,"param_reglage",exec_reglage); } //-------------------- fonction exec de la fenetre : param_reglage ------------------------------- void exec_reglage(int fen,int item,double valeur,...) { int a,i,num; char ss[256]; switch(item) { case ouverture : a=ouvrirT(fenetre_fichier_archeops_c,256,"archeops.c"); if(!a) a=ouvrirT(fenetre_fichier_archeops_c,256,0L); if(!a) printf(" n'arrive pas a ouvrir le fichier archeops.c \n"); if(!a) a=nouveauT(fenetre_fichier_archeops_c,256,"archeops.c"); // cherche les noms de reglages litT(fenetre_fichier_archeops_c,cherchedebut_f,"/*debut_nom_reglage*/"); for(i=0;i<8;i++) { litT(fenetre_fichier_archeops_c,curseur_f,ss); if(strlen(ss)>9) { ss[strlen(ss)-2]=0; ecritD(fen,pr_nom_reglage+i,ss+6); } else ecritD(fen,pr_nom_reglage+i,"reglage %d",i); } select(fen); break; case fermeture : ferme(fenetre_fichier_archeops_c);break; // case pr_relit_param : relit_param();sauve_param();break; case pr_sauve_reglage : num=litD(fen,pr_num_reglage,0L)-1; if(num<0) alerte(1,"attention, vous n'avez rien sauvé !!"); else sauve_reglage(num); break; default : break; } } //---------------------------------------------------------------------------------------------- //--- ---- //--- ---- //-------------------- sauves les reglages dans archeops.c --------------------------------- //--- ---- //--- ---- //---------------------------------------------------------------------------------------------- void sauve_reglage(int num) { char s1[1024]; int p,i; if( (num<0) ou (num>7) ) erreur(" ecrit reglage avec num non valide "); // --------------------------- cherche debut_id= pour detruire les ancien define pour ce dialogue ----------------- p=litT(fenetre_fichier_archeops_c,cherchedebut_f,"/*debut_nom_reglage*/"); printf("trouvé debut_nom_reglage pour p=%d \n",p); if (p>=0) { position(fenetre_fichier_archeops_c,p); do { p=litT(fenetre_fichier_archeops_c,curseur_f,s1); if (p>=0) {position(fenetre_fichier_archeops_c,p); ecritT(fenetre_fichier_archeops_c,detruit_f,""); } // printf("detruit:-->> %s \n",s1); } while ( (p>=0) && (strcmp(s1,"/*fin_nom_reglage*/")!=0) ); } else { ecritT(fenetre_fichier_archeops_c,insert_f,"\n"); ecritT(fenetre_fichier_archeops_c,insert_f,"\n"); ecritT(fenetre_fichier_archeops_c,insert_f,"\n"); } ecritT(fenetre_fichier_archeops_c,insert_f,"/*debut_nom_reglage*/\n"); for(i=0;i<8;i++) { litD(fenetre_param_reglage,pr_nom_reglage+i,s1); ecritT(fenetre_fichier_archeops_c,insert_f,"/* %d->%s*/\n",i,s1); } ecritT(fenetre_fichier_archeops_c,insert_f,"/*fin_nom_reglage*/\n\n"); // --------------------------- cherche debut_id= pour detruire les ancien define pour ce dialogue ----------------- sprintf(s1,"/*debut reglage %d */",num); p=litT(fenetre_fichier_archeops_c,cherchedebut_f,s1); printf("trouvé debut_reglage %d pour p=%d \n",num,p); if (p>=0) { position(fenetre_fichier_archeops_c,p); do { p=litT(fenetre_fichier_archeops_c,curseur_f,s1); if (p>=0) {position(fenetre_fichier_archeops_c,p); ecritT(fenetre_fichier_archeops_c,detruit_f,""); } // printf("detruit:-->> %s \n",s1); } while ( (p>=0) && (strcmp(s1,"/*fin_reglage*/")!=0) ); } else { ecritT(fenetre_fichier_archeops_c,insert_f,"\n"); ecritT(fenetre_fichier_archeops_c,insert_f,"\n"); ecritT(fenetre_fichier_archeops_c,insert_f,"\n"); } // ---------------------------------- ecriture des nouveaux defines ---------------------------------- /*typedef struct long en mot de 32 bit { horloge horloge; 1 char vitesse[nb_type_blocks]; /* 5 reglage_un_bolo bolo[nb_max_bolo]; 18 * 2 = 36 auto_bolo autom[nombre_de_voies]; 6 * 1 6 regul_bolo regul[nombre_de_regul]; 4 * 2 = 8 auto_dilu dilu; 2 } reglage_bolo; total 58 */ ecritT(fenetre_fichier_archeops_c,insert_f,"/*debut reglage %d */\n",num); /*********** structure normale pour le mac ****************/ ecritT(fenetre_fichier_archeops_c,insert_f,"#ifdef programme\n"); /* ecrit horloge */ ecritT(fenetre_fichier_archeops_c,insert_f,"{%d,%d,%d,%d},{\n",uc(gg->reglage.horloge.periode),uc(gg->reglage.horloge.nb_mesures) ,uc(gg->reglage.horloge.temp_mort),uc(gg->reglage.horloge.flag)); /* ecrit reglage_un_bolo : 2 mots long */ for(i=0;i0) ecritT(fenetre_fichier_archeops_c,insert_f,",{%d,%d}\n",gg->reglage.bolo[i].mot1,gg->reglage.bolo[i].mot2); else ecritT(fenetre_fichier_archeops_c,insert_f,"{%d,%d}\n",gg->reglage.bolo[i].mot1,gg->reglage.bolo[i].mot2); } ecritT(fenetre_fichier_archeops_c,insert_f,"},{\n"); /* ecrit auto_bolo 4 char */ for(i=0;i0) ecritT(fenetre_fichier_archeops_c,insert_f,",{%d,%d,%d,%d}\n",uc(gg->reglage.autom[i].mode),uc(gg->reglage.autom[i].gain),uc(gg->reglage.autom[i].courant),uc(gg->reglage.autom[i].delai)); else ecritT(fenetre_fichier_archeops_c,insert_f,"{%d,%d,%d,%d}\n",uc(gg->reglage.autom[i].mode),uc(gg->reglage.autom[i].gain),uc(gg->reglage.autom[i].courant),uc(gg->reglage.autom[i].delai)); } ecritT(fenetre_fichier_archeops_c,insert_f,"},{\n"); /* ecrit regul_bolo */ for(i=0;i0) ecritT(fenetre_fichier_archeops_c,insert_f,",{%d,%d,%d,%d,%d,%d,%d}\n" ,uc(gg->reglage.regul[i].mode),uc(gg->reglage.regul[i].num_bolo),uc(gg->reglage.regul[i].voie_chauf),uc(gg->reglage.regul[i].prop) ,uc(gg->reglage.regul[i].integ),uc(gg->reglage.regul[i].deriv),us(gg->reglage.regul[i].chauffage)); else ecritT(fenetre_fichier_archeops_c,insert_f,"{%d,%d,%d,%d,%d,%d,%d}\n" ,uc(gg->reglage.regul[i].mode),uc(gg->reglage.regul[i].num_bolo),uc(gg->reglage.regul[i].voie_chauf),uc(gg->reglage.regul[i].prop) ,uc(gg->reglage.regul[i].integ),uc(gg->reglage.regul[i].deriv),us(gg->reglage.regul[i].chauffage)); } /* ecrit auto_dilu */ ecritT(fenetre_fichier_archeops_c,insert_f,"},{%d,%d,%d,%d,%d,%d,%d,%d} \n" ,uc(gg->reglage.dilu.vanne),uc(gg->reglage.dilu.helium),uc(gg->reglage.dilu.chauffage),uc(gg->reglage.dilu.piles) ,uc(gg->reglage.dilu.transmission),uc(gg->reglage.dilu.temps_max_vanne),uc(gg->reglage.dilu.xx7),uc(gg->reglage.dilu.xx8)); /*********** structure swappée pour le transputer ****************/ ecritT(fenetre_fichier_archeops_c,insert_f,"#else\n"); /* ecrit horloge */ ecritT(fenetre_fichier_archeops_c,insert_f,"{%d,%d,%d,%d},{\n",uc(gg->reglage.horloge.flag),uc(gg->reglage.horloge.temp_mort) ,uc(gg->reglage.horloge.nb_mesures),uc(gg->reglage.horloge.periode)); /* ecrit reglage_un_bolo : 2 mots long */ for(i=0;i0) ecritT(fenetre_fichier_archeops_c,insert_f,",{%d,%d}\n",gg->reglage.bolo[i].mot1,gg->reglage.bolo[i].mot2); else ecritT(fenetre_fichier_archeops_c,insert_f,"{%d,%d}\n",gg->reglage.bolo[i].mot1,gg->reglage.bolo[i].mot2); } ecritT(fenetre_fichier_archeops_c,insert_f,"},{\n"); /* ecrit auto_bolo 4 char */ for(i=0;i0) ecritT(fenetre_fichier_archeops_c,insert_f,",{%d,%d,%d,%d}\n" ,uc(gg->reglage.autom[i].delai),uc(gg->reglage.autom[i].courant),uc(gg->reglage.autom[i].gain),uc(gg->reglage.autom[i].mode)); else ecritT(fenetre_fichier_archeops_c,insert_f,"{%d,%d,%d,%d}\n" ,uc(gg->reglage.autom[i].delai),uc(gg->reglage.autom[i].courant),uc(gg->reglage.autom[i].gain),uc(gg->reglage.autom[i].mode)); } ecritT(fenetre_fichier_archeops_c,insert_f,"},{\n"); /* ecrit regul_bolo */ for(i=0;i0) ecritT(fenetre_fichier_archeops_c,insert_f,",{%d,%d,%d,%d,%d,%d,%d}\n" ,uc(gg->reglage.regul[i].prop),uc(gg->reglage.regul[i].voie_chauf),uc(gg->reglage.regul[i].num_bolo),uc(gg->reglage.regul[i].mode) ,us(gg->reglage.regul[i].chauffage),uc(gg->reglage.regul[i].deriv),uc(gg->reglage.regul[i].integ)); else ecritT(fenetre_fichier_archeops_c,insert_f,"{%d,%d,%d,%d,%d,%d,%d}\n" ,uc(gg->reglage.regul[i].prop),uc(gg->reglage.regul[i].voie_chauf),uc(gg->reglage.regul[i].num_bolo),uc(gg->reglage.regul[i].mode) ,us(gg->reglage.regul[i].chauffage),uc(gg->reglage.regul[i].deriv),uc(gg->reglage.regul[i].integ)); } /* ecrit auto_dilu */ ecritT(fenetre_fichier_archeops_c,insert_f,"},{%d,%d,%d,%d,%d,%d,%d,%d} \n" ,uc(gg->reglage.dilu.piles),uc(gg->reglage.dilu.chauffage),uc(gg->reglage.dilu.helium),uc(gg->reglage.dilu.vanne) ,uc(gg->reglage.dilu.xx8),uc(gg->reglage.dilu.xx7),uc(gg->reglage.dilu.temps_max_vanne),uc(gg->reglage.dilu.transmission)); /*********** fin des structures swappées ****************/ ecritT(fenetre_fichier_archeops_c,insert_f,"#endif\n"); ecritT(fenetre_fichier_archeops_c,insert_f,"/*fin_reglage*/\n"); if(enregistrer(fenetre_fichier_archeops_c)) alerte(1,"atention : erreur dans engeristrer"); }