| [637] | 1 | #include "diabolo.h" | 
|---|
|  | 2 | #include "bolo.h" | 
|---|
|  | 3 | #include "acqui.h" | 
|---|
|  | 4 | #include "fichier.h" | 
|---|
|  | 5 | #include "auto.h" | 
|---|
|  | 6 | #include "regul.h" | 
|---|
|  | 7 | #include "tm.h" | 
|---|
|  | 8 |  | 
|---|
|  | 9 |  | 
|---|
|  | 10 | int auto_tr[nb_max_bolo]; | 
|---|
|  | 11 | int ib_efface[nb_max_bolo]; | 
|---|
|  | 12 |  | 
|---|
|  | 13 |  | 
|---|
|  | 14 | //----------------------------------  fenetre : bolo  ----------------------------------- | 
|---|
|  | 15 |  | 
|---|
|  | 16 |  | 
|---|
|  | 17 |  | 
|---|
|  | 18 | //  le numero du bolometre dans  fen    (fenetres 1 à parametres.nb_bolo ) | 
|---|
|  | 19 |  | 
|---|
|  | 20 | void exec_bolo(int fen,int item,double valeur,...) | 
|---|
|  | 21 | { | 
|---|
|  | 22 | int a,c,i; | 
|---|
|  | 23 | int n=gg->reglage.horloge.nb_mesures; | 
|---|
|  | 24 | if(item>1000) item-=1000;               // pour appeler le case pour tous les cara d'un edit texte | 
|---|
|  | 25 | //printf("execbolo avec fen=%d , item=%d \n",fen,item); | 
|---|
|  | 26 | switch(item) | 
|---|
|  | 27 | { | 
|---|
|  | 28 | case ouverture  :       ib_efface[fen-1]=0; | 
|---|
|  | 29 | selectgra(fen); | 
|---|
|  | 30 | graph->ymin=-18000; | 
|---|
|  | 31 | graph->ymax=18000; | 
|---|
|  | 32 | graph->ypas=9000; | 
|---|
|  | 33 | graph->xmax=gg->reglage.horloge.nb_mesures; | 
|---|
|  | 34 | graph->xpas=graph->xmax/4; | 
|---|
|  | 35 | graph->grille=1; | 
|---|
|  | 36 | graph->graduations=0; | 
|---|
|  | 37 | graph->sans_image=1; | 
|---|
| [639] | 38 | graph->avec_icones=0; | 
|---|
|  | 39 | graph->aspect=0; | 
|---|
| [637] | 40 | graph->xtitre[0]=0; | 
|---|
|  | 41 | graph->ytitre[0]=0; | 
|---|
|  | 42 | //                              ecritD(fen,b_voy,fen+1); | 
|---|
|  | 43 |  | 
|---|
|  | 44 | ecritgain(fen); | 
|---|
|  | 45 | break; | 
|---|
|  | 46 |  | 
|---|
|  | 47 |  | 
|---|
|  | 48 | case tache_de_fond  :   // appellé par le programme d'acquisition pour tracer   ----  la cadence est variable | 
|---|
|  | 49 | n=gg->reglage.horloge.nb_mesures; | 
|---|
| [643] | 50 | //                              printf(" nb mesure = %d \n",n); | 
|---|
| [637] | 51 | { | 
|---|
|  | 52 | selectgra(fen); | 
|---|
|  | 53 | graph->xmax=n;          graph->xpas=n/4; | 
|---|
|  | 54 | graph->ymin=-18000;     graph->ymax=18000;      graph->ypas=9000; | 
|---|
|  | 55 | } | 
|---|
|  | 56 | if(ib_efface[fen-1]--<0) { ib_efface[fen-1]=10; retrace(fen);} | 
|---|
|  | 57 | c=1234; | 
|---|
|  | 58 | effacecourbe(fen); | 
|---|
|  | 59 | //                              style(fen); | 
|---|
|  | 60 | //tt->bololut[fen-1]=lecture_en_cours; | 
|---|
|  | 61 |  | 
|---|
|  | 62 | for(i=0;i<n;i++) | 
|---|
|  | 63 | { | 
|---|
|  | 64 | //  16 bit utiles dans     gg->bol_per | 
|---|
|  | 65 | trace(fen,i, ((double)((gg->bol_per[fen-1][i]&0x7fff)-0x4000))); | 
|---|
|  | 66 | a=(gg->bol_per[fen-1][i]>>15)&1; | 
|---|
|  | 67 | if(a!=c)        { | 
|---|
|  | 68 | c=a;    if(a)   modtrace(fen,1,bleu); | 
|---|
|  | 69 | else    modtrace(fen,1,rouge); | 
|---|
|  | 70 | } | 
|---|
|  | 71 | } | 
|---|
|  | 72 | trace(fen,n, ((double)((gg->bol_per[fen-1][0]&0x7fff)-0x4000))); | 
|---|
|  | 73 | if(gg->flag_tc_reduite)         break;  /* pas d'auto en local  si en tc_reduites */ | 
|---|
|  | 74 | if( (litD(fen,b_auto,0L))!=0)   auto_control(fen,auto_val); | 
|---|
|  | 75 | if(auto_tr[fen-1])              {auto_transitoire(fen,auto_tr[fen-1]);auto_tr[fen-1]--;} | 
|---|
|  | 76 |  | 
|---|
|  | 77 | break; | 
|---|
| [649] | 78 | //  avec fenetre de dialogue pour envoyer une valeur directe | 
|---|
|  | 79 | case b_carre    :       ouvreD(fen_change_bolo,change_bolo_id,"chgbolo",0); | 
|---|
|  | 80 | if(1==modal(fen_change_bolo)) | 
|---|
|  | 81 | { | 
|---|
|  | 82 | valeur=litD(fen_change_bolo,chb_val,0); | 
|---|
|  | 83 | printf("  val=%d  %n",(int)valeur); | 
|---|
|  | 84 | ecritD(fen,b_carre,(int)valeur); | 
|---|
|  | 85 | ecritgain(fen); | 
|---|
|  | 86 | } | 
|---|
|  | 87 | ferme(fen_change_bolo); | 
|---|
|  | 88 | break; | 
|---|
| [637] | 89 |  | 
|---|
| [649] | 90 | case b_tri      :       ouvreD(fen_change_bolo,change_bolo_id,"chgbolo",0); | 
|---|
|  | 91 | if(1==modal(fen_change_bolo)) | 
|---|
|  | 92 | { | 
|---|
|  | 93 | valeur=litD(fen_change_bolo,chb_val,0); | 
|---|
|  | 94 | printf("  val=%d  %n",(int)valeur); | 
|---|
|  | 95 | ecritD(fen,b_tri,(int)valeur); | 
|---|
|  | 96 | ecritgain(fen); | 
|---|
|  | 97 | } | 
|---|
|  | 98 | ferme(fen_change_bolo); | 
|---|
|  | 99 | break; | 
|---|
|  | 100 |  | 
|---|
|  | 101 | case b_trans    :       ouvreD(fen_change_bolo,change_bolo_id,"chgbolo",0); | 
|---|
|  | 102 | if(1==modal(fen_change_bolo)) | 
|---|
|  | 103 | { | 
|---|
|  | 104 | valeur=litD(fen_change_bolo,chb_val,0); | 
|---|
|  | 105 | printf("  val=%d  %n",(int)valeur); | 
|---|
|  | 106 | ecritD(fen,b_trans,(int)valeur); | 
|---|
|  | 107 | ecritgain(fen); | 
|---|
|  | 108 | } | 
|---|
|  | 109 | ferme(fen_change_bolo); | 
|---|
|  | 110 | break; | 
|---|
|  | 111 |  | 
|---|
|  | 112 | case b_lin      :       ouvreD(fen_change_bolo,change_bolo_id,"chgbolo",0); | 
|---|
|  | 113 | if(1==modal(fen_change_bolo)) | 
|---|
|  | 114 | { | 
|---|
|  | 115 | valeur=litD(fen_change_bolo,chb_val,0); | 
|---|
|  | 116 | printf("  val=%d  %n",(int)valeur); | 
|---|
|  | 117 | ecritD(fen,b_lin,(int)valeur); | 
|---|
|  | 118 | ecritgain(fen); | 
|---|
|  | 119 | } | 
|---|
|  | 120 | ferme(fen_change_bolo); | 
|---|
|  | 121 | break; | 
|---|
|  | 122 |  | 
|---|
|  | 123 |  | 
|---|
|  | 124 |  | 
|---|
|  | 125 | /* | 
|---|
| [637] | 126 | //  reecrit les valeurs dans la fenetre pour appel par un autre programme | 
|---|
|  | 127 | case b_carre    :       ecritD(fen,b_carre,(int)valeur);                ecritgain(fen);         break; | 
|---|
|  | 128 | case b_tri      :       ecritD(fen,b_tri,(int)valeur);                  ecritgain(fen);         break; | 
|---|
|  | 129 | case b_trans    :       ecritD(fen,b_trans,(int)valeur);                ecritgain(fen);         break; | 
|---|
|  | 130 | case b_lin      :       ecritD(fen,b_lin,(int)valeur);                  ecritgain(fen);         break; | 
|---|
| [649] | 131 |  | 
|---|
|  | 132 | */ | 
|---|
| [637] | 133 | case b_gain     :       vg[fen-1]=0;  ecritD(fen,b_gain,(int)valeur);   ecritgain(fen);         break; | 
|---|
|  | 134 | case b_phase    :       ecritD(fen,b_phase,(int)valeur);                ecritgain(fen);         break; | 
|---|
|  | 135 | case b_comm     :       ecritD(fen,b_comm,(int)valeur);                 ecritgain(fen);         break; | 
|---|
|  | 136 | case b_voie     :                                                       ecritgain(fen);         break; | 
|---|
|  | 137 | case caseferme  :       //SizeWindow(ptf->ptwindow,210,105,1);MoveWindow(ptf->ptwindow,620,-20+fen*95,0);zoom(fen); | 
|---|
|  | 138 | stop_exec(fen); break; | 
|---|
|  | 139 |  | 
|---|
|  | 140 | break; | 
|---|
|  | 141 | case b_auto_trans:      case    b_auto_trans+1000       :       auto_tr[fen-1]=20;              break; | 
|---|
|  | 142 | case b_auto_lin :       case    b_auto_lin+1000         :       ecritD(fen,b_lin,2048);         break; | 
|---|
|  | 143 |  | 
|---|
|  | 144 | case b_auto     :       ecritgain(fen); | 
|---|
|  | 145 | //                              if(valeur && (! gg->flag_tc_reduite) ) | 
|---|
|  | 146 | if(valeur)      auto_control(fen,auto_force); | 
|---|
|  | 147 | break; | 
|---|
|  | 148 |  | 
|---|
|  | 149 | default         :       break; | 
|---|
|  | 150 | } | 
|---|
|  | 151 | } | 
|---|
|  | 152 |  | 
|---|
|  | 153 |  | 
|---|
|  | 154 | unsigned char codage_12_bit(int av,int an); | 
|---|
|  | 155 | unsigned char codage_12_bit(int av,int an) | 
|---|
|  | 156 | { | 
|---|
|  | 157 | int a=an-av; | 
|---|
|  | 158 | if( (a>0) && (a<64) ) a =  0x40  |  a; | 
|---|
|  | 159 | else    if( (a<0) && (a>-64) ) a = -a; | 
|---|
|  | 160 | else    a=0x80  |  ((an&0xfff)>>5) ; | 
|---|
|  | 161 | return(a); | 
|---|
|  | 162 | } | 
|---|
|  | 163 |  | 
|---|
|  | 164 |  | 
|---|
|  | 165 | void ecritgain(int fen)         // ecrit gain, carre, triangle, .....gg->reglage.dac[...] | 
|---|
|  | 166 | { | 
|---|
|  | 167 | int carr,tri,lin,tran,i,j,gainbrut,phase,comm,voie; | 
|---|
|  | 168 | int gain_MLPA[16]={1,2,4,8,10,20,40,80,100,200,400,800,1000,2000,4000,8000}; | 
|---|
|  | 169 | int gain_BEBO[4]={5,25,100,500};        /*      gainbrut ampli  1 / 5 / 20 / 100        */ | 
|---|
|  | 170 | int gain_BEDIF[3]={10,40,200};          /*      gainbrut ampli  2 / 8 / 40      */ | 
|---|
|  | 171 | int table_phase[4]={0,1,3,2}; | 
|---|
|  | 172 | char bit[80]; | 
|---|
|  | 173 | int b,ordre; | 
|---|
|  | 174 | char mot_tc[10]; | 
|---|
|  | 175 | carr=litD(fen,b_carre,0L); | 
|---|
|  | 176 | tri=litD(fen,b_tri,0L); | 
|---|
|  | 177 | lin=litD(fen,b_lin,0L); | 
|---|
|  | 178 | tran=litD(fen,b_trans,0L); | 
|---|
|  | 179 | gainbrut=litD(fen,b_gain,0L); | 
|---|
|  | 180 | phase=litD(fen,b_phase,0L); | 
|---|
|  | 181 | comm=litD(fen,b_comm,0L); | 
|---|
|  | 182 | if(litD(fen,b_auto,0L))  voie=litD(fen,b_voie,0L);      else voie=0; | 
|---|
|  | 183 |  | 
|---|
|  | 184 | //  verifie les gainsbrut  en fonction de la boite utilisée | 
|---|
|  | 185 | switch(parametr.bolo[fen-1].bolo_bebo) | 
|---|
|  | 186 | { | 
|---|
|  | 187 | case    0:      //  ----------------------   programmation MLPA  ------------------- | 
|---|
|  | 188 | break; | 
|---|
|  | 189 | case    2: | 
|---|
|  | 190 | case    3: | 
|---|
|  | 191 | case    4:      //  ----------------------   programmation BEBO  ------------------- | 
|---|
|  | 192 | if(gainbrut>3) {gainbrut=3;ecritD(fen,b_gain,3);} | 
|---|
|  | 193 | gainbrut+=16;   // pour une BEBO | 
|---|
|  | 194 | break; | 
|---|
|  | 195 |  | 
|---|
|  | 196 | case    10:     //  ----------------------   programmation Bediff  ------------------- | 
|---|
|  | 197 | if(gainbrut>2) {gainbrut=2;ecritD(fen,b_gain,2);} | 
|---|
|  | 198 | gainbrut+=20;   //  pour une BEDIFF | 
|---|
|  | 199 | if(phase>1) {phase=1;ecritD(fen,b_phase,1);} | 
|---|
|  | 200 |  | 
|---|
|  | 201 | default :       break; | 
|---|
|  | 202 | } | 
|---|
|  | 203 |  | 
|---|
|  | 204 |  | 
|---|
|  | 205 |  | 
|---|
|  | 206 | //  emission des telecommandes reduites au lieu des telecommandes completes | 
|---|
|  | 207 |  | 
|---|
|  | 208 | if(gg->flag_tc_reduite) | 
|---|
|  | 209 | { | 
|---|
|  | 210 | if(carr!=dac_V(gg->reglage.bolo[fen-1])) | 
|---|
|  | 211 | emission_tc_reduite(tc2_bolo_dacV,fen-1,codage_12_bit(dac_V(gg->reglage.bolo[fen-1]),carr)); | 
|---|
|  | 212 |  | 
|---|
|  | 213 | if(tri!=dac_I(gg->reglage.bolo[fen-1])) | 
|---|
|  | 214 | emission_tc_reduite(tc2_bolo_dacI,fen-1,codage_12_bit(dac_I(gg->reglage.bolo[fen-1]),tri)); | 
|---|
|  | 215 |  | 
|---|
|  | 216 | if(tran!=dac_T(gg->reglage.bolo[fen-1])) | 
|---|
|  | 217 | emission_tc_reduite(tc2_bolo_dacT,fen-1,codage_12_bit(dac_T(gg->reglage.bolo[fen-1]),tran)); | 
|---|
|  | 218 |  | 
|---|
|  | 219 | if(lin!=dac_L(gg->reglage.bolo[fen-1])) | 
|---|
|  | 220 | emission_tc_reduite(tc2_bolo_dacL,fen-1,codage_12_bit(dac_L(gg->reglage.bolo[fen-1]),lin)); | 
|---|
|  | 221 |  | 
|---|
|  | 222 | if( (gainbrut!=gainbrut(gg->reglage.bolo[fen-1])) | 
|---|
|  | 223 | ou (phase!=phase(gg->reglage.bolo[fen-1])) | 
|---|
|  | 224 | ou (comm!=comm(gg->reglage.bolo[fen-1])) ) | 
|---|
|  | 225 | emission_tc_reduite(tc2_bolo_gain,fen-1,bolo_mot1(carr,tri,gainbrut,phase,comm)); | 
|---|
|  | 226 |  | 
|---|
|  | 227 | if(voie!=voie(gg->reglage.bolo[fen-1])) | 
|---|
|  | 228 | emission_tc_reduite(tc2_bolo_voie,fen-1,voie); | 
|---|
|  | 229 | } | 
|---|
|  | 230 |  | 
|---|
|  | 231 | else    { | 
|---|
|  | 232 | for(j=0;j<72;j++) bit[j]=0;                     //  prepare 72 bits à envoyer en 9 mots de 8 bits | 
|---|
|  | 233 |  | 
|---|
|  | 234 | switch(parametr.bolo[fen-1].bolo_bebo) | 
|---|
|  | 235 | { | 
|---|
|  | 236 | case    0: | 
|---|
|  | 237 | {                       //  ----------------------   programmation MLPA  ------------------- | 
|---|
|  | 238 | //      printf("programmation MLPA:  tri=%d  car=%d \n",tri,carr); | 
|---|
|  | 239 |  | 
|---|
|  | 240 | mot_tc[0]=parametr.bolo[fen-1].bolo_num;        //  premier mot de 8 bit (code adresse bolometre) | 
|---|
|  | 241 | //      printf(" ecrit bolo %d \n",gg->bolo[fen-1].bolo_num); | 
|---|
|  | 242 | bit[0]=table_phase[phase&3]>>1; bit[1]=table_phase[phase&3]; | 
|---|
|  | 243 | b=2; | 
|---|
|  | 244 | for(i=11;i>=0;i--) {bit[b]=1;   bit[b+1]=tran>>i;   bit[b+2]=lin>>i;    bit[b+3]=tri>>i;   bit[b+4]=carr>>i;b+=5;} | 
|---|
|  | 245 | bit[b]=1;   bit[b+1]=gainbrut>>3;   bit[b+2]=gainbrut>>2;   bit[b+3]=gainbrut>>1;  bit[b+4]=gainbrut; | 
|---|
|  | 246 | ordre=0; | 
|---|
|  | 247 | } | 
|---|
|  | 248 | break; | 
|---|
|  | 249 |  | 
|---|
|  | 250 |  | 
|---|
|  | 251 | case    2: | 
|---|
|  | 252 | case    3: | 
|---|
|  | 253 | case    4: | 
|---|
|  | 254 | {                       //  ----------------------   programmation BEBO  ------------------- | 
|---|
|  | 255 | mot_tc[0]=8*parametr.bolo[fen-1].bolo_bebo + parametr.bolo[fen-1].bolo_num;     //  premier mot de 8 bit (code adresse bolometre) | 
|---|
|  | 256 | //      printf("programmation BEBO N° :  tri=%d  car=%d \n",mot_tc[0],tri,carr); | 
|---|
|  | 257 |  | 
|---|
|  | 258 | bit[0]=gainbrut>>1;     bit[1]=gainbrut;        bit[2]=table_phase[phase&3]>>1; bit[3]=table_phase[phase&3]; | 
|---|
|  | 259 | b=4; | 
|---|
|  | 260 | for(i=11;i>=0;i--)      bit[b++]=(tri>>i)&1; | 
|---|
|  | 261 | for(i=11;i>=0;i--)      bit[b++]=(carr>>i)&1; | 
|---|
|  | 262 | for(i=11;i>=0;i--)      bit[b++]=(tran>>i)&1; | 
|---|
|  | 263 |  | 
|---|
|  | 264 | ecritD(fen,b_lin,0); | 
|---|
|  | 265 | ordre=0; | 
|---|
|  | 266 | } | 
|---|
|  | 267 | break; | 
|---|
|  | 268 |  | 
|---|
|  | 269 | case    10: | 
|---|
|  | 270 | {                       //  ----------------------   programmation Bediff  ------------------- | 
|---|
|  | 271 | //  ---  les bits sortent dans l'autre sens : poid faible d'abord  ---- | 
|---|
|  | 272 | //  --  il faut donc retourner les bits des dacs | 
|---|
|  | 273 | //              lin=0; | 
|---|
|  | 274 | //              ecritD(fen,b_lin,lin);  gg->reglage.dac[d_lin][fen-1]=lin; // pas de linearité | 
|---|
|  | 275 | mot_tc[0]= parametr.bolo[fen-1].bolo_num;       //  premier mot de 8 bit (code adresse bolometre) | 
|---|
|  | 276 | printf("programmation BEdiff N° %d:  tri=%d  car=%d \n",mot_tc[0],tri,carr); | 
|---|
|  | 277 |  | 
|---|
|  | 278 | bit[0]=gainbrut>>1;     bit[1]=gainbrut;        bit[2]=comm; bit[3]=phase; | 
|---|
|  | 279 | b=4; | 
|---|
|  | 280 | for(i=11;i>=0;i--)      bit[b++]=(tri>>i)&1; | 
|---|
|  | 281 | for(i=11;i>=0;i--)      bit[b++]=(carr>>i)&1; | 
|---|
|  | 282 | for(i=11;i>=0;i--)      bit[b++]=(tran>>i)&1; | 
|---|
|  | 283 | for(i=11;i>=0;i--)      bit[b++]=(lin>>i)&1; | 
|---|
|  | 284 | ordre=1; | 
|---|
|  | 285 | } | 
|---|
|  | 286 | break; | 
|---|
|  | 287 |  | 
|---|
|  | 288 |  | 
|---|
|  | 289 | default :       break; | 
|---|
|  | 290 | } | 
|---|
|  | 291 |  | 
|---|
|  | 292 |  | 
|---|
|  | 293 |  | 
|---|
|  | 294 |  | 
|---|
|  | 295 | if (ordre)                      //  remet les bit par mot de 8 bit poid faible en premier | 
|---|
|  | 296 | for(i=0;i<9;i++)        mot_tc[i+1]= | 
|---|
|  | 297 | ( ((bit[8*i]&1)) | ((bit[8*i+1]&1)<<1) | ((bit[8*i+2]&1)<<2) | ((bit[8*i+3]&1)<<3) | 
|---|
|  | 298 | | ((bit[8*i+4]&1)<<4) | ((bit[8*i+5]&1)<<5) | ((bit[8*i+6]&1)<<6) | ((bit[8*i+7]&1)<<7 ) ); | 
|---|
|  | 299 |  | 
|---|
|  | 300 | else                            //  remet les bit par mot de 8 bit, poid fort en premier | 
|---|
|  | 301 | for(i=0;i<9;i++)        mot_tc[i+1]= | 
|---|
|  | 302 | ( ((bit[8*i]&1)<<7) | ((bit[8*i+1]&1)<<6) | ((bit[8*i+2]&1)<<5) | ((bit[8*i+3]&1)<<4) | 
|---|
|  | 303 | | ((bit[8*i+4]&1)<<3) | ((bit[8*i+5]&1)<<2) | ((bit[8*i+6]&1)<<1) | ((bit[8*i+7]&1) ) ); | 
|---|
|  | 304 |  | 
|---|
|  | 305 | emission_telecommande(tc_dir_transputer,mot_tc); | 
|---|
|  | 306 |  | 
|---|
|  | 307 | gg->reglage.bolo[fen-1].mot1=bolo_mot1(carr,tri,gainbrut,phase,comm); | 
|---|
|  | 308 | gg->reglage.bolo[fen-1].mot2=bolo_mot2(tran,lin,voie); | 
|---|
|  | 309 |  | 
|---|
|  | 310 | } | 
|---|
|  | 311 | mesures_bolo(fen,carr,tri,1);           //  mesure temperature, puissance,... pour les bolos | 
|---|
|  | 312 |  | 
|---|
|  | 313 | tt->reglage=gg->reglage; | 
|---|
|  | 314 |  | 
|---|
|  | 315 | fich_save_partiel(1); | 
|---|
|  | 316 | } | 
|---|
|  | 317 |  | 
|---|
|  | 318 |  | 
|---|
|  | 319 | /* | 
|---|
|  | 320 |  | 
|---|
|  | 321 | void    ecritpulseprisme(int per); | 
|---|
|  | 322 |  | 
|---|
|  | 323 | void ecritpulseprisme(int per)                                                  //   ecrit l'etat.bolo :  gg->reglage.diode_dure | 
|---|
|  | 324 | { | 
|---|
|  | 325 | //int i; | 
|---|
|  | 326 | gg->reglage.diode_dure=per; | 
|---|
|  | 327 | per=per+1; | 
|---|
|  | 328 | //printf(" ecriture de per=%d  \n",per); | 
|---|
|  | 329 | // lecture et ecriture carte du nopmbre de mesures | 
|---|
|  | 330 | if(per<1)       per=1;  if(per>31) per=31; | 
|---|
|  | 331 | //ecrit_nubus_dec(25);          //  valeur  2 * num_bolo  +1  = 2*12 + 1 = 25 | 
|---|
|  | 332 | //ecrit_nubus_dec(per & 31 );   //  5 bits ecriture | 
|---|
|  | 333 | //for(i=0;i<12;i++) ecrit_nubus_dec(0); | 
|---|
|  | 334 | fich_save_partiel(1); | 
|---|
|  | 335 | } | 
|---|
|  | 336 | */ | 
|---|