CAP/LM2000_vcl/LM2000.h
2021-09-01 18:53:06 +02:00

180 lines
6.3 KiB
C++
Raw Blame History

// #define PRUEBAS_SIN_VCL
//---------------------------------------------------------------------------
#ifndef LM2000H
#define LM2000H
//---------------------------------------------------------------------------
#include <SysUtils.hpp>
#include <Controls.hpp>
#include <Classes.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
/** Estructura que define a una tarjeta */
typedef struct
{
int FLG; // Enabling flag
int TYP; // Card Type
int CDA; // Card Code
int PIN; // PIN
int GIS; // Expiration day
int MES; // Expiration month
int ANS; // Expiration year
int ORS; // Expiration hour
int MIS; // Expiration minute
int SES; // Expiration second
int REV; // Revision
int CRD; // Credit
} TCard;
/** Estructura que define el modo de lectura/escritura */
typedef struct
{
int FMC; // Card memory flag
int MAC; //
int LFN; // Operation logic
int NCR; // Cards in memory
int CMN; // Minimum code
int CMX; // Maximum code
int NBN; // Number of bands
int NMP; // Number of messages
int NFA; // Number of periods
int RMS; // Lines in messages
int MCA; // Motive mode
int MCR; // Credit mode
} RMem;
/** Program Operation Parameters */
typedef struct
{
int BKN; // Network block
int BKP; // Printer block
int PRN; // Print mode
int MCL; // Mode for requesting information from P.C.
int MCK; // Card control mode
int ENF; // Enabling of keyboard functions
int SNV; // Anomaly memorization mode
int ENI; // Number of intrusions per apparatus block
} POP;
/** Configuracion de fecha/hora */
typedef struct
{
int GIA; // Day
int MEA; // Month
int ANA; // Year
int ORA; // Hour
int MIA; // Minute
int SEA; // Second
} RClock;
/** Estructura TSD */
typedef struct
{
int CHN;
int GSL;
int MMS;
int ASL;
int HSL;
int MSL;
int SSL;
} TSD;
/** Caracteres en la Banda */
typedef struct
{
int GAP; // Number of empty characters preceding prefix
int LEP; // Length of prefix in characters
int GAC; // Number of empty characters preceding code
int LEC; // Length of code in characters
int GAR; // Number of empty characters preceding revision
int LER; // Number of characters containing number of revision
int GDI; // Number of empty characters preceding validity start date
int GDF; // Number of empty characters preceding validity end date
} CAB;
/** LM2000
Clase que encapsula las funciones necesarias para comunicarse con el LM2000
*/
#ifdef PRUEBAS_SIN_VCL
class PACKAGE TLm2000
#else
class PACKAGE TLm2000 : public TComponent
#endif
{
private:
int __fastcall GeneraChecksum( char *cadena );
char * __fastcall ObtenerRespuesta( char *rcv );
char * __fastcall EnviarComando( char *CMD, int ID, char *rcv );
char * __fastcall ObtenerParametro( char *cadena, int narg, char *prm );
bool __fastcall ProcesaTarjeta( int ID, char *msg );
/** Manejador que apunta al Puerto donde dialogamos */
HANDLE LM_handle;
/** Indica si estamos en comunicaci<63>n actualmente */
bool LM_opened;
void __fastcall ProcesaTransito( char *FGT, char *TPT, char *CDT, char *O, char *DTT, char *CTT, char *ETT );
#ifndef PRUEBAS_SIN_VCL
typedef bool __fastcall (__closure *Tprintfv)( AnsiString msg );
typedef bool __fastcall (__closure *TBuscaTarjeta)( int ID, int FGA, int TPA, int CDA, int *TPR, int *PNR, char *message );
typedef void __fastcall (__closure *TOnProcesaTransito)( char *FGT, char *TPT, char *CDT, char *O, char *DTT, char *CTT, char *ETT );
Tprintfv printfv;
TBuscaTarjeta FOnBuscaTarjeta;
TOnProcesaTransito FOnProcesaTransito;
#else
void __fastcall printfv( AnsiString msg );
#endif
protected:
public:
#ifdef PRUEBAS_SIN_VCL
__fastcall TLm2000(void);
#else
__fastcall TLm2000(TComponent* Owner);
#endif
__fastcall ~TLm2000(void);
void __fastcall CierraPuerto(void);
int __fastcall AbrePuerto(LPTSTR lpszPortName);
/** El 'polling' debe llamar continuamente a esta funci<63>n para conocer
el estado de los dispositivos 'ID' */
char * __fastcall SimpleInterrogation( int ID, char *rcv );
// LECTURA DE MEMORIA
bool __fastcall ReadCardMemory( int ID, TCard *CRD );
void __fastcall ReadEntireCardMemory( int ID );
// ESCRITURA DE MEMORIA
int __fastcall EnterCardMemory( int ID, TCard *CRD );
int __fastcall DeleteCardMemory( int ID, int TIP, int COD );
int __fastcall DeleteAllCardMemory( int ID, int TIP );
// CONFIGURACION LM2000
bool __fastcall ConfigureMemory( int ID, RMem *mem );
RMem * __fastcall ReadMemoryCFG( int ID, RMem *mem );
bool __fastcall ProgrammingPeriods( int ID, int NFS, int PBN, char *StarTime, char *EndTime, int GIF );
bool __fastcall ResetClock( int ID, RClock *clock );
int __fastcall ReadingPrefixes( int ID, int NPR );
bool __fastcall ReadPersonalMessage( int ID );
void __fastcall ReadAllPersonalMessage( int ID );
void __fastcall SetTime( int ID, TSD *tsd );
char * __fastcall ReadSystemMessages( int ID, int IDmsg, char *rcv );
bool __fastcall ProgramOperationParameters( int ID, POP *pop );
bool __fastcall SetCharsOnBand( int ID, CAB *cab );
bool __fastcall GetCharsOnBand( int ID, CAB *cab );
bool __fastcall PassageOpening( int ID, int Passage );
/* Llamadas que deben ser sobrecargadas CALLBACK*/
// void __fastcall ProcesaTransito( char *FGT, char *TPT, char *CDT, char *O, char *DTT, char *CTT, char *ETT );
// bool __fastcall BuscaTarjeta( int FGA, int TPA, int CDA, int *TPR, int *PNR, char *message );
#ifndef PRUEBAS_SIN_VCL
__published:
__property Tprintfv OnVerboseMessage = {read=printfv, write=printfv };
__property TOnProcesaTransito OnProcesaTransito = {read=FOnProcesaTransito, write=FOnProcesaTransito };
__property TBuscaTarjeta OnBuscaTarjeta = {read=FOnBuscaTarjeta, write=FOnBuscaTarjeta };
#endif
};
//---------------------------------------------------------------------------
#endif