1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
#ifndef _CALCCAMIR_H // Pour éviter des warnings de redéfinitions lors de la compilation.
#define _CALCCAMIR_H
//-------------------------------------------------------------------------------------
// Chemin des LUT
#define DVCAMIR_NFS_LUT_DIR "F:\\lut\\"
//-------------------------------------------------------------------------------------
// PTSSURLUT doit être >=7 car sinon 3*2^14>MAXPTSLUT avec MAXPTSLUT=500;
#define PTSSURLUT 8 // On prend 1 point sur 2^PTSSURLUT pour définir la LUT
#define MAXPTSLUT 500 // Nb MAX de points max sur chaque LUT
#define MAXSIZELINE 100 // Nb MAX de caracteres d'une ligne
#define MAXDATAINFILE 2000 // Nb MAX de caracteres dans le fichier LUT
#define MAXDATALUT 200 // Nb MAX de données de la LUT brute
//-------------------------------------------------------------------------------------
#ifndef GEMINY
#define GEMINY 01
#endif
#ifndef INDIGO
#define INDIGO 02
#endif
#define NUM_LUMV12_MAX 12
#define NB_FENETRES 16
// Stocke un fichier LUT en mémoire.
char FileLUTStockMem[MAXDATAINFILE];
typedefstruct
{
float Temp_Fut; // Température du fut optique
float Temp_Prisme; // Température du prisme
float Temp_Saphir; // Température de la fenetre saphir
float Trans_Fut[2]; // Transmission du fut optique
float Trans_Prisme[2]; // Transmission du prisme
float Trans_Saphir[2]; // Transmission de la fenetre saphir
short Type; // Type de caméra (Geminy (1) ou Indigo (2))
short PtsLUT; // Nb de points dans LUT1 et LUT2
float LUT1[MAXPTSLUT]; // LUT pour la zone 1
float LUT2[MAXPTSLUT]; // LUT pour la zone 2
int PosArrete; // Position de l'arrete qui sépare les 2 zones du LPT
char LUT1FilePath[256]; // Chemin vers le fichier de la LUT1.
char LUT2FilePath[256]; // Chemin vers le fichier de la LUT2.
char LUT3FilePath[256]; // Chemin vers le fichier de la LUT3.
} struct_endoscope;
struct_endoscope Endoscope[12];
#define Longint long
extern Longint TSRqParm (Longint NumChoc, char* NomProd, char* NomObjet,
char*NomParam, Longint NbVal, char**valeurs,
Longint* NbElem, Longint * format ); // pour une DLL
// ---------> Interpolation linéaire des données
short Interpol (long *xTab, long *yTab, int lTab, float xVal, float *yVal);
// ---------> Reset de la structure Endoscope (tout à 0)
void Reset_Endoscope (struct_endoscope *Endoscope);
// ---------> Lecture d'une variable de type float dans Top
short LitTopFloat(long nchoc, char *NmProd, char *NmObj, char *NmPar, float *Val);
// ---------> Lecture d'une variable de type String dans Top
short LitTopString(long nchoc, char *NmProd, char *NmObj, char *NmPar, char *Str);
// ---------> Lecture d'un fichier LUT .txt (calibration)
short ReadFicLUT (char *NmFicLUT, long *xLUTi, long *yLUTi, short *lLUTi);
// ---------> Construction de la LUT finale pour passer des DL en T°
short ConstructLUT (long *xLUTi, long *yLUTi, short lLUTi,
short NumLUT, short Zone, struct_endoscope *Endoscope,
float *xLUT , float *yLUT , short *lLUT );
// ---------> Lecture des fichiers de calibration LUT1 ou 2 ou 3
short InitLUT (long nchoc, short nEndo, short nLUT, long *xLUTi, long *yLUTi, short *lLUTi);
// ---------> Recopie de la LUT calibrée dans les varaibles de la structure Endoscope
void RecopieLUT(struct_endoscope *Endoscope , short Zone , float *DL , float *TP ,
short lDL);
// ---------> Lecture des données Top et initialisation de la structure Endoscope
short Init_Endoscope (long nchoc, short nEndo, struct_endoscope *Endoscope);
// ---------> Calcul de la T° à partir des DL mesurés
short DL2Temp (struct_endoscope *Endoscope, short zone, long DL, float *Temp);
// ---------> Calcul du DL à partir d'une température
short Temp2DL (struct_endoscope *Endoscope, short zone, float Temp, long *DL);
#endif
|
Partager