/*-------------------------------------------------------------------------*/ /* Application : BigScan */ /* Module : BigScan.H */ /* Auteur : Pascal Chibrac */ /* Date : 28/03/2001 */ /* Version : 4.02 */ /*-------------------------------------------------------------------------*/ #define STRICT #define WIN31 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "ctl3d.h" #include "wbfich.h" #include "dlg.h" #include "comdevi.h" /*-------------------------------------------------------------------------*/ /* D‚claration des constantes */ /*-------------------------------------------------------------------------*/ #define VERSION "Version 4.02 - 28/03/2001" /*------------------------------ ACQ12 / ACQ16 ----------------------------*/ #define ACQ12 0 #define ACQ16 1 /*--------------------------- Onduleur SAFT / MGE -------------------------*/ #define SAFT 0 #define MGE 1 /*--------------------- Commande de reception des cartes ------------------*/ #define RX_ACK "\x01\x06" #define RX_READ_SEUIL "\x03\x8B" #define RX_MESURE "\x03\x8B" #define RX_TEST_DELTAV "\x03\x8B" /*----------------- Commande de transmission avec les cartes --------------*/ #define TX_DEBUG_PROTECT_DELTA "\x03\x01\x1F\x08" #define TX_TIME_ACQ "\x03\x03\x80\x20" /* Tacq = 8ms */ #define TX_MOY_DV "\x02\x0E\x04" /* Moy = 1024 (8,192s) */ #define TX_RDERR "\x01\x0F" #define TX_ECHELLEMAX "\x02\x06\x01" #define TX_ECHELLEMIN "\x02\x06\x00" #define TX_LED_ALLUMEE "\x04\x12\x03\x00\x00" #define TX_LED_CLIGNOTANTE "\x04\x12\x01\x01\x03" #define TX_LED_CHARGEUR_EXTERNE "\x04\x12\x02\x01\x03" #define TX_LED_DEBUG "\x04\x12\x81\x01\x03" #define TX_LED_OFF "\x04\x12\x00\x01\x03" #define TX_OUT1_OFF "\x03\x04\x04\x00" #define TX_PROTECT_OFF "\x03\x01\x1F\x00" #define TX_PROTECT_DV "\x03\x01\x1F\x18" #define TX_PROTECT_MAX "\x03\x01\x1F\x02" #define TX_PROTECT_DVMAX "\x03\x01\x1F\x1A" #define TX_PROTECT_MIN "\x03\x01\x1F\x01" #define TX_READ_SEUIL "\x01\x0A" #define TX_MESURE "\x01\x0B" #define TX_TEST_DELTAV "\x01\x0C" #define TX_TIME_OUT_ON "\x03\x04\x80\x80" #define TX_TIME_OUT_OFF "\x03\x04\x80\x00" #define TX_TTL3_ON "\x03\x04\x10\x00" /* Niveau 1 sortie TTL 3 : DCH 0V */ #define TX_TTL3_OFF "\x03\x04\x10\x10" /* Niveau 0 sortie TTL 3 : CH 5V */ #define TX_CHARGEUR_ON "\x03\x04\x08\x00" /* Niveau 1 sortie TTL 2 */ #define TX_CHARGEUR_OFF "\x03\x04\x08\x08" /* Niveau 0 sortie TTL 2 */ #define TX_BATTERIE_ON "\x03\x04\x01\x01" #define TX_BATTERIE_OFF "\x03\x04\x01\x00" #define TX_ALIM_ON "\x03\x04\x02\x02" #define TX_ALIM_OFF "\x03\x04\x02\x00" #define TX_RESET_CARTE "\x01\x00" #define TX_LECTURE_SORTIE "\x01\x05" /*-------------------- Identificateurs des classes des fenˆtres -----------*/ #define DEFAUTCLASS "Defaut" /* Classe boite de dialogue d‚faut */ #define TOPCLASS "BigScan" /* Classe fenˆtre principale */ #define HORLOGECLASS "Horloge" /* Classe fenˆtre horloge */ #define LEGENDECLASS "Legende" /* Classe fenˆtre l‚gende */ #define VISUCLASS "Visu" /* Classe fenˆtre de visualisation */ #define HISTOCLASS "Histo" /* Classe fenˆtre de visualisation des histogrammes */ /*---------------------------- Identificateurs timers ---------------------*/ #define TIMERHORLOGE 2000 /* Timer pour afficherl'horloge */ #define TIMERREGLAGE1 2001 /* Timer en sec pour reglage alims test 1 */ #define TIMERREGLAGE2 2002 /* Timer en sec pour reglage alims test 2 */ #define TIMERREGLAGE3 2003 /* Timer en sec pour reglage alims test 3 */ #define TIMERREGLAGE4 2004 /* Timer en sec pour reglage alims test 4 */ #define TIMERREGLAGE5 2005 /* Timer en sec pour reglage alims test 5 */ #define TIMERREGLAGE6 2006 /* Timer en sec pour reglage alims test 6 */ #define TIMERREGLAGE7 2007 /* Timer en sec pour reglage alims test 7 */ #define TIMERREGLAGE8 2008 /* Timer en sec pour reglage alims test 8 */ #define DELAYWARNINGSECTEUR 15 /* Temps mis par l'onduleur pour signaler une coupure secteur */ /*------------------------------- R‚solution ADC --------------------------*/ #define RESOLUTION_ADC_ACQ12 (float) 4095 /* ACQ16 */ #define RESOLUTION_ADC_ACQ16 (float) 32768 /* ACQ16 */ /*--------------------------------- Dur‚e timer ---------------------------*/ #define TIMER_SECONDE (WORD) 989 /* Timer d'une seconde */ #define DUREETIMER (WORD) 989 /* Dur‚e timers de cyclage et de r‚glage */ /*------------------ Nombre de timers pour un test par seconde ------------*/ #define NBRTIMERTESTBYSECONDE (double) ((double) TIMER_SECONDE / (double) DUREETIMER) /*-------------------------- Dur‚e minimale de la charge ------------------*/ #define DUREEMINCHARGE (BYTE) 180 /* en sec */ /*----------------------------- Pr‚cision de la mesure---------------------*/ #define PRECISION (WORD) 1000 /*----------------------- Temps de mont‚e des alim. en s ------------------*/ #define TPSMONTEEALIM (BYTE) 2 /*---------------------------- Nombre de chassis --------------------------*/ #define NBRMAXCHASSIS (BYTE) 8 /*------------------------------ Nombre d'accus ---------------------------*/ #define NBRMAXACCUS (BYTE) 128 /*------------ Nombre de barres affichables dans l'histogramme ------------*/ #define NBRMAXBAR (BYTE) 15 /*-------------------------- Nombre d'accus par chassis -------------------*/ #define NBRACCUSBYCHASSIS (BYTE) (NBRMAXACCUS / NBRMAXCHASSIS) /*-------- Largueur disponible pour afficher les infos sur les chassis ----*/ #define WIDTHINFOCHASSIS (BYTE) 216 /*-------- Hauteur disponible pour afficher les infos sur les chassis -----*/ #define HEIGHTINFOCHASSIS (BYTE) 126 /*-------- Nombre maximal de caractŠres pour une clef de Infotest ---------*/ #define MAXLENCLEFINFO (BYTE) 44 /* NumTest (6) + ' ' + */ /* DateTest JJ/MM/AAAA (10) + ' ' + */ /* TypeElement (10) + ' ' + */ /* Sp‚cification (10) + ' ' + */ /* TotalCycle (3) */ /* Fin de chaine (1) */ /*---------- Nombre maximal de caractŠres pour une clef de r‚sultat -------*/ #define MAXLENCLEFRESU (BYTE) 47 /* NumTest (6) + ' ' + */ /* DateTest JJ/MM/AAAA (10) + ' ' + */ /* TypeElement (10) + ' ' + */ /* Sp‚cification (10) + ' ' + */ /* TotalCycle (3) */ /* NumCycle (3) */ /* Fin de chaine (1) */ /*--------------- Nombre maximal de fichiers dans le spooler --------------*/ #define NBR_MAX_FILE_IN_SPOOLER 99 /*------------------ Nom du fichier de config. du logiciel ----------------*/ #define NomFichConfigSoft "DATA\\BIGSCAN.CFG" /*------------ Nom du fichier de sauvegarde de l'‚tat du site -------------*/ #define NomFichInfoSys "DATA\\BIGSCAN.SYS" /*--------- Nom du fichier de sauvegarde des p‚riodes d'archivage ---------*/ #define NomFichInfoDate "A:\\INFODATE.ARC" /*------ Nombre de fichiers BTRIEVE utilis‚s par le programme BigScan -----*/ #define NBRMAXFICHIERS 6 /*------------ Nom des fichiers de r‚sultats et flags pour BTrieve---------*/ #define INFOTYPE 0 #define RESUTYPE 1 #define TEMPINFOTYPE 2 #define TEMPRESUTYPE 3 #define ARCHINFOTYPE 4 #define ARCHRESUTYPE 5 /*------------------------ Tension min. pour accu. ------------------------*/ #define TENSIONDEF (float) 0.400 /*------------------------ Tension max. pour accu. ------------------------*/ #define TENSIONMAXELEM (float) 1000.0 /*---------------------- Tension min. pour chassis ------------------------*/ #define TENSIONMINCHASSIS (float) 1.0 /*---------------------- Tension max. pour chassis ------------------------*/ #define TENSIONMAXCHASSIS (float) 5000.0 /*---------------------- Intensite min pour chassis -----------------------*/ #define INTMIN (float) 1.0 /*----------------------- Intensite max pour chassis ----------------------*/ #define INTMAX (float) 1000.0 /*---------------------- Nombre de cycles max -----------------------------*/ #define NBRMAXCYCLES (WORD) 999 /*--------------------------- DeltaV max ----------------------------------*/ #define MAXDELTAV (float) 1.0 /*---------------- Temps avant de lancer la scrutation du DeltaV ----------*/ #define TPSMONTEEDELTAV (BYTE) 3 /* 3 minutes */ /*-------------------- Echelle de mesure de la carte ----------------------*/ #define ECHELLEMESURECARTE 1 /* valeurs possibles = 0 (15 volts) ou 1 (40 volts) */ /*--------------------- Couleurs RGB standart en VGA ----------------------*/ /* BBGGRR */ /* ------ */ #define GRISCLAIR RGB (192, 192, 192) /* 0x00C0C0C0 */ #define ROUGECLAIR RGB (255, 0, 0) /* 0x000000FF */ #define VERTCLAIR RGB ( 0, 255, 0) /* 0x0000FF00 */ #define JAUNECLAIR RGB (255, 255, 0) /* 0x0000FFFF */ #define MARRONCLAIR RGB (255, 255, 128) /* 0x0080FFFF */ #define BLEUCLAIR RGB ( 0, 0, 255) /* 0x00FF0000 */ #define MAGENTACLAIR RGB (255, 0, 255) /* 0x00FF00FF */ #define CYANCLAIR RGB ( 0, 255, 255) /* 0x00FFFF00 */ #define ROUGESOMBRE RGB (128, 0, 0) /* 0x00000080 */ #define VERTSOMBRE RGB ( 0, 128, 0) /* 0x00008000 */ #define JAUNESOMBRE RGB (128, 128, 0) /* 0x00008080 */ #define BLEUSOMBRE RGB ( 0, 0, 128) /* 0x00800000 */ #define MAGENTASOMBRE RGB (128, 0, 128) /* 0x00800080 */ #define CYANSOMBRE RGB ( 0, 128, 128) /* 0x00808000 */ #define GRISSOMBRE RGB (128, 128, 128) /* 0x00808080 */ #define NOIR RGB ( 0, 0, 0) /* 0x00000000 */ #define BLANC RGB (255, 255, 255) /* 0x00FFFFFF */ /*----------- Index pour tableau de m‚morisation des mesures --------------*/ #define INDEXFINCHARGE 3 /*---- D‚finition d'un message pour l'impression des temps de d‚charge ----*/ #define WM_IMPTEST (WM_USER+1) /*---- D‚finition d'un message pour l'impression des temps de d‚charge ----*/ #define WM_IMPHISTO (WM_USER+2) /*--------- D‚finition d'un message pour l'affichage de la l‚gende --------*/ #define WM_LEGENDE (WM_USER+3) /*------- d‚finition d'un message pour avertir d'une coupure secteur ------*/ #define WM_DEBCOUPURESECTEUR (WM_USER+4) /* d‚finition d'un message pour avertir de la reprise aprŠs coupure secteur*/ #define WM_FINCOUPURESECTEUR (WM_USER+5) /*----- d‚finition d'un message pour avertir q'un test est en d‚faut ------*/ #define WM_DEFAUTTEST (WM_USER+6) /*--------------------- D‚finition des macros -----------------------------*/ #define UNREFERENCED_PARAMETER(x) (x) /*------------ Renvoie un nombre al‚atoire >= Min et <= Max ---------------*/ #define GETRANDOM(min, max) ((rand() % (int)(((max)+1) - (min))) + (min)) /*-------------------------------------------------------------------------*/ /* D‚claration des types */ /*-------------------------------------------------------------------------*/ /*--------------------------- Type codes erreurs --------------------------*/ typedef enum tagERRFATALE { ERR_ALLOC_GLOBAL_MEM, /* Erreur sur fonction GlobalAlloc */ ERR_APPEND_MENU, /* Erreur sur fonction AppendMenu */ ERR_CLOSE_CFG, /* Erreur sur fonction fclose */ ERR_CLOSE_INFOSYS, /* Erreur sur fonction fclose */ ERR_CREATE_DC, /* Erreur sur fonction CreateCompatibleDC */ ERR_CREATE_FONT_INDIRECT, /* Erreur sur fonction CreateFontIndirect */ ERR_DELETE_OBJECT, /* Erreur sur fonction DeleteObject */ ERR_DRAW_BMP, /* Erreur sur fonction BitBlt (d'un bitmap) */ ERR_ENABLE_MENUITEM, /* Erreur sur fonction EnableMenuItem */ ERR_GET_DC, /* Erreur sur fonction GetDC */ ERR_GET_OBJ_BMP, /* Erreur sur fonction GetObject (d'un bitmap) */ ERR_GET_STOCK_OBJECT, /* Erreur sur fonction GetStockObject */ ERR_LOAD_BMP, /* Erreur sur fonction LoadBitMap */ ERR_MAKE_TOP_WINDOWS, /* Erreur sur fonction TopInit */ ERR_MODIFY_MENU, /* Erreur sur fonction ModifyMenu */ ERR_FATALE_NON_GEREE, /* Erreur fatale non g‚r‚e */ ERR_NO_DUREE_SAISIE, /* Erreur lors de la programmation d'un test (aucune dur‚e saisie en charge, d‚charge, repos) */ ERR_OPEN_CFG, /* Erreur sur fonction fopen */ ERR_OPEN_INFOSYS, /* Erreur sur fonction fopen */ ERR_READ_CFG, /* Erreur sur fonction fread */ ERR_READ_INFOSYS, /* Erreur sur fonction fread */ ERR_READ_INFOTEST, /* Erreur sur fonction fread */ ERR_SEEK_CFG, /* Erreur sur fonction fseek */ ERR_SEEK_INFOSYS, /* Erreur sur fonction fseek */ ERR_SEEK_INFOTEST, /* Erreur sur fonction fseek */ ERR_SELECT_OBJECT, /* Erreur sur fonction SelectObject */ ERR_TIMER_LECTURE, /* Erreur sur fonction SetTimer */ ERR_TYPE_ETAT_ACCU, /* Erreur sur fonction AfficheAccus (accu dans un ‚tat non d‚fini dans le type ETATACCUS) */ ERR_TYPE_INFO_CHASSIS, /* Erreur sur fonction AfficheChassis (InfoChassis dans un ‚tat non d‚fini dans le type ETATINFOCHASSIS) */ ERR_WRITE_CFG, /* Erreur sur fonction fwrite */ ERR_WRITE_INFOSYS, /* Erreur sur fonction fwrite */ ERR_WRITE_INFOTEST /* Erreur sur fonction fwrite */ } ERRFATALE; /*-------------------------- Types de d‚fauts -----------------------------*/ typedef enum tagTYPEMSG { MSG_COUPURE_DEFAUT, MSG_COUPURE_SECTEUR, MSG_REPRISE_SECTEUR, MSG_SPOOLER_IS_FULL, MSG_ERR_IMPRESSION, MSG_INITIALISATION, MSG_FINALISATION, MSG_INFO } TYPEMSG; /*--------------------------- Mises en pause ------------------------------*/ typedef enum tagTYPEPAUSE { NOTPAUSE, SECTEURPAUSE, DEFAUTPAUSE, DDEPAUSE } TYPEPAUSE; /*--------------------------- Etat des accus ------------------------------*/ typedef enum tagETATACCUS { VIDE = PLACEVIDEBMP, /* Repr‚sentation d'un emplacement inoccup‚ */ RESERVE = ACCUVERTBMP, /* Repr‚sentation d'un emplacement r‚serv‚ par 1 test n'ayant pas d‚marr‚ */ ERR_TENSION = ACCUROUGEBMP, /* Repr‚sentation d'un emplacement en erreur de tension */ ERR_TRANS = ACCUORANGEBMP, /* Repr‚sentation d'un emplacement en erreur de transmission */ CHARGE = ACCUJAUNEBMP, /* Repr‚sentation d'un accu en charge */ REPOS = ACCUMARRONBMP, /* Repr‚sentation d'un accu au repos */ DECHARGE = ACCUCYANBMP, /* Repr‚sentation d'un accu en d‚charge */ SEUIL = ACCUBLEUBMP, /* Repr‚sentation d'un accu en dessous du seuil */ HS = PLACEHSBMP, /* Repr‚sentation d'un emplacement hors service */ DELTAV = ACCUDELTAVBMP /* Repr‚sentation d'un accu ayant atteint DeltaV */ } ETATACCUS; /*------------------------- Etat des chassis ------------------------------*/ typedef enum tagETATCHASSIS { INOCCUPE, /* Chassis inoccup‚ */ OCCUPE, /* Chassis occup‚ */ HSERV /* Chassis Hors Service */ } ETATCHASSIS; /*---------------------- Action sur bouton des alim -----------------------*/ typedef enum tagTYPEALIM { ALIMCHARGE, /* Alim. charge */ ALIMDECHARGE, /* Alim. d‚charge */ RIEN, /* Aucune action */ ALIMSTOP /* Coupure alim */ } TYPEALIM; /*---------------------- Marche/Arret des alim ----------------------------*/ typedef enum tagONOFFALIM { MARCHE, ARRET } ONOFFALIM; /*------------------------ Diff‚rentes phases d'un test -------------------*/ typedef enum tagPHASETEST { PHASECHARGE, PHASEREPOS1, PHASEDECHARGE, PHASEREPOS2, } PHASETEST; /*-------------------------- Types zone infos chassis ---------------------*/ typedef enum tagETATINFOCHASSIS { INFOCHASSISVIDE, INFOCHASSISTEST, INFOCHASSISTABL, INFOCHASSISHS } ETATINFOCHASSIS; /*------------------ Types de lectures … r‚aliser sur les accus -----------*/ typedef enum tagLECTURETEST { NONLIRE, LIREVIDE, LIREREGLAGE, ATTLIREREGLAGE, LIRETEST, MEMOTEST, TESTFINI } LECTURETEST; /*---------------------- Configuration de l'imprimante --------------------*/ typedef struct TagDEVICECAPS /* D‚finition des possibilit‚s d'un driver */ { int DriverVersion; int Technology; int HorzSize; int VertSize; int HorzRes; int VertRes; int LogPixelsX; int LogPixelsY; int BitsPixel; int Planes; int NumBrushes; int NumPens; int NumFonts; int NumColors; int AspectX; int AspectY; int AspectXY; int PDeviceSize; int ClipCaps; int SizePalette; int NumReserved; int ColorRes; int RasterCaps; int CurveCaps; int LineCaps; int PolygonalCaps; int TextCaps; } DEVICECAPS; typedef DEVICECAPS FAR * LPDEVICECAPS; /*-------------------------- Configuration du Soft ------------------------*/ typedef struct tagCHASSIS { BOOL bFlag_Present; /* Flag : presence du chassis */ BYTE NbrElem; /* Nombre d'‚l‚ments du chassis */ float TensionMaxElem; /* Tension max d'un ‚l‚ment du chassis */ float TensionMaxChassis;/* Tension max du chassis */ float IntMax; /* Intensit‚ max du chassis */ float Resolution; /* R‚solution du chassis */ BYTE Adresse; /* Adresse carte du 1er ‚l‚ment du chassis */ } CHASSIS; typedef struct tagCONFIGSOFT { char PassWord [8]; int DelaiErrTx; CHASSIS Tab_Chassis [NBRMAXCHASSIS]; } CONFIGSOFT; /*----------------- Type pour les chargeurs externes ----------------------*/ typedef struct tagInfoChargeur { BOOL Tab_bFlag_Chargeur_Externe [NBRMAXCHASSIS]; } INFOCHARGEUR; /*----------------- Type pour les pilotages TTL Alim ----------------------*/ typedef struct tagInfoTTL3 { BOOL Tab_bFlag_CH_TTL_5V [NBRMAXCHASSIS]; } INFOTTL3; /*-------------------- Type structure Info Chassis ------------------------*/ typedef struct tagInfoChassis { ETATCHASSIS EtatChassis; ETATINFOCHASSIS EtatInfo; BYTE NumTabInfoTest; BYTE NbrAccus; /* nb accus test‚es */ BYTE NbrAccusOK; /* Cpt pour gestion seuil et DeltaV */ BYTE NbrAccusErrTx; /* Cpt pour gestion erreur transmission */ BYTE NbrAccusErrTension;/* Cpt pour gestion d‚faut de tension */ BYTE OffsetAccuInTest; TYPEALIM EtatAlim; HWND hWndChassis; } INFOCHASSIS; /*---------------- Type pour la num‚rotation des accus --------------------*/ typedef struct tagInfoAccu { BYTE NumAccu; ETATACCUS EtatAccu; DWORD TimerAccu; } INFOACCU; /*----------------- Type pour lecture … vide et r‚glage -------------------*/ typedef struct tagInfoLecture { LECTURETEST Tab_TestALire [NBRMAXCHASSIS]; PHASETEST Tab_PhaseTest [NBRMAXCHASSIS]; WORD Tab_CycleEnCours [NBRMAXCHASSIS]; double Tab_OldTimer [NBRMAXCHASSIS]; DWORD Tab_SavTimer [NBRMAXCHASSIS]; DWORD Tab_CptTimer [NBRMAXCHASSIS]; DWORD Tab_CptPassage [NBRMAXCHASSIS]; BYTE Tab_IndexLecture [NBRMAXCHASSIS]; BYTE Tab_PremAccu [NBRMAXCHASSIS]; BYTE Tab_DerAccu [NBRMAXCHASSIS]; TYPEPAUSE Tab_PauseTest [NBRMAXCHASSIS]; BOOL Tab_bFlag_AttenteAlim [NBRMAXCHASSIS]; float Tab_MemoTension [NBRMAXACCUS]; } INFOLECTURE; /*--------------------- Type structure fichier test -----------------------*/ typedef struct tagInfoTest { char ClefTest [MAXLENCLEFINFO]; LONG NumTest; BYTE IndexTest; WORD NbCycles; BOOL bFlag_Histo; WORD PasImp; char DateTest [8]; /* Date en julien */ char TypElement [11]; BYTE NbrElem; char NomClient [21]; char NumCommande [11]; char Specification [51]; DWORD DureeCharge; /* en sec */ float IntensiteCharge; float DeltaV; float SeuilDeltaV; float SeuilMaxi; DWORD DureeDecharge; /* en sec */ float IntensiteDecharge; DWORD Timer_Decharge_1; DWORD Timer_Decharge_2; DWORD Timer_Decharge_3; DWORD Timer_Decharge_4; DWORD Timer_Decharge_5; DWORD DureeRepos1; /* en sec */ DWORD DureeRepos2; /* en sec */ float TensionArret; DWORD Tab_TempsDeltaV [NBRMAXACCUS]; /* Remarque: Ce tableau sert de flag pour d‚terminer si l'‚l‚ment est test‚ ou pas (utilis‚ dans Visu.c et Normale.c): si TabTempsDeltaV[‚lement] = 0, alors ‚lement n'est pas test‚ (sinon TabTempsDeltaV[‚lement] > TPSMONTEEALIM) */ DWORD Tab_TempsDecharge [NBRMAXACCUS]; WORD Tab_ResuLec [11][NBRMAXACCUS]; } INFOTEST; typedef INFOTEST NEAR *NPINFOTEST; typedef INFOTEST FAR *LPINFOTEST; /*--------------------- Type structure fichier systŠme --------------------*/ typedef struct tagInfoSys { LONG NombreTotalDeTest; BOOL bFlag_CoupureSecteur; BOOL bFlag_AllChassisInoccupe; BOOL bFlag_Reglage; TYPEALIM bFlag_Bouton; BOOL Tab_bFlag_TestLibre [NBRMAXCHASSIS]; BOOL Tab_bFlag_PilotageAlim [NBRMAXCHASSIS]; HGLOBAL Tab_hMemTabInfoTest [NBRMAXCHASSIS]; INFOCHASSIS Tab_InfoChassis [NBRMAXCHASSIS]; INFOACCU Tab_InfoAccus [NBRMAXACCUS]; INFOLECTURE InfoLecture; } INFOSYS; /*------------------ Types pour sauvegarde d'un test ---------------------*/ typedef struct tagSvgInfoTest { char ClefTest [MAXLENCLEFINFO]; LONG NumTest; BYTE IndexTest; WORD NbCycles; BOOL bFlag_Histo; WORD PasImp; char DateTest [8]; /* Date en julien */ char TypElement [11]; BYTE NbrElem; char NomClient [21]; char NumCommande [11]; char Specification [51]; DWORD DureeCharge; /* en sec */ float IntensiteCharge; float DeltaV; float SeuilDeltaV; float SeuilMaxi; DWORD DureeDecharge; /* en sec */ float IntensiteDecharge; DWORD Timer_Decharge_1; DWORD Timer_Decharge_2; DWORD Timer_Decharge_3; DWORD Timer_Decharge_4; DWORD Timer_Decharge_5; DWORD DureeRepos; /* en sec */ DWORD DureeRepos2; /* en sec */ float TensionArret; } SVGINFOTEST; typedef SVGINFOTEST NEAR *NPSVGINFOTEST; typedef SVGINFOTEST FAR *LPSVGINFOTEST; typedef struct tagSvgResultats { char ClefTest [MAXLENCLEFRESU]; DWORD Tab_TempsDeltaV [NBRMAXACCUS]; DWORD Tab_TempsDecharge [NBRMAXACCUS]; WORD Tab_ResuLec [11][NBRMAXACCUS]; } SVGRESULTATS; typedef SVGRESULTATS NEAR *NPSVGRESULTATS; typedef SVGRESULTATS FAR *LPSVGRESULTATS; /*------------ Types pour sauvegarde des p‚riodes archiv‚es --------------*/ typedef struct tagSvgInfoDate { char GreDateDeb [11]; char GreDateFin [11]; } SVGINFODATE; typedef SVGINFODATE NEAR *NPSVGINFODATE; typedef SVGINFODATE FAR *LPSVGINFODATE; /*-------------------------------------------------------------------------*/ /* D‚claration externe des variables contenues dans Global.C */ /*-------------------------------------------------------------------------*/ extern HINSTANCE hInst; /* Instance courante */ extern HINSTANCE hPrevInst; /* Instance pr‚c‚dente */ extern HACCEL hAccel; /* Acc‚l‚rateurs */ extern HWND hWndTop; /* Handle fenˆtre mŠre */ extern HWND hWndHorloge; /* Handle fenˆtre horloge */ extern HWND hWndLegende; /* Handle fenˆtre l‚gende */ extern HFONT hFont_Ecr_Normal; /* handle police normale ‚cran */ extern HFONT hFont_Ecr_Small; /* handle petite police ‚cran */ extern HFONT hFont_Ecr_Medium; /* handle m‚dium police ‚cran */ extern HFONT hFont_Prn; /* handle police imprimante */ extern HFONT hOldFont; /* handle police originale */ extern HBRUSH hBrushMarron; /* Couleur de fond pour visu et histo */ extern HBRUSH hBrushJaune; /* Couleur de fond pour d‚faut */ extern HBITMAP hBmpInfoVide; /* Handle des bitmaps de la zone d'affichage des chassis vides */ extern HBITMAP hBmpInfoHs; /* Handle des bitmaps de la zone d'affichage des chassis HS */ extern HBITMAP hBmpInfoTst; extern HBITMAP hBmpInfoTabl; extern HBITMAP hBmpIndexV; extern HBITMAP hBmpIndexG; extern HBITMAP hBmpPlaceVide; /* Handle du bitmap symbolisant un emplacement vide */ extern HBITMAP hBmpPlaceHs; /* Handle du bitmap symbolisant un emplacement HS */ extern HBITMAP hBmpAccuVert; /* Handle des bitmaps symbolisant l'‚tat des ‚l‚ments */ extern HBITMAP hBmpAccuRouge; extern HBITMAP hBmpAccuOrange; extern HBITMAP hBmpAccuJaune; extern HBITMAP hBmpAccuDeltaV; extern HBITMAP hBmpAccuMarron; extern HBITMAP hBmpAccuCyan; extern HBITMAP hBmpAccuBleu; extern BITMAP BmpInfoVide; /* Bitmaps de la zone d'affichage des chassis */ extern BITMAP BmpInfoTst; extern BITMAP BmpInfoHs; extern BITMAP BmpInfoTabl; extern BITMAP BmpIndexV; /* BitMaps indiquant phase du test */ extern BITMAP BmpIndexG; /* V pour vert (index vert), */ /* G pour gris (couleur du fond = effacement) */ extern BITMAP BmpPlaceVide; /* Bitmap d'un emplacement vide */ extern BITMAP BmpPlaceHs; /* Bitmap d'un emplacement HS */ extern BITMAP BmpAccuVert; /* Bitmaps symbolisant l'‚tat des ‚l‚ments */ extern BITMAP BmpAccuRouge; extern BITMAP BmpAccuOrange; extern BITMAP BmpAccuJaune; extern BITMAP BmpAccuDeltaV; extern BITMAP BmpAccuMarron; extern BITMAP BmpAccuCyan; extern BITMAP BmpAccuBleu; extern BOOL bFlag_Demo; /* Vrai si programme en demo. */ extern BOOL bFlag_ErrFatale; /* Vrai si erreur fatale d‚tect‚e */ extern BOOL bFlag_Horloge; /* Flag ‚tat horloge */ extern BOOL bFlag_Legende; /* Flag ‚tat l‚gende */ extern BOOL bFlag_TimerTestOccupe; /* Flag de controle r‚entrance timers Test */ extern BOOL bFlag_TimerReglageOccupe; /* Flag de controle r‚entrance timer R‚glage */ extern BOOL Tab_bFlag_Lock [NBRMAXCHASSIS]; /* Flag handle m‚moire allou‚e */ extern BYTE Type_ACQ; /* ACQ12 / ACQ16 */ extern BYTE Type_OND; /* SAFT / MGE */ extern BYTE AccuEnCours; /* Nø Accu … lire */ extern BYTE PredAccu; /* Dernier accu en lecture */ extern BYTE TestEnCours; /* Index du test en cours de lecture */ extern DWORD CompteurMS; /* Compteur pour d‚lai 1ms */ extern int Tab_CptAttenteAlim [NBRMAXCHASSIS];/* Tempo. pour mont‚e alim. */ extern int Horloge_W; /* Hauteur et largeur de la fenˆtre horloge */ extern int Horloge_H; extern POINT const TAB_COORD_INFOS [NBRMAXCHASSIS]; /* Coordonn‚es des zones d'affichages des chassis */ extern POINT const TAB_COORD_INFO_TENSION [NBRACCUSBYCHASSIS];/* Coordonn‚es des zones d'affichages de tensions */ extern POINT const TAB_COORD_ACCUS [NBRMAXACCUS]; /* Coordonn‚es des accus */ extern POINT const TAB_COORD_INDEX [NBRMAXCHASSIS][4]; /* Coordonn‚es index phase test */ extern INFOCHASSIS const INIT_INFO_CHASSIS; /* Initialisation infos sur les chassis */ extern INFOACCU const INIT_INFO_ACCU; /* Initialisation infos sur les accus */ extern INFOTEST const INIT_INFO_TEST; /* Initialisation infos sur les tests */ extern SVGRESULTATS Resu_Buf; /* Pour stocker les r‚sultats des cycles sur disque */ extern SVGINFOTEST Info_Buf; /* Pour stocker les param. des tests sur disque */ extern SVGRESULTATS Resu_Buf_Arch; /* Pour stocker les r‚sultats des cycles sur disquette */ extern SVGINFOTEST Info_Buf_Arch; /* Pour stocker les param. des tests sur disquette */ extern SVGINFODATE Date_Buf_Arch; /* Pour stocker la p‚riode archiv‚e sur la disquette */ extern INFOSYS InfoSys; /* Infos sur le systŠme */ extern INFOCHARGEUR InfoChargeur; /* Infos sur l'utilisation des chargeurs externes */ extern INFOTTL3 InfoTTL3; /* Infos sur le pilotage TTL des alimentations */ extern CONFIGSOFT ConfigSoft; /* Configuration du soft */ extern LPCSTR TAB_NOMFIC [NBRMAXFICHIERS]; extern float const TAB_ECHELLE_MAX_ACQ12 [NBRMAXCHASSIS]; /* Tableau des echelles max des chassis */ extern float const TAB_ECHELLE_MAX_ACQ16 [NBRMAXCHASSIS]; /* Tableau des echelles max des chassis */ extern float const TAB_ECHELLE_MIN_ACQ12 [NBRMAXCHASSIS]; /* Tableau des echelles min des chassis */ extern float const TAB_ECHELLE_MIN_ACQ16 [NBRMAXCHASSIS]; /* Tableau des echelles min des chassis */ /*------------ Nombre de fichiers en attente dans le spooler ---------------*/ extern int NbrFileInSpooler; /*--- D‚claration pour g‚rer la taille de la file d'attente des messages ---*/ extern int SizeOfQueue; /*------------- D‚claration pour les timers de gestion des tests -----------*/ extern TIMERPROC lpfnTimerRefreshProc; /*-------------------------------------------------------------------------*/ /* D‚claration externe des fonctions de l'application */ /*-------------------------------------------------------------------------*/ /*------------------------------ AlimCfg.C --------------------------------*/ extern VOID FAR PASCAL ConfigAlim (HWND); extern BOOL CALLBACK __export ConfigAlimDlgProc (HWND, UINT, WPARAM, LPARAM); /*---------------------------- ApiDrv.Asm ---------------------------------*/ extern int FAR PASCAL CallVxD (DWORD, union REGS *); /*------------------------------ Archive.C --------------------------------*/ extern VOID FAR PASCAL SuppressionTest (HWND); extern BOOL CALLBACK __export SuppressionDlgProc (HWND, UINT, WPARAM, LPARAM); extern VOID FAR PASCAL ArchivageTest (HWND); extern BOOL CALLBACK __export ArchivageDlgProc (HWND, UINT, WPARAM, LPARAM); extern VOID FAR PASCAL DesArchivageTest (HWND); extern BOOL CALLBACK __export DesArchivageDlgProc (HWND, UINT, WPARAM, LPARAM); /*------------------------------ Config.C ---------------------------------*/ extern BOOL CALLBACK __export ConfigSoftDlgProc (HWND, UINT, WPARAM, LPARAM); /*---------------------------- ConfigTx.C ---------------------------------*/ extern BOOL CALLBACK __export ConfigTxDlgProc (HWND, UINT, WPARAM, LPARAM); /*----------------------------- Defaut.C ----------------------------------*/ extern VOID FAR PASCAL AjoutMessage (TYPEMSG); extern BOOL FAR PASCAL GereDefautTest (BYTE, BOOL); extern VOID FAR PASCAL PauseSurDefautTest (BYTE); extern LRESULT CALLBACK __export DefautDlgProc (HWND, UINT, WPARAM, LPARAM); /*---------------------------- GestComm.C ---------------------------------*/ extern BOOL FAR PASCAL InitComm (VOID); extern VOID FAR PASCAL ResetComm (VOID); extern BOOL FAR PASCAL Emission (BYTE, LPSTR, LPBYTE, LPSTR, LPBYTE); extern BOOL FAR PASCAL WriteScan (BYTE, LPSTR); extern BOOL FAR PASCAL ReadScan (BYTE, LPBYTE, LPSTR, LPBYTE); extern BOOL FAR PASCAL RstScan (BYTE); /*---------------------------- GetNTest.C ---------------------------------*/ extern BOOL FAR PASCAL GetInfoTestOk (HWND, LPINFOTEST, LPWORD); extern BOOL CALLBACK __export GetNumTestDlgProc (HWND, UINT, WPARAM, LPARAM); /*------------------------------ Histo.C ----------------------------------*/ extern VOID FAR PASCAL VisualisationHisto (HWND, LPINFOTEST, BYTE, RECT, WORD); extern VOID FAR PASCAL AffichageHisto (HWND, HDC, BOOL, LPINFOTEST, LPBYTE, BOOL, int); extern VOID FAR PASCAL FinAffichageHisto (HWND, HDC, BOOL); extern LRESULT CALLBACK __export HistoWndProc (HWND, UINT, WPARAM, LPARAM); /*----------------------------- Horloge.C ---------------------------------*/ extern VOID FAR PASCAL Horloge (HWND); extern LRESULT CALLBACK __export HorlogeWndProc (HWND, UINT, WPARAM, LPARAM); /*------------------------------ Info.C -----------------------------------*/ extern VOID FAR PASCAL Info (HWND); extern BOOL CALLBACK __export InfoDlgProc (HWND, UINT, WPARAM, LPARAM); /*----------------------------- Legende.C ---------------------------------*/ extern VOID FAR PASCAL Legende (HWND); extern LRESULT CALLBACK __export LegendeWndProc (HWND, UINT, WPARAM, LPARAM); /*----------------------------- MainInit.C --------------------------------*/ extern BOOL FAR PASCAL MainInit (HINSTANCE, HINSTANCE, LPCSTR, int); extern VOID FAR PASCAL MainFini (VOID); /*----------------------------- MsgInit.C ---------------------------------*/ extern VOID FAR PASCAL EffaceMessage (VOID); extern BOOL FAR PASCAL Message (HINSTANCE, TYPEMSG, LPCSTR); extern BOOL CALLBACK __export MessageDlgProc (HWND, UINT, WPARAM, LPARAM); /*----------------------------- Normale.C ---------------------------------*/ extern float FAR PASCAL Tension (BYTE, BYTE, BOOL FAR *); extern VOID FAR PASCAL LanceTest (HWND, BYTE); extern VOID FAR PASCAL LectureTensions (BYTE, BOOL); extern VOID FAR PASCAL AfficheFini (BYTE); extern VOID CALLBACK __export TimerRefresh (HWND, UINT, UINT, DWORD); /*---------------------------- PassWord.C ---------------------------------*/ extern BOOL CALLBACK __export PassWordDlgProc (HWND, UINT, WPARAM, LPARAM); extern BOOL CALLBACK __export NewPassWordDlgProc (HWND, UINT, WPARAM, LPARAM); /*------------------------------ Print.C ----------------------------------*/ extern HDC FAR PASCAL GetPrinterDC (VOID); extern VOID FAR PASCAL ImpParam (HWND); extern VOID FAR PASCAL ImprimeTest (LPINFOTEST, BYTE, WORD, BOOL); extern VOID FAR PASCAL ImprimeHisto (LPINFOTEST, WORD, BOOL, BOOL); extern VOID FAR PASCAL Impression (BYTE); extern BOOL CALLBACK __export PrintDlgProc (HWND, UINT, WPARAM, LPARAM); extern BOOL CALLBACK __export AbortProc (HDC, int); /*---------------------------- ProgTest.C ---------------------------------*/ extern VOID FAR PASCAL ProgTest (HWND); extern BOOL CALLBACK __export ProgTestDlgProc (HWND, UINT, WPARAM, LPARAM); /*----------------------------- Reglage.C ---------------------------------*/ extern VOID FAR PASCAL Reglage (HWND, BYTE); extern VOID FAR PASCAL LectureReglage (BYTE); extern BOOL CALLBACK __export ReglageDlgProc (HWND, UINT, WPARAM, LPARAM); /*----------------------------- Secteur.C ---------------------------------*/ extern VOID FAR PASCAL DebCoupureSecteur (VOID); extern VOID FAR PASCAL FinCoupureSecteur (VOID); extern BOOL FAR PASCAL Secteur (VOID); extern BOOL FAR PASCAL SecteurOk (VOID); extern BOOL CALLBACK __export SecteurDlgProc (HWND, UINT, WPARAM, LPARAM); /*------------------------------ Test.C -----------------------------------*/ extern BOOL FAR PASCAL EmissionChaine (BYTE, LPSTR, LPSTR); extern BOOL FAR PASCAL EmissionChassis (BYTE, LPSTR); extern BOOL FAR PASCAL ScanChassis (BYTE, LPSTR); extern BOOL FAR PASCAL StopScanChassis (BYTE); extern BOOL FAR PASCAL CarteConfigChassis (BYTE, BYTE, TYPEALIM); extern BOOL FAR PASCAL CarteConfigDeltaV (BYTE, BYTE); extern BOOL FAR PASCAL CarteConfigSeuilMin (BYTE, BYTE); extern BOOL FAR PASCAL ConfigChassis (BYTE, TYPEALIM); extern BOOL FAR PASCAL ConfigDeltaV (BYTE); extern BOOL FAR PASCAL ConfigSeuilMin (BYTE); extern BOOL FAR PASCAL ConfigSortie (BYTE, LPSTR, BYTE, BYTE); extern BOOL FAR PASCAL ProtectionOff (BYTE); extern VOID FAR PASCAL PrepareLecture (BYTE, LECTURETEST); extern VOID FAR PASCAL Pause (BYTE, TYPEPAUSE, BOOL); extern BOOL FAR PASCAL RazCarte (BYTE); extern BOOL FAR PASCAL RazChassis (BYTE); extern VOID FAR PASCAL RazChassisTest (BYTE, BOOL); extern BOOL FAR PASCAL CarteAlim (BYTE, BYTE, TYPEALIM, ONOFFALIM); extern VOID FAR PASCAL CarteAlimTest (BYTE, BYTE, TYPEALIM, ONOFFALIM); extern BOOL FAR PASCAL Alim (BYTE, TYPEALIM, ONOFFALIM); extern VOID FAR PASCAL AlimTest (BYTE, TYPEALIM, ONOFFALIM); extern VOID FAR PASCAL ClearAlim (VOID); extern VOID FAR PASCAL PrepareTest (HWND, BYTE); extern VOID FAR PASCAL FinTest (HWND, BYTE, BOOL); extern VOID FAR PASCAL Archive_Test (BYTE); /*--------------------------------- Time.C --------------------------------*/ extern double FAR PASCAL GetTimerInMicroSeconde (VOID); extern VOID FAR PASCAL GetTime (LPSTR); extern VOID FAR PASCAL GetDate (LPSTR); extern VOID FAR PASCAL GregToJul (LPSTR, LPCSTR); extern VOID FAR PASCAL JulToGreg (LPSTR, LPCSTR); extern VOID FAR PASCAL InitDelay (VOID); extern VOID FAR PASCAL Delay (DWORD); extern DWORD FAR PASCAL TimerToSec (DWORD); extern DWORD FAR PASCAL SecToTimer (DWORD); /*------------------------------- ToolBox.C -------------------------------*/ extern HGDIOBJ FAR PASCAL Chargement_Objet_Predefini (int); extern HGDIOBJ FAR PASCAL Selection_Objet (HDC, HGDIOBJ); extern VOID FAR PASCAL Suppression_Objet (HGDIOBJ); extern VOID FAR PASCAL ChargeDeviceCaps (HDC, LPDEVICECAPS); extern BOOL FAR PASCAL EgalChaine (LPSTR, LPSTR); extern int FAR PASCAL ChargeDialogBox (HWND, FARPROC, WORD); extern LPSTR FAR PASCAL Get_ErrString (LPSTR, UINT); extern VOID FAR PASCAL ErreurFatale (ERRFATALE, LPCSTR); extern VOID FAR PASCAL AfficheMsg (LPCSTR, LPCSTR, UINT); extern VOID FAR PASCAL AfficheString (HWND, COLORREF, COLORREF, int, int, int, LPCSTR, HANDLE, HDC); extern VOID FAR PASCAL Center_Window (HWND); extern VOID FAR PASCAL CentredString (HWND, COLORREF, COLORREF, int, LPRECT, LPCSTR, HANDLE, HDC, WORD); extern VOID FAR PASCAL AfficheBitMap (HWND, HBITMAP, BITMAP, int, int, HDC); extern VOID FAR PASCAL ErreurSaisie (HWND, int); extern BOOL FAR PASCAL GetTextOk (HWND, int, LPSTR, int, BOOL, BOOL); extern BOOL FAR PASCAL GetDWordOk (HWND, int, LPDWORD, int, BOOL, BOOL); extern BOOL FAR PASCAL GetWordOk (HWND, int, LPWORD, int, BOOL, BOOL); extern BOOL FAR PASCAL GetByteOk (HWND, int, LPBYTE, int, BOOL, BOOL); extern BOOL FAR PASCAL GetFloatOk (HWND, int, float FAR *, int, BOOL, BOOL); extern VOID FAR PASCAL SelectTestEnCours (HWND, int, int, WORD, LPCSTR); extern LPSTR FAR PASCAL LTrim (LPSTR); extern LPSTR FAR PASCAL RTrim (LPSTR); extern LPSTR FAR PASCAL ftoa (LPSTR, double, int, int); extern double FAR PASCAL Round (double, BYTE); extern LPINFOTEST FAR PASCAL Lock (HGLOBAL, BYTE); extern VOID FAR PASCAL Unlock (HGLOBAL, BYTE); extern VOID FAR PASCAL ConversionTps (LPSTR, DWORD); extern BOOL FAR PASCAL Test_Erreur_Fichier_Ok (HFILE, OFSTRUCT *, LPSTR, LPSTR, int, BOOL); extern VOID FAR PASCAL SauveConfigSoft (VOID); extern VOID FAR PASCAL SauveInfoSys (VOID); /*------------------------------ Top.C ------------------------------------*/ extern VOID FAR PASCAL LectureAccu (BYTE, COLORREF); extern VOID FAR PASCAL AfficheTimerPhase (BYTE); extern VOID FAR PASCAL AfficheInfoTension (BYTE, BYTE); extern VOID FAR PASCAL AfficheUnAccu (BYTE); extern VOID FAR PASCAL AffichePause (BYTE); extern VOID FAR PASCAL AfficheAccus (BYTE, BYTE); extern VOID FAR PASCAL ModifyEtatInfoChassis (HWND, BYTE, ETATINFOCHASSIS); extern VOID FAR PASCAL InitEtatAccusChassis (HWND, BYTE); extern VOID FAR PASCAL AfficheInfos (VOID); extern VOID FAR PASCAL AfficheTension (HDC, BYTE); extern LRESULT CALLBACK __export TopWndProc (HWND, UINT, WPARAM, LPARAM); /*------------------------------ Visu.C -----------------------------------*/ extern VOID FAR PASCAL InitCoordonneesTab (HWND, HDC, BOOL, LPRECT); extern VOID FAR PASCAL VisualisationTest (LPINFOTEST, BYTE, WORD, BOOL); extern int FAR PASCAL AffichageInfo (HWND, HDC, BOOL, LPINFOTEST, WORD); extern VOID FAR PASCAL AffichageTableau (HWND, HDC, BOOL, LPINFOTEST, BYTE); extern VOID FAR PASCAL FinAffichageVisu (HWND, HDC, BOOL); extern LRESULT CALLBACK __export VisuWndProc (HWND, UINT, WPARAM, LPARAM); extern BOOL CALLBACK __export GetNumCycleDlgProc (HWND, UINT, WPARAM, LPARAM); /*----------------------------- WBFich.C ----------------------------------*/ extern BOOL FAR PASCAL BTR_Create (int); extern BOOL FAR PASCAL BTR_Open (int); extern BOOL FAR PASCAL BTR_Close (int); extern BOOL FAR PASCAL BTR_Find (int); extern int FAR PASCAL BTR_Insert (int, BOOL, BOOL); extern BOOL FAR PASCAL BTR_Delete (int, BOOL); extern BOOL FAR PASCAL BTR_First (int); extern BOOL FAR PASCAL BTR_Last (int); extern BOOL FAR PASCAL BTR_GetListe (BOOL, int); extern BOOL FAR PASCAL BTR_PrevKey (int); extern BOOL FAR PASCAL BTR_NextKey (int); extern VOID FAR PASCAL MakeKeyRecord (LPSTR, LONG, LPSTR, LPSTR, LPSTR, WORD); /*--------------------------- WBTrCall.Lib --------------------------------*/ extern int FAR PASCAL WBTRVINIT (LPSTR); extern int FAR PASCAL WBRQSHELLINIT (LPSTR); extern int FAR PASCAL WBTRVSTOP (VOID); extern int FAR PASCAL BTRCALL (int, LPSTR, LPSTR, unsigned FAR *, LPSTR, unsigned char, char); /*---------------------------- WBTrIntf.C ---------------------------------*/ extern int FAR PASCAL RQSHELLINIT (LPSTR); extern int FAR PASCAL BTRVINIT (LPSTR); extern int FAR PASCAL BTRVSTOP (VOID); extern int FAR PASCAL BTRV (int, LPSTR, LPSTR, unsigned FAR *, LPSTR, int);