source: Sophya/trunk/Poubelle/archediab.old/archediab.sources/c/reglage.c@ 639

Last change on this file since 639 was 639, checked in by ansari, 26 years ago

archediab 25

File size: 9.5 KB
RevLine 
[637]1#include "diabolo.h"
2#include "reglage.h"
3
[639]4#define uc(iii) (((long)(iii))&0xff)
5#define us(iii) (((long)(iii))&0xffff)
[637]6
7void param_reglage(void)
8{
9nouveauD(fenetre_param_reglage,reglage_id,"param_reglage",exec_reglage);
10}
11
12//-------------------- fonction exec de la fenetre : param_reglage -------------------------------
13
14
15void exec_reglage(int fen,int item,double valeur,...)
16{
17int a,i,num;
18char ss[256];
19switch(item)
20 {
21 case ouverture :
22 a=ouvrirT(fenetre_fichier_archeops_c,256,"archeops.c");
23 if(!a) a=ouvrirT(fenetre_fichier_archeops_c,256,0L);
24 if(!a) printf(" n'arrive pas a ouvrir le fichier archeops.c \n");
25 if(!a) a=nouveauT(fenetre_fichier_archeops_c,256,"archeops.c");
26// cherche les noms de reglages
27 litT(fenetre_fichier_archeops_c,cherchedebut_f,"/*debut_nom_reglage*/");
28 for(i=0;i<8;i++)
29 {
30 litT(fenetre_fichier_archeops_c,curseur_f,ss);
31 if(strlen(ss)>9)
32 {
33 ss[strlen(ss)-2]=0;
34 ecritD(fen,pr_nom_reglage+i,ss+6);
35 }
36 else ecritD(fen,pr_nom_reglage+i,"reglage %d",i);
37 }
38 select(fen);
39 break;
40 case fermeture : ferme(fenetre_fichier_archeops_c);break;
41// case pr_relit_param : relit_param();sauve_param();break;
42
43 case pr_sauve_reglage : num=litD(fen,pr_num_reglage,0L)-1;
44 if(num<0) alerte(1,"attention, vous n'avez rien sauvé !!");
45 else sauve_reglage(num);
46 break;
47
48 default : break;
49 }
50}
51
52
53
54//----------------------------------------------------------------------------------------------
55//--- ----
56//--- ----
57//-------------------- sauves les reglages dans archeops.c ---------------------------------
58//--- ----
59//--- ----
60//----------------------------------------------------------------------------------------------
61
62
63void sauve_reglage(int num)
64{
65char s1[1024];
66int p,i;
67
68if( (num<0) ou (num>7) ) erreur(" ecrit reglage avec num non valide ");
69
70
71// --------------------------- cherche debut_id= pour detruire les ancien define pour ce dialogue -----------------
72p=litT(fenetre_fichier_archeops_c,cherchedebut_f,"/*debut_nom_reglage*/");
73printf("trouvé debut_nom_reglage pour p=%d \n",p);
74
75
76if (p>=0)
77 {
78 position(fenetre_fichier_archeops_c,p);
79 do {
80 p=litT(fenetre_fichier_archeops_c,curseur_f,s1);
81 if (p>=0) {position(fenetre_fichier_archeops_c,p);
82 ecritT(fenetre_fichier_archeops_c,detruit_f,"");
83 }
84// printf("detruit:-->> %s \n",s1);
85 }
86 while ( (p>=0) && (strcmp(s1,"/*fin_nom_reglage*/")!=0) );
87 }
88else {
89 ecritT(fenetre_fichier_archeops_c,insert_f,"\n");
90 ecritT(fenetre_fichier_archeops_c,insert_f,"\n");
91 ecritT(fenetre_fichier_archeops_c,insert_f,"\n");
92 }
93
94ecritT(fenetre_fichier_archeops_c,insert_f,"/*debut_nom_reglage*/\n");
95for(i=0;i<8;i++)
96 {
97 litD(fenetre_param_reglage,pr_nom_reglage+i,s1);
98 ecritT(fenetre_fichier_archeops_c,insert_f,"/* %d->%s*/\n",i,s1);
99 }
100ecritT(fenetre_fichier_archeops_c,insert_f,"/*fin_nom_reglage*/\n\n");
101
102
103
104
105// --------------------------- cherche debut_id= pour detruire les ancien define pour ce dialogue -----------------
106sprintf(s1,"/*debut reglage %d */",num);
107p=litT(fenetre_fichier_archeops_c,cherchedebut_f,s1);
108printf("trouvé debut_reglage %d pour p=%d \n",num,p);
109
110
111if (p>=0)
112 {
113 position(fenetre_fichier_archeops_c,p);
114 do {
115 p=litT(fenetre_fichier_archeops_c,curseur_f,s1);
116 if (p>=0) {position(fenetre_fichier_archeops_c,p);
117 ecritT(fenetre_fichier_archeops_c,detruit_f,"");
118 }
119// printf("detruit:-->> %s \n",s1);
120 }
121 while ( (p>=0) && (strcmp(s1,"/*fin_reglage*/")!=0) );
122 }
123else {
124 ecritT(fenetre_fichier_archeops_c,insert_f,"\n");
125 ecritT(fenetre_fichier_archeops_c,insert_f,"\n");
126 ecritT(fenetre_fichier_archeops_c,insert_f,"\n");
127 }
128// ---------------------------------- ecriture des nouveaux defines ----------------------------------
129/*typedef struct long en mot de 32 bit
130 {
131 horloge horloge; 1
132 char vitesse[nb_type_blocks]; /* 5
133 reglage_un_bolo bolo[nb_max_bolo]; 18 * 2 = 36
134 auto_bolo autom[nombre_de_voies]; 6 * 1 6
135 regul_bolo regul[nombre_de_regul]; 4 * 2 = 8
136 auto_dilu dilu; 2
137 }
138 reglage_bolo; total 58
139*/
140
141ecritT(fenetre_fichier_archeops_c,insert_f,"/*debut reglage %d */\n",num);
142
[639]143/*********** structure normale pour le mac ****************/
144ecritT(fenetre_fichier_archeops_c,insert_f,"#ifdef programme\n");
145
146/* ecrit horloge */
147ecritT(fenetre_fichier_archeops_c,insert_f,"{%d,%d,%d,%d},\n",uc(gg->reglage.horloge.periode),uc(gg->reglage.horloge.nb_mesures)
148 ,uc(gg->reglage.horloge.temp_mort),uc(gg->reglage.horloge.flag));
149
150/* ecrit vitesses */
[637]151for(i=0;i<nb_type_blocks;i++)
[639]152 {if(i>0) ecritT(fenetre_fichier_archeops_c,insert_f,",%d\n",uc(gg->reglage.vitesse[i])); else ecritT(fenetre_fichier_archeops_c,insert_f,"{%d\n",uc(gg->reglage.vitesse[i])); }
[637]153
154ecritT(fenetre_fichier_archeops_c,insert_f,"},{\n");
[639]155
156/* ecrit reglage_un_bolo : 2 mots long */
[637]157for(i=0;i<nb_max_bolo;i++)
158 {if(i>0) ecritT(fenetre_fichier_archeops_c,insert_f,",{%d,%d}\n",gg->reglage.bolo[i].mot1,gg->reglage.bolo[i].mot2);
159 else ecritT(fenetre_fichier_archeops_c,insert_f,"{%d,%d}\n",gg->reglage.bolo[i].mot1,gg->reglage.bolo[i].mot2);
160 }
161
162ecritT(fenetre_fichier_archeops_c,insert_f,"},{\n");
[639]163
164/* ecrit auto_bolo 4 char */
[637]165for(i=0;i<nombre_de_voies;i++)
[639]166 {if(i>0) 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));
167 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));
[637]168 }
169
170ecritT(fenetre_fichier_archeops_c,insert_f,"},{\n");
[639]171
172/* ecrit regul_bolo */
[637]173for(i=0;i<nombre_de_regul;i++)
174 {if(i>0) ecritT(fenetre_fichier_archeops_c,insert_f,",{%d,%d,%d,%d,%d,%d,%d}\n"
[639]175 ,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)
176 ,uc(gg->reglage.regul[i].integ),uc(gg->reglage.regul[i].deriv),us(gg->reglage.regul[i].chauffage));
[637]177 else ecritT(fenetre_fichier_archeops_c,insert_f,"{%d,%d,%d,%d,%d,%d,%d}\n"
[639]178 ,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)
179 ,uc(gg->reglage.regul[i].integ),uc(gg->reglage.regul[i].deriv),us(gg->reglage.regul[i].chauffage));
[637]180 }
181
[639]182/* ecrit auto_dilu */
[637]183ecritT(fenetre_fichier_archeops_c,insert_f,"},{%d,%d,%d,%d,%d,%d,%d,%d} \n"
[639]184 ,uc(gg->reglage.dilu.vanne),uc(gg->reglage.dilu.helium),uc(gg->reglage.dilu.chauffage),uc(gg->reglage.dilu.piles)
185 ,uc(gg->reglage.dilu.transmission),uc(gg->reglage.dilu.temps_max_vanne),uc(gg->reglage.dilu.xx7),uc(gg->reglage.dilu.xx8));
[637]186
187
[639]188/*********** structure swappée pour le transputer ****************/
189ecritT(fenetre_fichier_archeops_c,insert_f,"#else\n");
190
191/* ecrit horloge */
192ecritT(fenetre_fichier_archeops_c,insert_f,"{%d,%d,%d,%d},\n",uc(gg->reglage.horloge.flag),uc(gg->reglage.horloge.temp_mort)
193 ,uc(gg->reglage.horloge.nb_mesures),uc(gg->reglage.horloge.periode));
194
195/* ecrit vitesses */
196for(i=0;i<nb_type_blocks;i++)
197 {if(i>0) ecritT(fenetre_fichier_archeops_c,insert_f,",%d\n",uc(gg->reglage.vitesse[i^3])); else ecritT(fenetre_fichier_archeops_c,insert_f,"{%d\n",uc(gg->reglage.vitesse[i^3])); }
198
199ecritT(fenetre_fichier_archeops_c,insert_f,"},{\n");
200
201/* ecrit reglage_un_bolo : 2 mots long */
202for(i=0;i<nb_max_bolo;i++)
203 {if(i>0) ecritT(fenetre_fichier_archeops_c,insert_f,",{%d,%d}\n",gg->reglage.bolo[i].mot1,gg->reglage.bolo[i].mot2);
204 else ecritT(fenetre_fichier_archeops_c,insert_f,"{%d,%d}\n",gg->reglage.bolo[i].mot1,gg->reglage.bolo[i].mot2);
205 }
206
207ecritT(fenetre_fichier_archeops_c,insert_f,"},{\n");
208
209/* ecrit auto_bolo 4 char */
210for(i=0;i<nombre_de_voies;i++)
211 {if(i>0) ecritT(fenetre_fichier_archeops_c,insert_f,",{%d,%d,%d,%d}\n"
212 ,uc(gg->reglage.autom[i].delai),uc(gg->reglage.autom[i].courant),uc(gg->reglage.autom[i].gain),uc(gg->reglage.autom[i].mode));
213 else ecritT(fenetre_fichier_archeops_c,insert_f,"{%d,%d,%d,%d}\n"
214 ,uc(gg->reglage.autom[i].delai),uc(gg->reglage.autom[i].courant),uc(gg->reglage.autom[i].gain),uc(gg->reglage.autom[i].mode));
215 }
216
217ecritT(fenetre_fichier_archeops_c,insert_f,"},{\n");
218
219/* ecrit regul_bolo */
220for(i=0;i<nombre_de_regul;i++)
221 {if(i>0) ecritT(fenetre_fichier_archeops_c,insert_f,",{%d,%d,%d,%d,%d,%d,%d}\n"
222 ,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)
223 ,us(gg->reglage.regul[i].chauffage),uc(gg->reglage.regul[i].deriv),uc(gg->reglage.regul[i].integ));
224 else ecritT(fenetre_fichier_archeops_c,insert_f,"{%d,%d,%d,%d,%d,%d,%d}\n"
225 ,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)
226 ,us(gg->reglage.regul[i].chauffage),uc(gg->reglage.regul[i].deriv),uc(gg->reglage.regul[i].integ));
227 }
228
229/* ecrit auto_dilu */
230ecritT(fenetre_fichier_archeops_c,insert_f,"},{%d,%d,%d,%d,%d,%d,%d,%d} \n"
231 ,uc(gg->reglage.dilu.piles),uc(gg->reglage.dilu.chauffage),uc(gg->reglage.dilu.helium),uc(gg->reglage.dilu.vanne)
232 ,uc(gg->reglage.dilu.xx8),uc(gg->reglage.dilu.xx7),uc(gg->reglage.dilu.temps_max_vanne),uc(gg->reglage.dilu.transmission));
233
234
235
236
237/*********** fin des structures swappées ****************/
238ecritT(fenetre_fichier_archeops_c,insert_f,"#endif\n");
239
[637]240ecritT(fenetre_fichier_archeops_c,insert_f,"/*fin_reglage*/\n");
241
242
243if(enregistrer(fenetre_fichier_archeops_c)) alerte(1,"atention : erreur dans engeristrer");
244}
245
246
Note: See TracBrowser for help on using the repository browser.