1459 lines
57 KiB
C++
1459 lines
57 KiB
C++
//---------------------------------------------------------------------------
|
||
// DIALOGO CON EL BUR BROWN
|
||
//---------------------------------------------------------------------------
|
||
#include <vcl.h>
|
||
#include "Dialogo.h"
|
||
#include "Principal.h"
|
||
|
||
//---------------------------------------------------------------------------
|
||
#pragma hdrstop
|
||
#pragma package(smart_init)
|
||
|
||
//---------------------------------------------------------------------------
|
||
DWORD DWContadorID,DWAUTID,DWPSEID,DWPSSID,DWALBID;
|
||
BYTE byTiempoEsperaAUT;
|
||
BYTE byTiempoEsperaPSE;
|
||
BYTE byTiempoEsperaPSS;
|
||
BYTE byTiempoEsperaALB;
|
||
BYTE byTiempoEsperaRespOCA;
|
||
char *pszPeriodicaBBDIA[NUM_PERIODICA_AUT];
|
||
|
||
//---------------------------------------------------------------------------
|
||
// void DialogoAutorizacion(hDBIDb Form1->hBaseDatos)
|
||
// Entrada:
|
||
// hDBIDb Form1->hBaseDatos:Puntero a la Base de Datos
|
||
//---------------------------------------------------------------------------
|
||
void DialogoAutorizacion(void)
|
||
{
|
||
FILE *pTransfer;
|
||
TRAPERDat sTRAPERIODICADat[NUM_MAXIMO_PERIODICA];
|
||
TRAOCADat sTRAOCASIONALDat;
|
||
BYTE byi,byj,byEstado,byNumPer;
|
||
DatosAutorizacion sDatos;
|
||
|
||
char sSentencia[TAM_MAXIMO_OCASIONAL];
|
||
char sNumeroEle[3];
|
||
char *pszMensaje;
|
||
char cServidor,cReferencia,cReferenciaTemp,cDatoCorrecto;
|
||
char cDiez[2],cTrece[2];
|
||
char sDatoTecleado[NUM_MAX_TECLAS];
|
||
long lDesplazamiento;
|
||
int nValorPERBBDIA,nError;
|
||
bool bRespuestaPER;
|
||
bool bFinalizaAUT,bTipoEntrada,bRepetido;
|
||
|
||
//Inicializamos variables
|
||
cDiez[0]=10;
|
||
cDiez[1]=0;
|
||
cTrece[0]=13;
|
||
cTrece[1]=0;
|
||
byEstado=0;
|
||
cServidor='1';
|
||
cReferencia=1;
|
||
nValorPERBBDIA=0;
|
||
|
||
//Leemos la estructura de la periodica
|
||
Transfer->LeerEstructura(sTRAPERIODICADat,&sTRAOCASIONALDat);
|
||
|
||
//Obtenemos el Servidor con el que vamos a trabajar
|
||
byNumPer=0;
|
||
while(strcmp(sTRAPERIODICADat[byNumPer].cTipoIDTRAPER,"BBRAUT") && byNumPer<NUM_MAXIMO_PERIODICA)
|
||
byNumPer++;
|
||
|
||
cServidor=sTRAPERIODICADat[byNumPer].cServidor;
|
||
|
||
/* ConseguirReferencia(&cReferencia);
|
||
AnimacionMontrel(cServidor,"BBRAUT",cReferencia);*/
|
||
|
||
//----------------Definimos las teclas de Funcion --------------------//
|
||
|
||
ConseguirReferencia(&cReferencia);
|
||
DefinirTeclasFuncion(cServidor,"BBRAUT",F1,"F1.-ACEPT DIALOG",cReferencia);
|
||
|
||
ConseguirReferencia(&cReferencia);
|
||
DefinirTeclasFuncion(cServidor,"BBRAUT",F2,"F2",cReferencia);
|
||
|
||
ConseguirReferencia(&cReferencia);
|
||
DefinirTeclasFuncion(cServidor,"BBRAUT",F3,"F3",cReferencia);
|
||
|
||
ConseguirReferencia(&cReferencia);
|
||
DefinirTeclasFuncion(cServidor,"BBRAUT",F4,"F4.-ACEPT TRACT",cReferencia);
|
||
|
||
ConseguirReferencia(&cReferencia);
|
||
DefinirTeclasFuncion(cServidor,"BBRAUT",F5,"F5.-CANCL DIALOG",cReferencia);
|
||
|
||
ConseguirReferencia(&cReferencia);
|
||
DefinirTeclasFuncion(cServidor,"BBRAUT",F6,"F6",cReferencia);
|
||
|
||
ConseguirReferencia(&cReferencia);
|
||
DefinirTeclasFuncion(cServidor,"BBRAUT",F7,"F7",cReferencia);
|
||
|
||
ConseguirReferencia(&cReferencia);
|
||
DefinirTeclasFuncion(cServidor,"BBRAUT",F8,"F8.-OTRO TRACTOR",cReferencia);
|
||
|
||
//--------------------------------------------------------------------//
|
||
|
||
//Pedimos memoria para la Periodica
|
||
for(byi=0;byi<NUM_PERIODICA_AUT;byi++)
|
||
pszPeriodicaBBDIA[byi] = (char *) malloc ( sTRAPERIODICADat[byNumPer].lTamPeriodicaTRAPERDat );
|
||
|
||
//Averiguamos si la entrada es por teclado o tarjeta
|
||
bTipoEntrada=ComprobarTecladoTarjeta();
|
||
|
||
//Calculamos el lugar donde comienza la periodica del BB de Autorizacion
|
||
lDesplazamiento=sTRAPERIODICADat[byNumPer].lPosicionTRAPER;
|
||
|
||
//Bucle infinito
|
||
while(1)
|
||
{
|
||
//Abrimos el fichero en modo escritura
|
||
if( ( pTransfer = fopen("transfer.dat", "r+b") ) == NULL)
|
||
ShowMessage("No se pudo Abrir el fichero transfer.dat");
|
||
else
|
||
{
|
||
|
||
//************************************PRIMERA PARTE DEL DIALOGO****************************/
|
||
|
||
switch(byEstado)
|
||
{
|
||
case 0:
|
||
|
||
byTiempoEsperaAUT=30;
|
||
bRespuestaPER=false;
|
||
|
||
//Mientras no obtengamos una respuesta correcta
|
||
while(!bRespuestaPER && byTiempoEsperaAUT)
|
||
{
|
||
//Inicializamos variables
|
||
memset(sSentencia,0,TAM_MAXIMO_OCASIONAL);
|
||
memset(sDatoTecleado,0,NUM_MAX_TECLAS);
|
||
ConseguirReferencia(&cReferencia);
|
||
byTiempoEsperaAUT=30;
|
||
|
||
//Peticion del codigo de Cisterna
|
||
if(bTipoEntrada)
|
||
Formatea(sSentencia,TAM_MAXIMO_OCASIONAL,"%c%s%s%c%s%s",cServidor,"BBRAUT",BB_ENTRADA_TARJETA,cReferencia,"14","Intro Tarj Cis");
|
||
else
|
||
Formatea(sSentencia,TAM_MAXIMO_OCASIONAL,"%c%s%s%c%s%s",cServidor,"BBRAUT",BB_ENTRADA_TECLADO,cReferencia,"13","Intro Cod Cis");
|
||
|
||
do
|
||
Transfer->EscribirOcasional(sSentencia,NUM_OCASIONAL);
|
||
while( !EsperarRespuestaOcasional(cServidor,"BBRAUT") );
|
||
|
||
//Inicializamos el caracter y esperamos a que sea la respuesta correcta
|
||
memset(pszPeriodicaBBDIA[0],0,sTRAPERIODICADat[byNumPer].lTamPeriodicaTRAPERDat);
|
||
cReferenciaTemp=0;
|
||
cDatoCorrecto='0';
|
||
|
||
//Mientras la referencia o el dato no sean los correctos
|
||
while( (cReferenciaTemp!=cReferencia || cDatoCorrecto!='S') && byTiempoEsperaAUT)
|
||
{
|
||
//Nos situamos en la posicion del Bur Brown de Autorizacion
|
||
fseek(pTransfer, lDesplazamiento, SEEK_SET);
|
||
//Leemos el caracter de referencia
|
||
fread(pszPeriodicaBBDIA[0],sTRAPERIODICADat[byNumPer].lTamPeriodicaTRAPERDat,1,pTransfer);
|
||
cReferenciaTemp=*(pszPeriodicaBBDIA[0]+UBICACION_REFERENCIA);
|
||
cDatoCorrecto=*(pszPeriodicaBBDIA[0]+UBICACION_DATO_CORRECTO);
|
||
}
|
||
|
||
if(byTiempoEsperaAUT)
|
||
{
|
||
//Ponemos por defecto el Numero de Elemento de Cisterna
|
||
strcpy(sNumeroEle,NUM_ELE_CIS_TAR);
|
||
memset(sNumeroEle,0,2);
|
||
//Obtenemos el valor de la respuesta
|
||
if(bTipoEntrada)
|
||
{
|
||
nValorPERBBDIA=atoi(pszPeriodicaBBDIA[0]+UBICACION_DATO_LEIDO_TAR);
|
||
memcpy(sNumeroEle,pszPeriodicaBBDIA[0]+UBICACION_ELEMENTO_TAR,2);
|
||
}
|
||
else
|
||
nValorPERBBDIA=atoi(pszPeriodicaBBDIA[0]+UBICACION_DATO_LEIDO_TEC);
|
||
|
||
//Comprobamos si la respuesta es Correcta
|
||
if( !strstr(pszPeriodicaBBDIA[0]+UBICACION_DATO_LEIDO_TEC,"F") && nValorPERBBDIA>0 && nValorPERBBDIA<10000 && strstr(sNumeroEle,NUM_ELE_CIS_TAR) )
|
||
{
|
||
bRespuestaPER=true;
|
||
//Comprobamos la Cisterna
|
||
Formatea(sDatoTecleado,NUM_MAX_TECLAS,"%04d",nValorPERBBDIA);
|
||
nError=Autorizacion->ComprobarCisterna(sDatoTecleado,Form1->hBaseDatos);
|
||
//Si fue correcto pasamos al siguiente estado
|
||
if(nError==AUT_CIS_CORRECTO)
|
||
byEstado=1;
|
||
else
|
||
MostrarResultado(cServidor,"BBRAUT",nError);
|
||
}
|
||
else if( !strstr(sNumeroEle,NUM_ELE_CIS_TAR) )
|
||
MostrarResultado(cServidor,"BBRAUT",TAR_CIS_INVALIDA);
|
||
else
|
||
{
|
||
if( strstr(pszPeriodicaBBDIA[0]+UBICACION_DATO_LEIDO_TEC,"F5") )
|
||
MostrarResultado(cServidor,"BBRAUT",DIA_CANCELADO);
|
||
else if( strstr(pszPeriodicaBBDIA[0]+UBICACION_DATO_LEIDO_TEC,"F") )
|
||
MostrarResultado(cServidor,"BBRAUT",TEC_FUNCION_INVALIDA);
|
||
else
|
||
MostrarResultado(cServidor,"BBRAUT",ENT_TECLADO_INVALIDA);
|
||
}
|
||
}
|
||
}
|
||
|
||
break;
|
||
|
||
//************************************SEGUNDA PARTE DEL DIALOGO****************************/
|
||
|
||
case 1:
|
||
|
||
//Inicializamos la sentencia
|
||
memset(sSentencia,0,TAM_MAXIMO_OCASIONAL);
|
||
memset(sDatoTecleado,0,NUM_MAX_TECLAS);
|
||
|
||
//Conseguimos la referencia
|
||
ConseguirReferencia(&cReferencia);
|
||
|
||
//Peticion del codigo del Conductor
|
||
if(bTipoEntrada)
|
||
Formatea(sSentencia,TAM_MAXIMO_OCASIONAL,"%c%s%s%c%s%s",cServidor,"BBRAUT",BB_ENTRADA_TARJETA,cReferencia,"14","Intro Tarj Con");
|
||
else
|
||
Formatea(sSentencia,TAM_MAXIMO_OCASIONAL,"%c%s%s%c%s%s",cServidor,"BBRAUT",BB_ENTRADA_TECLADO,cReferencia,"13","Intro Cod Con");
|
||
|
||
do
|
||
Transfer->EscribirOcasional(sSentencia,NUM_OCASIONAL);
|
||
while( !EsperarRespuestaOcasional(cServidor,"BBRAUT") );
|
||
|
||
//Inicializamos el caracter y esperamos a que sea la respuesta correcta
|
||
memset(pszPeriodicaBBDIA[1],0,sTRAPERIODICADat[byNumPer].lTamPeriodicaTRAPERDat);
|
||
cReferenciaTemp=0;
|
||
cDatoCorrecto='0';
|
||
byTiempoEsperaAUT=30;
|
||
|
||
while( (cReferenciaTemp!=cReferencia || cDatoCorrecto!='S') && byTiempoEsperaAUT)
|
||
{
|
||
//Nos situamos en la posicion del Bur Brown de Autorizacion
|
||
fseek(pTransfer, lDesplazamiento, SEEK_SET);
|
||
//Leemos el caracter de referencia
|
||
fread(pszPeriodicaBBDIA[1], sTRAPERIODICADat[byNumPer].lTamPeriodicaTRAPERDat , 1, pTransfer);
|
||
cReferenciaTemp=*(pszPeriodicaBBDIA[1]+UBICACION_REFERENCIA);
|
||
cDatoCorrecto=*(pszPeriodicaBBDIA[1]+UBICACION_DATO_CORRECTO);
|
||
}
|
||
|
||
//Si no paso el tiempo de espera
|
||
if(byTiempoEsperaAUT)
|
||
{
|
||
//Ponemos por defecto el Numero de Elemento de Cisterna
|
||
strcpy(sNumeroEle,NUM_ELE_CON_TAR);
|
||
memset(sNumeroEle,0,2);
|
||
//Obtenemos el tama<6D>o de la respuesta
|
||
if(bTipoEntrada)
|
||
{
|
||
nValorPERBBDIA=atoi(pszPeriodicaBBDIA[1]+UBICACION_DATO_LEIDO_TAR);
|
||
memcpy(sNumeroEle,pszPeriodicaBBDIA[1]+UBICACION_ELEMENTO_TAR,2);
|
||
}
|
||
else
|
||
nValorPERBBDIA=atoi(pszPeriodicaBBDIA[1]+UBICACION_DATO_LEIDO_TEC);
|
||
|
||
//Comprobamos si la respuesta es Correcta
|
||
if( !strstr(pszPeriodicaBBDIA[1]+UBICACION_DATO_LEIDO_TEC,"F") && nValorPERBBDIA>0 && nValorPERBBDIA<10000 && strstr(sNumeroEle,NUM_ELE_CON_TAR) )
|
||
{
|
||
bRespuestaPER=true;
|
||
//Comprobamos el Conductor
|
||
Formatea(sDatoTecleado,NUM_MAX_TECLAS,"%04d",nValorPERBBDIA);
|
||
nError=Autorizacion->ComprobarConductor(sDatoTecleado,Form1->hBaseDatos);
|
||
//Si fue correcto pasamos al siguiente estado
|
||
if(nError==AUT_CON_CORRECTO)
|
||
byEstado=2;
|
||
else
|
||
MostrarResultado(cServidor,"BBRAUT",nError);
|
||
}
|
||
else if( !strstr(sNumeroEle,NUM_ELE_CIS_TAR) )
|
||
MostrarResultado(cServidor,"BBRAUT",TAR_CON_INVALIDA);
|
||
else if( strstr(pszPeriodicaBBDIA[1]+UBICACION_DATO_LEIDO_TEC,"F5") )
|
||
{
|
||
MostrarResultado(cServidor,"BBRAUT",DIA_CANCELADO);
|
||
byEstado=0;
|
||
}
|
||
else
|
||
{
|
||
if( strstr(pszPeriodicaBBDIA[1]+UBICACION_DATO_LEIDO_TEC,"F") )
|
||
MostrarResultado(cServidor,"BBRAUT",TEC_FUNCION_INVALIDA);
|
||
else
|
||
MostrarResultado(cServidor,"BBRAUT",ENT_TECLADO_INVALIDA);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MostrarResultado(cServidor,"BBRAUT",SUP_TIEMPO_ENT_TECLADO);
|
||
byEstado=0;
|
||
}
|
||
|
||
break;
|
||
|
||
//************************************TERCERA PARTE DEL DIALOGO****************************/
|
||
|
||
case 2:
|
||
|
||
//Inicializamos las variables
|
||
memset(sSentencia,0,TAM_MAXIMO_OCASIONAL);
|
||
|
||
//Conseguimos la referencia
|
||
ConseguirReferencia(&cReferencia);
|
||
|
||
//Peticion del codigo de Tractor
|
||
Autorizacion->LeerEstructura(&sDatos);
|
||
pszMensaje = (char *) malloc ( sizeof("Tractor ") + sizeof(sDatos.pszMatriculaTraCis) );
|
||
strcpy(pszMensaje,"TRAC. ");
|
||
StrCat(pszMensaje,sDatos.pszMatriculaTraCis);
|
||
Formatea(sSentencia,TAM_MAXIMO_OCASIONAL,"%c%s%s%c%s%s",cServidor,"BBRAUT",BB_ENTRADA_TECLADO,cReferencia,"16",pszMensaje);
|
||
do
|
||
Transfer->EscribirOcasional(sSentencia,NUM_OCASIONAL);
|
||
while( !EsperarRespuestaOcasional(cServidor,"BBRAUT") );
|
||
|
||
free(pszMensaje);
|
||
|
||
//Guardamos el valor adecuado
|
||
memset(pszPeriodicaBBDIA[2],0,sTRAPERIODICADat[byNumPer].lTamPeriodicaTRAPERDat);
|
||
cReferenciaTemp=0;
|
||
cDatoCorrecto='0';
|
||
byTiempoEsperaAUT=30;
|
||
|
||
while( (cReferenciaTemp!=cReferencia || cDatoCorrecto!='S') && byTiempoEsperaAUT)
|
||
{
|
||
//Nos situamos en la posicion del Bur Brown de Autorizacion
|
||
fseek(pTransfer, lDesplazamiento, SEEK_SET);
|
||
//Leemos el caracter de referencia
|
||
fread(pszPeriodicaBBDIA[2], sTRAPERIODICADat[byNumPer].lTamPeriodicaTRAPERDat, 1, pTransfer);
|
||
cReferenciaTemp=*(pszPeriodicaBBDIA[2]+UBICACION_REFERENCIA);
|
||
cDatoCorrecto=*(pszPeriodicaBBDIA[2]+UBICACION_DATO_CORRECTO);
|
||
}
|
||
|
||
//Si no paso el tiempo de espera
|
||
if(byTiempoEsperaAUT)
|
||
{
|
||
//Comprobamos si la respuesta es Correcta
|
||
if( strstr(pszPeriodicaBBDIA[2]+UBICACION_DATO_LEIDO_TEC,"F4") )
|
||
{
|
||
bRespuestaPER=true;
|
||
//Comprobamos el Tractor
|
||
nError=Autorizacion->ComprobarTractor(sDatos.pszMatriculaTraCis,NULL,Form1->hBaseDatos);
|
||
//Si fue correcto pasamos al siguiente estado
|
||
if(nError==AUT_TRA_CORRECTO)
|
||
byEstado=3;
|
||
else
|
||
MostrarResultado(cServidor,"BBRAUT",nError);
|
||
}
|
||
else if (strstr(pszPeriodicaBBDIA[2]+UBICACION_DATO_LEIDO_TEC,"F8") )
|
||
{
|
||
//Inicializamos las variables
|
||
memset(sSentencia,0,TAM_MAXIMO_OCASIONAL);
|
||
memset(sDatoTecleado,0,NUM_MAX_TECLAS);
|
||
|
||
//Pedimos por codigo por teclado
|
||
ConseguirReferencia(&cReferencia);
|
||
//Pedimos memoria para el mensaje
|
||
pszMensaje = (char *) malloc ( sizeof("Intro Cod Tract") );
|
||
strcpy(pszMensaje,"Intro Cod Tract");
|
||
Formatea(sSentencia,TAM_MAXIMO_OCASIONAL,"%c%s%s%c%s%s",cServidor,"BBRAUT",BB_ENTRADA_TECLADO,cReferencia,"15",pszMensaje);
|
||
do
|
||
Transfer->EscribirOcasional(sSentencia,NUM_OCASIONAL);
|
||
while( !EsperarRespuestaOcasional(cServidor,"BBRAUT") );
|
||
|
||
//Liberamos mensaje
|
||
free(pszMensaje);
|
||
|
||
//Guardamos el valor adecuado
|
||
memset(pszPeriodicaBBDIA[2],0,sTRAPERIODICADat[byNumPer].lTamPeriodicaTRAPERDat);
|
||
cReferenciaTemp=0;
|
||
cDatoCorrecto='0';
|
||
byTiempoEsperaAUT=30;
|
||
|
||
while( (cReferenciaTemp!=cReferencia || cDatoCorrecto!='S') && byTiempoEsperaAUT)
|
||
{
|
||
//Nos situamos en la posicion del Bur Brown de Autorizacion
|
||
fseek(pTransfer, lDesplazamiento, SEEK_SET);
|
||
//Leemos el caracter de referencia
|
||
fread(pszPeriodicaBBDIA[2], sTRAPERIODICADat[byNumPer].lTamPeriodicaTRAPERDat, 1, pTransfer);
|
||
cReferenciaTemp=*(pszPeriodicaBBDIA[2]+UBICACION_REFERENCIA);
|
||
cDatoCorrecto=*(pszPeriodicaBBDIA[2]+UBICACION_DATO_CORRECTO);
|
||
}
|
||
|
||
//Si no paso el tiempo de espera
|
||
if(byTiempoEsperaAUT)
|
||
{
|
||
//Obtenemos el tama<6D>o de la respuesta
|
||
nValorPERBBDIA=atoi(pszPeriodicaBBDIA[2]+UBICACION_DATO_LEIDO_TEC);
|
||
|
||
if( !strstr(pszPeriodicaBBDIA[2]+UBICACION_DATO_LEIDO_TEC,"F") && nValorPERBBDIA>0 && nValorPERBBDIA<1000 )
|
||
{
|
||
bRespuestaPER=true;
|
||
//Comprobamos el Conductor
|
||
Formatea(sDatoTecleado,NUM_MAX_TECLAS,"%03d",nValorPERBBDIA);
|
||
nError=Autorizacion->ComprobarTractor(NULL,sDatoTecleado,Form1->hBaseDatos);
|
||
//Si fue correcto pasamos al siguiente estado
|
||
if(nError==AUT_TRA_CORRECTO)
|
||
byEstado=3;
|
||
else
|
||
MostrarResultado(cServidor,"BBRAUT",nError);
|
||
}
|
||
else
|
||
MostrarResultado(cServidor,"BBRAUT",TEC_FUNCION_INVALIDA);
|
||
}
|
||
else
|
||
{
|
||
MostrarResultado(cServidor,"BBRAUT",SUP_TIEMPO_ENT_TECLADO);
|
||
byEstado=0;
|
||
}
|
||
}
|
||
else if (strstr(pszPeriodicaBBDIA[2]+UBICACION_DATO_LEIDO_TEC,"F5") )
|
||
{
|
||
MostrarResultado(cServidor,"BBRAUT",DIA_CANCELADO);
|
||
byEstado=0;
|
||
}
|
||
else
|
||
{
|
||
if (strstr(pszPeriodicaBBDIA[2]+UBICACION_DATO_LEIDO_TEC,"F1") )
|
||
MostrarResultado(cServidor,"BBRAUT",TEC_FUNCION_INVALIDA);
|
||
else
|
||
MostrarResultado(cServidor,"BBRAUT",ENT_TECLADO_INVALIDA);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MostrarResultado(cServidor,"BBRAUT",SUP_TIEMPO_ENT_TECLADO);
|
||
byEstado=0;
|
||
}
|
||
|
||
break;
|
||
|
||
//************************************CUARTA PARTE DEL DIALOGO*****************************/
|
||
|
||
case 3:
|
||
|
||
//Inicializamos las variables
|
||
memset(sSentencia,0,TAM_MAXIMO_OCASIONAL);
|
||
memset(sDatoTecleado,0,NUM_MAX_TECLAS);
|
||
|
||
//Conseguimos la referencia
|
||
ConseguirReferencia(&cReferencia);
|
||
|
||
//Peticion del codigo de Suministrador
|
||
Formatea(sSentencia,TAM_MAXIMO_OCASIONAL,"%c%s%s%c%s%s",cServidor,"BBRAUT",BB_ENTRADA_TECLADO,cReferencia,"13","Intro Cod Sum");
|
||
do
|
||
Transfer->EscribirOcasional(sSentencia,NUM_OCASIONAL);
|
||
while( !EsperarRespuestaOcasional(cServidor,"BBRAUT") );
|
||
|
||
//Guardamos el valor adecuado
|
||
memset(pszPeriodicaBBDIA[3],0,sTRAPERIODICADat[byNumPer].lTamPeriodicaTRAPERDat);
|
||
cReferenciaTemp=0;
|
||
cDatoCorrecto='0';
|
||
byTiempoEsperaAUT=30;
|
||
|
||
while( (cReferenciaTemp!=cReferencia || cDatoCorrecto!='S') && byTiempoEsperaAUT)
|
||
{
|
||
//Nos situamos en la posicion del Bur Brown de Autorizacion
|
||
fseek(pTransfer, lDesplazamiento, SEEK_SET);
|
||
//Leemos el caracter de referencia
|
||
fread(pszPeriodicaBBDIA[3], sTRAPERIODICADat[byNumPer].lTamPeriodicaTRAPERDat, 1, pTransfer);
|
||
cReferenciaTemp=*(pszPeriodicaBBDIA[3]+UBICACION_REFERENCIA);
|
||
cDatoCorrecto=*(pszPeriodicaBBDIA[3]+UBICACION_DATO_CORRECTO);
|
||
}
|
||
|
||
//Si no paso el tiempo de espera
|
||
if(byTiempoEsperaAUT)
|
||
{
|
||
//Obtenemos el tama<6D>o de la respuesta
|
||
nValorPERBBDIA=atoi(pszPeriodicaBBDIA[3]+UBICACION_DATO_LEIDO_TEC);
|
||
|
||
//Comprobamos si la respuesta es Correcta
|
||
if( !strstr(pszPeriodicaBBDIA[3]+UBICACION_DATO_LEIDO_TEC,"F") && nValorPERBBDIA>0 && nValorPERBBDIA<10 )
|
||
{
|
||
bRespuestaPER=true;
|
||
//Comprobamos el Suministrador
|
||
Formatea(sDatoTecleado,NUM_MAX_TECLAS,"%01d",nValorPERBBDIA);
|
||
nError=Autorizacion->ComprobarSuministrador(sDatoTecleado,Form1->hBaseDatos);
|
||
//Si fue correcto pasamos al siguiente estado
|
||
if(nError==AUT_SUM_CORRECTO)
|
||
byEstado=4;
|
||
else
|
||
MostrarResultado(cServidor,"BBRAUT",nError);
|
||
}
|
||
else if( strstr(pszPeriodicaBBDIA[3]+UBICACION_DATO_LEIDO_TEC,"F5") )
|
||
{
|
||
MostrarResultado(cServidor,"BBRAUT",DIA_CANCELADO);
|
||
byEstado=0;
|
||
}
|
||
else
|
||
{
|
||
if( strstr(pszPeriodicaBBDIA[3]+UBICACION_DATO_LEIDO_TEC,"F") )
|
||
MostrarResultado(cServidor,"BBRAUT",TEC_FUNCION_INVALIDA);
|
||
else
|
||
MostrarResultado(cServidor,"BBRAUT",ENT_TECLADO_INVALIDA);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MostrarResultado(cServidor,"BBRAUT",SUP_TIEMPO_ENT_TECLADO);
|
||
byEstado=0;
|
||
}
|
||
|
||
break;
|
||
|
||
//************************************QUINTA PARTE DEL DIALOGO*****************************/
|
||
|
||
case 4:
|
||
|
||
//Inicializamos el numero de pedidos
|
||
byi=4;
|
||
byTiempoEsperaAUT=30;
|
||
bFinalizaAUT=false;
|
||
|
||
while(byTiempoEsperaAUT && !bFinalizaAUT)
|
||
{
|
||
//Inicializamos la respuesta correcta
|
||
bRespuestaPER=false;
|
||
byTiempoEsperaAUT=30;
|
||
//Mientras no haya respuesta correcta o timeout
|
||
while( !bRespuestaPER && byTiempoEsperaAUT )
|
||
{
|
||
//Inicializamos las variables
|
||
memset(sSentencia,0,TAM_MAXIMO_OCASIONAL);
|
||
memset(sDatoTecleado,0,NUM_MAX_TECLAS);
|
||
|
||
//Conseguimos la referencia
|
||
ConseguirReferencia(&cReferencia);
|
||
|
||
//Peticion del numero de Pedido
|
||
//Formateamos la sentencia
|
||
Formatea(sSentencia,TAM_MAXIMO_OCASIONAL,"%c%s%s%c%s%s",cServidor,"BBRAUT",BB_ENTRADA_TECLADO,cReferencia,"16","Intro Num Pedido");
|
||
do
|
||
Transfer->EscribirOcasional(sSentencia,NUM_OCASIONAL);
|
||
while( !EsperarRespuestaOcasional(cServidor,"BBRAUT") );
|
||
|
||
//Guardamos el valor adecuado
|
||
memset(pszPeriodicaBBDIA[byi],0,sTRAPERIODICADat[byNumPer].lTamPeriodicaTRAPERDat);
|
||
cReferenciaTemp=0;
|
||
cDatoCorrecto='0';
|
||
byTiempoEsperaAUT=30;
|
||
|
||
while( (cReferenciaTemp!=cReferencia || cDatoCorrecto!='S') && byTiempoEsperaAUT)
|
||
{
|
||
//Nos situamos en la posicion del Bur Brown de Autorizacion
|
||
fseek(pTransfer, lDesplazamiento, SEEK_SET);
|
||
//Leemos el caracter de referencia
|
||
fread(pszPeriodicaBBDIA[byi], sTRAPERIODICADat[byNumPer].lTamPeriodicaTRAPERDat, 1, pTransfer);
|
||
cReferenciaTemp=*(pszPeriodicaBBDIA[byi]+UBICACION_REFERENCIA);
|
||
cDatoCorrecto=*(pszPeriodicaBBDIA[byi]+UBICACION_DATO_CORRECTO);
|
||
}
|
||
|
||
//Si no paso el tiempo de espera
|
||
if(byTiempoEsperaAUT)
|
||
{
|
||
//Obtenemos el tama<6D>o de la respuesta
|
||
nValorPERBBDIA=atoi(pszPeriodicaBBDIA[byi]+UBICACION_DATO_LEIDO_TEC);
|
||
|
||
//Comprobamos si la respuesta es Correcta
|
||
if( !strstr(pszPeriodicaBBDIA[byi]+UBICACION_DATO_LEIDO_TEC,"F") && nValorPERBBDIA>0 && nValorPERBBDIA<10000000000 )
|
||
{
|
||
bRespuestaPER=true;
|
||
//Comprobamos el Pedido
|
||
itoa(nValorPERBBDIA,sDatoTecleado,10);
|
||
nError=Autorizacion->ComprobarPedidos(sDatoTecleado,Form1->hBaseDatos);
|
||
//Si fue correcto pasamos al siguiente estado
|
||
if(nError==AUT_ORC_CORRECTO)
|
||
{
|
||
bRepetido=false;
|
||
for(byj=4;byj<byi;byj++)
|
||
{
|
||
if( strstr(pszPeriodicaBBDIA[byj]+UBICACION_DATO_LEIDO_TEC,sDatoTecleado) )
|
||
bRepetido=true;
|
||
}
|
||
if(bRepetido)
|
||
MostrarResultado(cServidor,"BBRAUT",AUT_PED_YA_INTRODUCIDO);
|
||
else if(byi<(NUM_MAXIMO_PEDIDOS+4))
|
||
byi++;
|
||
else
|
||
MostrarResultado(cServidor,"BBRAUT",AUT_SUP_NUM_MAX_PED);
|
||
}
|
||
else
|
||
MostrarResultado(cServidor,"BBRAUT",nError);
|
||
}
|
||
//Si pulso F1 e introdujo al menos un pedido.
|
||
else
|
||
{
|
||
if( !strstr(pszPeriodicaBBDIA[byi]+UBICACION_DATO_LEIDO_TEC,"F1") && !strstr(pszPeriodicaBBDIA[byi]+UBICACION_DATO_LEIDO_TEC,"F5") )
|
||
MostrarResultado(cServidor,"BBRAUT",TEC_FUNCION_INVALIDA);
|
||
else
|
||
{
|
||
bFinalizaAUT=true;
|
||
bRespuestaPER=true;
|
||
|
||
if( strstr(pszPeriodicaBBDIA[byi]+UBICACION_DATO_LEIDO_TEC,"F1") )
|
||
{
|
||
if(byi>4)
|
||
MostrarResultado(cServidor,"BBRAUT",OPERACION_OK);
|
||
else
|
||
{
|
||
MostrarResultado(cServidor,"BBRAUT",AUT_SIN_PED_SELECCIONADOS);
|
||
bFinalizaAUT=false;
|
||
bRespuestaPER=false;
|
||
}
|
||
}
|
||
else if( strstr(pszPeriodicaBBDIA[byi]+UBICACION_DATO_LEIDO_TEC,"F5") )
|
||
MostrarResultado(cServidor,"BBRAUT",DIA_CANCELADO);
|
||
}
|
||
}
|
||
}
|
||
else
|
||
MostrarResultado(cServidor,"BBRAUT",SUP_TIEMPO_ENT_TECLADO);
|
||
}
|
||
}
|
||
|
||
byEstado=0;
|
||
|
||
break;
|
||
}
|
||
|
||
//************************************TERMINAMOS LA FUNCION********************************/
|
||
|
||
}
|
||
//Cerramos el fichero
|
||
fclose(pTransfer);
|
||
Sleep(100);
|
||
}
|
||
}
|
||
|
||
//---------------------------------------------------------------------------
|
||
void DialogoPesoEntrada(void)
|
||
{
|
||
//Bucle infinito
|
||
while(1)
|
||
{
|
||
Sleep(100);
|
||
}
|
||
}
|
||
|
||
//---------------------------------------------------------------------------
|
||
void DialogoPesoSalida(void)
|
||
{
|
||
//Bucle infinito
|
||
while(1)
|
||
{
|
||
Sleep(100);
|
||
}
|
||
}
|
||
|
||
//---------------------------------------------------------------------------
|
||
void DialogoAlbaran(void)
|
||
{
|
||
//Bucle infinito
|
||
while(1)
|
||
{
|
||
Sleep(100);
|
||
}
|
||
}
|
||
|
||
//---------------------------------------------------------------------------
|
||
bool ComprobarTecladoTarjeta(void)
|
||
{
|
||
dbiTabla TPrm;
|
||
bool bTipoEntrada;
|
||
char *pszTipoEntrada;
|
||
|
||
//Damos por defecto que es Tarjeta
|
||
bTipoEntrada=true;
|
||
|
||
//Reservamos memoria para la Tolerancia
|
||
AbrirTablaBDE(&TPrm,"SIMICPRM",NULL,false,Form1->hBaseDatos);
|
||
pszTipoEntrada=ReservarMemoria(&TPrm,"PRMTACPRM");
|
||
LeerCampoNBDE(&TPrm,"PRMTACPRM",pszTipoEntrada,NULL);
|
||
CerrarTablaBDE(&TPrm);
|
||
|
||
if( !strcmp(pszTipoEntrada,"T") )
|
||
bTipoEntrada=false;
|
||
|
||
return bTipoEntrada;
|
||
}
|
||
|
||
//---------------------------------------------------------------------------
|
||
void Temporizador(void)
|
||
{
|
||
//Inicializamos los contadores de tiempo
|
||
byTiempoEsperaAUT=0;
|
||
byTiempoEsperaPSE=0;
|
||
byTiempoEsperaPSS=0;
|
||
byTiempoEsperaALB=0;
|
||
byTiempoEsperaRespOCA=0;
|
||
//4 lineas temporales
|
||
byTiempoEsperaPSE=30;
|
||
byTiempoEsperaPSS=20;
|
||
byTiempoEsperaALB=10;
|
||
|
||
while(1)
|
||
{
|
||
if(byTiempoEsperaAUT)
|
||
byTiempoEsperaAUT--;
|
||
if(byTiempoEsperaPSE)
|
||
byTiempoEsperaPSE--;
|
||
if(byTiempoEsperaPSS)
|
||
byTiempoEsperaPSS--;
|
||
if(byTiempoEsperaALB)
|
||
byTiempoEsperaALB--;
|
||
if(byTiempoEsperaRespOCA)
|
||
byTiempoEsperaRespOCA--;
|
||
//Los 4 Form son temporales para ver que funciona
|
||
Form1->Edit2->Text=byTiempoEsperaAUT;
|
||
Form1->Edit3->Text=byTiempoEsperaPSE;
|
||
Form1->Edit4->Text=byTiempoEsperaPSS;
|
||
Form1->Edit5->Text=byTiempoEsperaALB;
|
||
Sleep(TIEMPO_CONTADOR_SEGUNDO);
|
||
}
|
||
}
|
||
|
||
//---------------------------------------------------------------------------
|
||
BYTE CargarThreads(void)
|
||
{
|
||
BYTE byValorDevuelto;
|
||
|
||
//Inicializamos las variables
|
||
byValorDevuelto=0;
|
||
|
||
//Inicializamos el Thread de contadores del Dialogo
|
||
Form1->HDContadores=CreateThread( 0, 0, (LPTHREAD_START_ROUTINE) Temporizador, 0, 0, &DWContadorID);
|
||
if(Form1->HDContadores==0)
|
||
byValorDevuelto=THREAD_CONT_NO_INICIADO;
|
||
|
||
//Inicializamos el Thread de Autorizacion
|
||
Form1->HDAUT=CreateThread( 0, 0, (LPTHREAD_START_ROUTINE) DialogoAutorizacion, 0, 0, &DWAUTID);
|
||
if(Form1->HDAUT==0)
|
||
byValorDevuelto=THREAD_AUT_NO_INICIADO;
|
||
|
||
//Inicializamos el Thread del Peso de Entrada
|
||
Form1->HDPSE=CreateThread( 0, 0, (LPTHREAD_START_ROUTINE) DialogoPesoEntrada, 0, 0, &DWPSEID);
|
||
if(Form1->HDPSE==0)
|
||
byValorDevuelto=THREAD_PSE_NO_INICIADO;
|
||
|
||
//Inicializamos el Thread del Peso de Salida
|
||
Form1->HDPSS=CreateThread( 0, 0, (LPTHREAD_START_ROUTINE) DialogoPesoSalida, 0, 0, &DWPSSID);
|
||
if(Form1->HDPSS==0)
|
||
byValorDevuelto=THREAD_PSS_NO_INICIADO;
|
||
|
||
//Inicializamos el Thread del Albaran
|
||
Form1->HDALB=CreateThread( 0, 0, (LPTHREAD_START_ROUTINE) DialogoAlbaran, 0, 0, &DWALBID);
|
||
if(Form1->HDALB==0)
|
||
byValorDevuelto=THREAD_ALB_NO_INICIADO;
|
||
|
||
return byValorDevuelto;
|
||
}
|
||
|
||
//---------------------------------------------------------------------------
|
||
void TerminarThread(HANDLE ThreadID)
|
||
{
|
||
bool bResult;
|
||
BYTE byi;
|
||
DWORD dwEstado;
|
||
|
||
if(ThreadID!=NULL)
|
||
{
|
||
bResult = GetExitCodeThread(ThreadID,&dwEstado);
|
||
if(bResult && (dwEstado == STILL_ACTIVE) )
|
||
{
|
||
if(ThreadID==Form1->HDAUT)
|
||
{
|
||
//Pedimos memoria para la Periodica
|
||
for(byi=0;byi<NUM_PERIODICA_AUT;byi++)
|
||
free(pszPeriodicaBBDIA[byi]);
|
||
}
|
||
TerminateThread(ThreadID,0);
|
||
CloseHandle(ThreadID);
|
||
}
|
||
}
|
||
}
|
||
|
||
//----------------------------------------------------------------------
|
||
void DefinirTeclasFuncion(char cServidor,char *pszTipoID,char *Tecla,char *Mensaje,char cReferencia)
|
||
{
|
||
char cNumeroCaracteres[3];
|
||
char cTreinta[2];
|
||
char sMensaje[NUM_MAX_CAR_TEC_FUNCION];
|
||
char sSentencia[TAM_MAXIMO_OCASIONAL];
|
||
int nNumeroCaracteres;
|
||
|
||
//Inicializamos Variables
|
||
memset(sMensaje,0,NUM_MAX_CAR_TEC_FUNCION);
|
||
memset(sSentencia,0,TAM_MAXIMO_OCASIONAL);
|
||
//Asignamos el caracter 30
|
||
cTreinta[0]=30;
|
||
cTreinta[1]=0;
|
||
|
||
//Definimos la tecla de Funcion correspondiente
|
||
nNumeroCaracteres=StrLen(Mensaje)+1;
|
||
Formatea(cNumeroCaracteres,3,"%02d",nNumeroCaracteres);
|
||
strcpy(sMensaje,cNumeroCaracteres);
|
||
StrCat(sMensaje,Mensaje);
|
||
StrCat(sMensaje,cTreinta);
|
||
Formatea(sSentencia,TAM_MAXIMO_OCASIONAL,"%c%s%s%c%s%s",cServidor,pszTipoID,BB_DEF_TECLA_FUNCION,cReferencia,Tecla,sMensaje);
|
||
do
|
||
Transfer->EscribirOcasional(sSentencia,NUM_OCASIONAL);
|
||
while( !EsperarRespuestaOcasional(cServidor,pszTipoID) );
|
||
|
||
}
|
||
|
||
//--------------------------------------------------------------------------------------------
|
||
void ConseguirReferencia(char *cReferencia)
|
||
{
|
||
(*cReferencia)++;
|
||
if( (*cReferencia)==100 )
|
||
(*cReferencia)=1;
|
||
}
|
||
|
||
//--------------------------------------------------------------------------------------------
|
||
bool EsperarRespuestaOcasional(char cServidor,char *pszTipoId)
|
||
{
|
||
bool bRespuestaOCA,bRespuestaOk;
|
||
char sTexto[TAM_MAXIMO_OCASIONAL];
|
||
char sRespuestaOCA[TAM_MAXIMO_OCASIONAL];//Estructura de la respuesta
|
||
|
||
//Inicializamos las variables
|
||
memset(sRespuestaOCA,0,TAM_MAXIMO_OCASIONAL);
|
||
memset(sTexto,0,TAM_MAXIMO_OCASIONAL);
|
||
bRespuestaOCA=false;
|
||
bRespuestaOk=false;
|
||
|
||
//Asignamos la respuesta que esperamos
|
||
sRespuestaOCA[0]=cServidor;
|
||
memcpy(sRespuestaOCA+1,pszTipoId,6);
|
||
sRespuestaOCA[7]='S';
|
||
byTiempoEsperaRespOCA=2;
|
||
|
||
//Mientras la Respuesta no sea ok
|
||
while(!bRespuestaOk && byTiempoEsperaRespOCA)
|
||
{
|
||
//Mientras no haya respuesta leemos
|
||
while(!bRespuestaOCA && byTiempoEsperaRespOCA)
|
||
{
|
||
Transfer->LeerOcasional(sTexto,NUM_OCASIONAL);
|
||
if(strcmp(sTexto,""))
|
||
bRespuestaOCA=true;
|
||
}
|
||
//Si la respuesta fue correcta
|
||
if( !memcmp(sRespuestaOCA,sTexto,7))
|
||
bRespuestaOk=true;
|
||
}
|
||
|
||
return bRespuestaOk;
|
||
}
|
||
|
||
//--------------------------------------------------------------------------------------------
|
||
void MostrarResultado(char cServidor,char *sTipoID,int nResultado)
|
||
{
|
||
char cDiez[2],cTrece[2],sTamano[3],cReferencia;
|
||
char sSentencia[TAM_MAXIMO_OCASIONAL];
|
||
char *pszMensaje;
|
||
bool bEntro;
|
||
|
||
//Inicializamos variables
|
||
cDiez[0]=10;
|
||
cDiez[1]=0;
|
||
cTrece[0]=13;
|
||
cTrece[1]=0;
|
||
cReferencia=1;
|
||
bEntro=true;
|
||
|
||
//En funcion del Resultado enviamo una cadena
|
||
switch(nResultado)
|
||
{
|
||
|
||
case AUT_CIS_VALOR_NO_ENCONTRADO:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("CISTERNA")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("NO EXISTE") );
|
||
strcpy(pszMensaje,"CISTERNA");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"NO EXISTE");
|
||
strcpy(sTamano,"19");
|
||
|
||
break;
|
||
|
||
case AUT_CIS_BORRADO:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("CISTERNA BORRADA") );
|
||
strcpy(pszMensaje,"CISTERNA BORRADA");
|
||
strcpy(sTamano,"16");
|
||
|
||
break;
|
||
|
||
case AUT_CIS_TARJETA_CADUCADA:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("CADUCADA TARJETA")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("TRANSPORTE") );
|
||
strcpy(pszMensaje,"CADUCADA TARJETA");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"TRANSPORTE");
|
||
strcpy(sTamano,"28");
|
||
|
||
break;
|
||
|
||
case AUT_CIS_ADR_CADUCADO:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("A.D.R. CADUCADO") );
|
||
strcpy(pszMensaje,"A.D.R. CADUCADO");
|
||
strcpy(sTamano,"15");
|
||
|
||
break;
|
||
|
||
case AUT_CIS_ITV_CADUCADO:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("I.T.V. CADUCADO") );
|
||
strcpy(pszMensaje,"I.T.V. CADUCADO");
|
||
strcpy(sTamano,"15");
|
||
|
||
break;
|
||
|
||
case AUT_CIS_SEGURO_CADUCADO:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("POLIZA SEGURO")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("CADUCADA") );
|
||
strcpy(pszMensaje,"POLIZA SEGURO");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"CADUCADA");
|
||
strcpy(sTamano,"23");
|
||
|
||
break;
|
||
|
||
case AUT_EST_CIS_YA_DENTRO:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("CISTERNA YA")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("AUTORIZADA") );
|
||
strcpy(pszMensaje,"CISTERNA YA");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"AUTORIZADA");
|
||
strcpy(sTamano,"23");
|
||
|
||
break;
|
||
|
||
case AUT_CON_VALOR_NO_ENCONTRADO:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("CONDUCTOR")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("NO EXISTE") );
|
||
strcpy(pszMensaje,"CONDUCTOR");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"NO EXISTE");
|
||
strcpy(sTamano,"20");
|
||
|
||
break;
|
||
|
||
case AUT_CON_BORRADO:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("CONDUCTOR") + sizeof(cDiez) + sizeof(cTrece) + sizeof("BORRADO") );
|
||
strcpy(pszMensaje,"CONDUCTOR");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"BORRADO");
|
||
strcpy(sTamano,"18");
|
||
|
||
break;
|
||
|
||
case AUT_CON_CARNET_CADUCADO:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("CARNET CADUCADO") );
|
||
strcpy(pszMensaje,"CARNET CADUCADO");
|
||
strcpy(sTamano,"15");
|
||
|
||
break;
|
||
|
||
case AUT_CON_ADR_CADUCADO:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("A.D.R. CADUCADO") );
|
||
strcpy(pszMensaje,"A.D.R. CADUCADO");
|
||
strcpy(sTamano,"15");
|
||
|
||
break;
|
||
|
||
case AUT_EST_CON_YA_DENTRO:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("CONDUCTOR YA")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("AUTORIZADO") );
|
||
strcpy(pszMensaje,"CONDUCTOR YA");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"AUTORIZADO");
|
||
strcpy(sTamano,"24");
|
||
|
||
break;
|
||
|
||
case AUT_TRA_VALOR_NO_ENCONTRADO:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("TRACTOR")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("NO EXISTE") );
|
||
strcpy(pszMensaje,"TRACTOR");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"NO EXISTE");
|
||
strcpy(sTamano,"18");
|
||
|
||
break;
|
||
|
||
case AUT_TRA_BORRADO:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("TRACTOR BORRADO") );
|
||
strcpy(pszMensaje,"TRACTOR BORRADO");
|
||
strcpy(sTamano,"15");
|
||
|
||
break;
|
||
|
||
case AUT_TRA_TARJETA_CADUCADA:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("CADUCADA TARJETA")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("TRANSPORTE") );
|
||
strcpy(pszMensaje,"CADUCADA TARJETA");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"TRANSPORTE");
|
||
strcpy(sTamano,"28");
|
||
|
||
break;
|
||
|
||
case AUT_TRA_ADR_CADUCADO:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("A.D.R. CADUCADO") );
|
||
strcpy(pszMensaje,"A.D.R. CADUCADO");
|
||
strcpy(sTamano,"15");
|
||
|
||
break;
|
||
|
||
case AUT_TRA_ITV_CADUCADO:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("I.T.V. CADUCADO") );
|
||
strcpy(pszMensaje,"I.T.V. CADUCADO");
|
||
strcpy(sTamano,"15");
|
||
|
||
break;
|
||
|
||
case AUT_TRA_SEGURO_CADUCADO:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("CADUCADA POLIZA")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("SEGURO") );
|
||
strcpy(pszMensaje,"CADUCADA POLIZA");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"SEGURO");
|
||
strcpy(sTamano,"23");
|
||
|
||
break;
|
||
|
||
case AUT_EST_TRA_YA_DENTRO:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("TRACTOR YA")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("AUTORIZADO") );
|
||
strcpy(pszMensaje,"TRACTOR YA");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"AUTORIZADO");
|
||
strcpy(sTamano,"22");
|
||
|
||
break;
|
||
|
||
case AUT_SUM_VALOR_NO_ENCONTRADO:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("SUMINISTRADOR")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("NO EXISTE") );
|
||
strcpy(pszMensaje,"SUMINISTRADOR");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"NO EXISTE");
|
||
strcpy(sTamano,"24");
|
||
|
||
break;
|
||
|
||
case AUT_SUM_BORRADO:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("SUMINISTRADOR") + sizeof(cDiez) + sizeof(cTrece) + sizeof("BORRADO") );
|
||
strcpy(pszMensaje,"SUMINISTRADOR");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"BORRADO");
|
||
strcpy(sTamano,"22");
|
||
|
||
break;
|
||
|
||
case AUT_ORC_PEDIDO_DUPLICADO:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("PED. DUPLICADO") );
|
||
strcpy(pszMensaje,"PED. DUPLICADO");
|
||
strcpy(sTamano,"14");
|
||
|
||
break;
|
||
|
||
case AUT_ORC_VALOR_NO_ENCONTRADO:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("PED. NO EXISTE") );
|
||
strcpy(pszMensaje,"PED. NO EXISTE");
|
||
strcpy(sTamano,"14");
|
||
|
||
break;
|
||
|
||
case AUT_ORC_BORRADO:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("PED. BORRADO") );
|
||
strcpy(pszMensaje,"PED. BORRADO");
|
||
strcpy(sTamano,"12");
|
||
|
||
break;
|
||
|
||
case AUT_ORC_ESTADO_ACABADO:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("PED.") + sizeof(cDiez) + sizeof(cTrece) + sizeof("NO PENDIENTE") );
|
||
strcpy(pszMensaje,"PED.");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"NO PENDIENTE");
|
||
strcpy(sTamano,"18");
|
||
|
||
break;
|
||
|
||
case AUT_ORC_OTRO_SUMINISTRADOR:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("PED. OTRO") + sizeof(cDiez) + sizeof(cTrece) + sizeof("SUMINISTRADOR") );
|
||
strcpy(pszMensaje,"PED. OTRO");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"SUMINISTRADOR");
|
||
strcpy(sTamano,"24");
|
||
|
||
break;
|
||
|
||
case AUT_ORC_OTRA_CISTERNA:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("PED.") + sizeof(cDiez) + sizeof(cTrece) + sizeof("OTRA CISTERNA") );
|
||
strcpy(pszMensaje,"PED.");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"OTRA CISTERNA");
|
||
strcpy(sTamano,"19");
|
||
|
||
break;
|
||
|
||
case AUT_ORC_FECHA_MENOR_QUE_HOY:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("PED. CADUCADO") );
|
||
strcpy(pszMensaje,"PED. CADUCADO");
|
||
strcpy(sTamano,"13");
|
||
|
||
break;
|
||
|
||
case AUT_SIN_PED_SELECCIONADOS:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("SIN PEDIDO")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("SELECCIONADO") );
|
||
strcpy(pszMensaje,"SIN PEDIDO");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"SELECCIONADO");
|
||
strcpy(sTamano,"24");
|
||
|
||
break;
|
||
|
||
case AUT_SUP_NUM_MAX_PED:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("SUPERADO NUMERO")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("PEDIDO MAXIMO") );
|
||
strcpy(pszMensaje,"SUPERADO NUMERO");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"MAXIMO DE PEDIDO");
|
||
strcpy(sTamano,"33");
|
||
|
||
break;
|
||
|
||
case AUT_PED_YA_INTRODUCIDO:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("PEDIDO")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("YA INTRODUCIDO") );
|
||
strcpy(pszMensaje,"PEDIDO");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"YA INTRODUCIDO");
|
||
strcpy(sTamano,"22");
|
||
|
||
break;
|
||
|
||
case PEE_ESTADO_NO_AUTORIZADO:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("ESTADO")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("NO AUTORIZADO") );
|
||
strcpy(pszMensaje,"ESTADO");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"NO AUTORIZADO");
|
||
strcpy(sTamano,"21");
|
||
|
||
break;
|
||
|
||
case PEE_PESO_FUERA_DE_TOLERANCIA:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("PESO FUERA DE")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("TOLERANCIA") );
|
||
strcpy(pszMensaje,"PESO FUERA DE");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"TOLERANCIA");
|
||
strcpy(sTamano,"25");
|
||
|
||
break;
|
||
|
||
case PEE_TRACTOR_NO_ENCONTRADO:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("TRACTOR")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("NO ENCONTRADO") );
|
||
strcpy(pszMensaje,"TRACTOR");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"NO ENCONTRADO");
|
||
strcpy(sTamano,"22");
|
||
|
||
break;
|
||
|
||
case PEE_CISTERNA_NO_ENCONTRADA:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("CISTERNA")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("NO ENCONTRADA") );
|
||
strcpy(pszMensaje,"CISTERNA");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"NO ENCONTRADA");
|
||
strcpy(sTamano,"23");
|
||
|
||
break;
|
||
|
||
case PEE_CISTERNA_SIN_ORDEN:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("CISTERNA")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("SIN ORDEN") );
|
||
strcpy(pszMensaje,"CISTERNA");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"SIN ORDEN");
|
||
strcpy(sTamano,"19");
|
||
|
||
break;
|
||
|
||
case PEE_CONDUCTOR_NO_ENCONTRADO:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("CONDUCTOR")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("NO ENCONTRADO") );
|
||
strcpy(pszMensaje,"CONDUCTOR");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"NO ENCONTRADO");
|
||
strcpy(sTamano,"24");
|
||
|
||
break;
|
||
|
||
case PES_CISTERNA_SIN_ORDEN:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("CISTERNA")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("SIN ORDEN") );
|
||
strcpy(pszMensaje,"CISTERNA");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"SIN ORDEN");
|
||
strcpy(sTamano,"19");
|
||
|
||
break;
|
||
|
||
case PES_ESTADO_NO_CARGADO:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("ESTADO")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("NO CARGADO") );
|
||
strcpy(pszMensaje,"ESTADO");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"NO CARGADO");
|
||
strcpy(sTamano,"18");
|
||
|
||
break;
|
||
|
||
case PES_PESO_FUERA_DE_TOLERANCIA:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("PESO FUERA DE")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("TOLERANCIA") );
|
||
strcpy(pszMensaje,"PESO FUERA DE");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"TOLERANCIA");
|
||
strcpy(sTamano,"25");
|
||
|
||
break;
|
||
|
||
case PES_CISTERNA_NO_ENCONTRADA:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("CISTERNA")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("NO ENCONTRADA") );
|
||
strcpy(pszMensaje,"CISTERNA");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"NO ENCONTRADA");
|
||
strcpy(sTamano,"23");
|
||
|
||
break;
|
||
|
||
case PES_TRACTOR_NO_ENCONTRADO:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("TRACTOR")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("NO ENCONTRADO") );
|
||
strcpy(pszMensaje,"TRACTOR");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"NO ENCONTRADO");
|
||
strcpy(sTamano,"22");
|
||
|
||
break;
|
||
|
||
case ALB_CAR_NO_ENCONTRADA:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("CARGA")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("NO ENCONTRADA") );
|
||
strcpy(pszMensaje,"CARGA");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"NO ENCONTRADA");
|
||
strcpy(sTamano,"20");
|
||
|
||
break;
|
||
|
||
case ALB_ESTADO_NO_AUTORIZADO:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("ESTADO")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("NO AUTORIZADO") );
|
||
strcpy(pszMensaje,"ESTADO");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"NO AUTORIZADO");
|
||
strcpy(sTamano,"21");
|
||
|
||
break;
|
||
|
||
case TAR_CIS_INVALIDA:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("TARJETA CISTERNA")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("INVALIDA") );
|
||
strcpy(pszMensaje,"TARJETA CISTERNA");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"INVALIDA");
|
||
strcpy(sTamano,"26");
|
||
|
||
break;
|
||
|
||
case TAR_CON_INVALIDA:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("TARJETA COND.")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("INVALIDA") );
|
||
strcpy(pszMensaje,"TARJETA COND.");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"INVALIDA");
|
||
strcpy(sTamano,"23");
|
||
|
||
break;
|
||
|
||
case TEC_FUNCION_INVALIDA:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("TECLAS FUNCION")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("INVALIDAS") );
|
||
strcpy(pszMensaje,"TECLAS FUNCION");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"INVALIDAS");
|
||
strcpy(sTamano,"25");
|
||
|
||
break;
|
||
|
||
case ENT_TECLADO_INVALIDA:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("ENTRADA TECLADO")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("INVALIDA") );
|
||
strcpy(pszMensaje,"ENTRADA TECLADO");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"INVALIDA");
|
||
strcpy(sTamano,"25");
|
||
|
||
break;
|
||
|
||
case SUP_TIEMPO_ENT_TECLADO:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("SUPERADO TIEMPO")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("ENTRADA DATO") );
|
||
strcpy(pszMensaje,"SUPERADO TIEMPO");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"ENTRADA DATO");
|
||
strcpy(sTamano,"29");
|
||
|
||
break;
|
||
|
||
case DIA_CANCELADO:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("DIALOGO")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("CANCELADO") );
|
||
strcpy(pszMensaje,"DIALOGO");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"CANCELADO");
|
||
strcpy(sTamano,"18");
|
||
|
||
break;
|
||
|
||
case OPERACION_OK:
|
||
|
||
pszMensaje = (char *) malloc ( sizeof("OPERACION OK") );
|
||
strcpy(pszMensaje,"OPERACION OK");
|
||
strcpy(sTamano,"12");
|
||
|
||
break;
|
||
|
||
default:
|
||
bEntro=false;
|
||
}
|
||
|
||
if(bEntro)
|
||
{
|
||
//Conseguimos la referencia
|
||
ConseguirReferencia(&cReferencia);
|
||
|
||
//Formateamos la sentencia
|
||
Formatea(sSentencia,TAM_MAXIMO_OCASIONAL,"%c%s%s%c%s%s",cServidor,sTipoID,BB_MENSAJE_BLOQUEO,cReferencia,sTamano,pszMensaje);
|
||
do
|
||
Transfer->EscribirOcasional(sSentencia,NUM_OCASIONAL);
|
||
while( !EsperarRespuestaOcasional(cServidor,sTipoID) );
|
||
|
||
Sleep(TIEMPO_MENSAJE_PANTALLA);
|
||
free(pszMensaje);
|
||
}
|
||
}
|
||
//-----------------------------------------------------------------------
|
||
void AnimacionMontrel(char cServidor,char *sTipoID,char cReferencia)
|
||
{
|
||
int ni,nj;
|
||
char sMontrel[7];
|
||
char *pszMensaje;
|
||
char sSentencia[TAM_MAXIMO_OCASIONAL];
|
||
char cDiez[2],cTrece[2];
|
||
|
||
//Inicializamos variables
|
||
cDiez[0]=10;
|
||
cDiez[1]=0;
|
||
cTrece[0]=13;
|
||
cTrece[1]=0;
|
||
nj=0;
|
||
strcpy(sMontrel,"MONTREL");
|
||
pszMensaje = (char *) malloc (16);
|
||
memset(pszMensaje,0,16);
|
||
|
||
while(nj<7)
|
||
{
|
||
ni=14;
|
||
while(ni>=nj)
|
||
{
|
||
memset(pszMensaje+nj,' ',(14-nj));
|
||
memcpy(pszMensaje+ni,sMontrel+nj,1);
|
||
//Formateamos la sentencia
|
||
Formatea(sSentencia,TAM_MAXIMO_OCASIONAL,"%c%s%s%c%s%s",cServidor,sTipoID,BB_MENSAJE_BLOQUEO,cReferencia,"14",pszMensaje);
|
||
Transfer->EscribirOcasional(sSentencia,NUM_OCASIONAL);
|
||
Sleep(200);
|
||
ni--;
|
||
}
|
||
EsperarRespuestaOcasional(cServidor,"BBRAUT");
|
||
nj++;
|
||
|
||
}
|
||
|
||
free(pszMensaje);
|
||
|
||
//Creamos el mensaje
|
||
pszMensaje = (char *) malloc ( sizeof("MONTREL")+ sizeof(cDiez) + sizeof(cTrece) + sizeof("ING. ELECTRICA") );
|
||
strcpy(pszMensaje,"MONTREL");
|
||
StrCat(pszMensaje,cDiez);
|
||
StrCat(pszMensaje,cTrece);
|
||
StrCat(pszMensaje,"ING. ELECTRICA");
|
||
//Formateamos la sentencia
|
||
Formatea(sSentencia,TAM_MAXIMO_OCASIONAL,"%c%s%s%c%s%s",cServidor,sTipoID,BB_MENSAJE_BLOQUEO,cReferencia,"23",pszMensaje);
|
||
//Mientras no recibamos una respuesta correcta
|
||
do
|
||
Transfer->EscribirOcasional(sSentencia,NUM_OCASIONAL);
|
||
while(!EsperarRespuestaOcasional(cServidor,"BBRAUT"));
|
||
|
||
free(pszMensaje);
|
||
}
|