source: Sophya/trunk/Poubelle/archediab.old/archediab.sources/c/sstbrut-ab.c

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

archediab 29

File size: 5.1 KB
RevLine 
[651]1#include "diabolo.h"
2#include "sstbrut.h"
3#include "compress.h"
4
5
6
7//-------------------- fonction exec de la fenetre : senseur_stellaire -------------------------------
8
9
10void exec_sstbrut(int fen,int item,double valeur,...)
11{
12if(item>1000) item-=1000; // pour appeler le case pour tous les cara d'un edit texte
13
14switch(item)
15 {
16 case ouverture :
17
18 break;
19 case fermeture :
20 break;
21 case sstb_azer :
22 break;
23 case sstb_sortie_brute :
24 break;
25 default : break;
26 }
27}
28
29//#define bit_sst(i,j,k) (((blk->sst[i][i*3+k/4])>>(j+8*k%4))&1)
30
31
32// i est le numero du point dans le block de 72
33// j est le numero de la diode de 0 a 47
34// j%8 est la place du bit dans le mot de 8 bit
35// j/8 (de 0 a 5 ) est la serie de mesure
36// k est le numero du bit dans le mot de 12 bits
37// les k se suivent dans les données
38
39// k est le numero du point dans le block de 72
40// i est le numero de la diode de 0 a 47
41// j est le paquet de 4 bits de 0 a 2
42
43
44// on prend des paquets de 4 bits
45// chaque diode est formee de 3 paquets
46// dans l'ordre : les paquets de 8 diodes (8 paquets)
47// recommencer 3 fois (24 paquets)
48// enfin, faire 6 fois cette operation (144 paquets)
49
50// soit q la place du paquet i,j,k
51#define place_paquet(i,j) (i/8) * 24 + j*8 + (i%8)
52
53void traite_block_sst_comprime_brut (block_type_sst_comprime* blk)
54{
55int i,q,k,j,prem_d;
56double x;
57int temps_cntl;
58double secondes;
59double y[15];
60
61long sst[nb_photo_diodes][nb_per_block*2];
62
63if(!fenetre(fenetre_sstbrut)) return;
64
65printf(" k de la photodiode N03 (2 dans tableau = %d \n",blk->sst[2][1]&0xf);
66
67for(j=0;j<nb_photo_diodes;j++) decompress_4_1((long *)blk->sst[j],sst[j],nb_per_block*2);
68
69prem_d=litD(fenetre_sstbrut,sstb_prem_diode,0L);
70
71for(k=0;k<72;k++)
72 {
73 for(i=0;i<10;i++) // seulement 12 diodes
74 {
75 q=i+prem_d-1;
76
77 if(q<nb_photo_diodes) x=(double)(sst[q][k]&0xfff) ; else x=0;
78 x-=2048;
79 y[i]=x;
80 }
81 // printf(" y = %g %g %g %g %g \n",y[0],y[1],y[2],y[3],y[4]);
82 temps_cntl =numero_block(blk)*nb_per_block*2+k;
83 secondes=gg->periode_echantillonage*(double)temps_cntl-gg->temps_origine;
84 tracen(fenetre_sstbrut,10,secondes,y);
85 }
86
87
88
89}
90
91
92
93void traite_block_sst_brut(block_type_sst* blk)
94{
95int i,j,k;
96double y[15];
97double x;
98
99int temps_cntl;
100double secondes;
101int a,b,b0,b1,b2;
102int prem_d;
103
104if(!fenetre(fenetre_sstbrut)) return;
105// ecriture des valeurs brutes du senseur stellaire
106// les numero 0 et 4 sont dediés aux thermometres
107// pour l'instant machent bien 1 2 3 8 9 10 11
108if(litD(fenetre_sstbrut,sstb_sortie_brute,0))
109 {
110 if(!fenetre(fenetre_senseur_stellaire_lecture_brute)) nouveauT(fenetre_senseur_stellaire_lecture_brute,0,"lecture senseur stellaire");
111
112 ecritT(fenetre_senseur_stellaire_lecture_brute,fin_f,"\nsenseur stellaire \n");
113
114
115// k=0;
116 for(k=0;k<4;k++)
117 {
118 for(i=0;i<16;i++) // 16 senseurs
119 {
120 for(j=0;j<3;j++) // 3 paquets
121 {
122 a=place_paquet(i,j);
123 b= ( blk->sst[k][a/8] >>( (a%8)*4) ) & 0xf;
124 ecritT(fenetre_senseur_stellaire_lecture_brute,fin_f,"%x",b);
125 }
126 ecritT(fenetre_senseur_stellaire_lecture_brute,fin_f," ");
127 }
128 ecritT(fenetre_senseur_stellaire_lecture_brute,fin_f,"\n");
129 }
130
131 ecritT(fenetre_senseur_stellaire_lecture_brute,fin_f,"\n");
132
133 }
134
135//k=0;
136prem_d=litD(fenetre_sstbrut,sstb_prem_diode,0L);
137for(k=0;k<72;k++)
138 {
139 for(i=0;i<12;i++) // seulement 12 diodes
140 {
141 int q;
142 q=i+prem_d-1;
143
144 a=place_paquet(q,0);
145 b0= ( blk->sst[k][a/8] >>( (a%8)*4) ) & 0xf;
146 a=place_paquet(q,1);
147 b1= ( blk->sst[k][a/8] >>( (a%8)*4) ) & 0xf;
148 a=place_paquet(q,2);
149 b2= ( blk->sst[k][a/8] >>( (a%8)*4) ) & 0xf;
150
151
152 x=(double)( (b0<<8) | (b1<<4) | b2 ) ;
153 if(x>2047) x-=4096;
154 y[i]=x;
155 }
156// printf(" y = %g %g %g %g %g \n",y[0],y[1],y[2],y[3],y[4]);
157 temps_cntl =numero_block(blk)*nb_per_block*2+k;
158 secondes=gg->periode_echantillonage*(double)temps_cntl-gg->temps_origine;
159 tracen(fenetre_sstbrut,12,secondes,y);
160 }
161}
162
163
164
165// les 46 valeurs en hexa
166// i=0; // juste le premier point du block
167// for(i=0;i<72;i++)
168/*
169for(i=0;i<72;i++)
170 {
171
172 for(j=0;j<12;j++) // seulement les 12 premieres diodes
173 {
174 x=0;
175 for(k=0;k<12;k++) x=(x<<1) | bit_sst(i,j,k);
176 y[j]=(double)x;
177 }
178 temps_cntl =numero_block(blk)*nb_per_block*2+i;
179 secondes=gg->periode_echantillonage*(double)temps_cntl-gg->temps_origine;
180 tracen(fenetre_senseur_stellaire,12,secondes,y);
181 }
182
183*/
184/* i=1; // juste le premier point du block
185// for(i=0;i<72;i++)
186 {
187 for(k=0;k<12;k++) // 12 bits
188 {
189 for(j=0;j<35;j++) // 46 senseurs
190 {
191 ecritT(fenetre_senseur_stellaire_lecture_brute,fin_f,"%d ",bit_sst(i,j,k));
192 }
193 ecritT(fenetre_senseur_stellaire_lecture_brute,fin_f,"\n");
194 }
195 ecritT(fenetre_senseur_stellaire_lecture_brute,fin_f,"\n");
196 }
197
198// les 46 valeurs en hexa
199// i=0; // juste le premier point du block
200// for(i=0;i<72;i++)
201 for(i=0;i<10;i++)
202 {
203 for(j=0;j<35;j++) // 46 senseurs
204 {
205 x=0;
206 for(k=0;k<12;k++) x=(x<<1) | bit_sst(i,j,k);
207 ecritT(fenetre_senseur_stellaire_lecture_brute,fin_f,"%3x ",x);
208 }
209 ecritT(fenetre_senseur_stellaire_lecture_brute,fin_f,"\n");
210 }
211
212
213 }
214
215
216*/
Note: See TracBrowser for help on using the repository browser.