First commit 07/07/2002
This commit is contained in:
		
							
								
								
									
										341
									
								
								Main.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										341
									
								
								Main.cpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,341 @@
 | 
				
			|||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <vcl.h>
 | 
				
			||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					#include <time.h>
 | 
				
			||||||
 | 
					#pragma hdrstop
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "Main.h"
 | 
				
			||||||
 | 
					#include "SerieCfg.h"
 | 
				
			||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					#pragma package(smart_init)
 | 
				
			||||||
 | 
					#pragma resource "*.dfm"
 | 
				
			||||||
 | 
					TSmartCard_Reader *SmartCard_Reader;
 | 
				
			||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					__fastcall TSmartCard_Reader::TSmartCard_Reader(TComponent* Owner)
 | 
				
			||||||
 | 
					        : TForm(Owner)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  TabSheet1->TabVisible=false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  hCom=INVALID_HANDLE_VALUE;
 | 
				
			||||||
 | 
					  atr = true; inver = false;
 | 
				
			||||||
 | 
					  sprintf( serconfig1, "COM2: baud=9600 parity=O data=8 stop=2" );
 | 
				
			||||||
 | 
					  sprintf( serconfig2, "COM2: baud=9600 parity=O data=8 stop=2" );
 | 
				
			||||||
 | 
					  mlog->Lines->Clear();
 | 
				
			||||||
 | 
					  Logger( "Inicializaci<EFBFBD>n del programa" );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					void __fastcall TSmartCard_Reader::Logger(AnsiString log)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					 mlog->Lines->Add( log );
 | 
				
			||||||
 | 
					 StatusBar1->SimpleText = AnsiString( TDateTime::CurrentDateTime() ) + " :: " + log;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					void __fastcall TSmartCard_Reader::Puertoserie1Click(TObject *Sender)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  TSerieConf *conf;
 | 
				
			||||||
 | 
					  conf = new TSerieConf(this);
 | 
				
			||||||
 | 
					  conf->ShowModal();
 | 
				
			||||||
 | 
					  if ( conf->ModalResult == mrOk )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					          /* Cambiamos las cadenas de configuracion*/
 | 
				
			||||||
 | 
					          try {
 | 
				
			||||||
 | 
					          sprintf(serconfig1,"%s: baud=%d parity=%c data=%1d stop=%1d",
 | 
				
			||||||
 | 
					                  conf->comPort->Items->Strings[conf->comPort->ItemIndex].c_str(),conf->baudiosA->Text.ToInt(),conf->pariA->Text.c_str()[0],conf->bitsA->Text.ToInt(),conf->stopA->Text.ToInt() );
 | 
				
			||||||
 | 
					          sprintf(serconfig2,"%s: baud=%d parity=%c data=%1d stop=%1d",
 | 
				
			||||||
 | 
					                  conf->comPort->Items->Strings[conf->comPort->ItemIndex].c_str(),conf->baudiosD->Text.ToInt(),conf->pariD->Text.c_str()[0],conf->bitsD->Text.ToInt(),conf->stopD->Text.ToInt() );
 | 
				
			||||||
 | 
					          atr = conf->ATR->Checked;
 | 
				
			||||||
 | 
					          inver = conf->ConvenioInverso->Checked;
 | 
				
			||||||
 | 
					          Logger( "Configuracion del puerto cambiada a: " + AnsiString( serconfig2 ) );
 | 
				
			||||||
 | 
					          } catch(...) {
 | 
				
			||||||
 | 
					          Logger( "Error interpretando nueva configuraci<63>n" );
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					          /* y desconectamos */
 | 
				
			||||||
 | 
					          Desconectar1Click(0);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  delete conf;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void __fastcall TSmartCard_Reader::Conectar1Click(TObject *Sender)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if ( ! Conectar1->Checked )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					        Desconectar1->Checked = false;
 | 
				
			||||||
 | 
					        Conectar1->Checked = true;
 | 
				
			||||||
 | 
					        OpenCOM();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					void __fastcall TSmartCard_Reader::Desconectar1Click(TObject *Sender)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if ( ! Desconectar1->Checked )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					        Desconectar1->Checked = true;
 | 
				
			||||||
 | 
					        Conectar1->Checked = false;
 | 
				
			||||||
 | 
					        CloseCOM();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					void __fastcall TSmartCard_Reader::OpenCOM(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  char buf[256];
 | 
				
			||||||
 | 
					  bool err = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if ( hCom == INVALID_HANDLE_VALUE )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    if ( atr )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					          Logger( "Inicializando el puerto para LEER ATR: "+AnsiString(serconfig1) );
 | 
				
			||||||
 | 
					          if ( Open(serconfig1)<0 )
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            Logger( "Error en la apertura del puerto para ATR" ); err = true;
 | 
				
			||||||
 | 
					          } else {
 | 
				
			||||||
 | 
					            ATR1Click(0);
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ( !err )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					          Logger( "Inicializando el puerto: "+AnsiString(serconfig2) );
 | 
				
			||||||
 | 
					          if ( SetConfig(serconfig2)<0 )
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            Logger( "No puedo cambiar la velocidad" ); err = true;
 | 
				
			||||||
 | 
					          } else {
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					            in[0]=0x21;in[1]=0xC1;in[2]=0x01;in[3]=0x58;in[4]=0xB9;
 | 
				
			||||||
 | 
					            Send(out,buf,in,5,5);
 | 
				
			||||||
 | 
					*/            
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					void __fastcall TSmartCard_Reader::CloseCOM(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if ( hCom != INVALID_HANDLE_VALUE )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					          CloseHandle(hCom);
 | 
				
			||||||
 | 
					          hCom=INVALID_HANDLE_VALUE;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					  Funciones extraida integramente de VIAMOSC,(c) No te importa, versi<73>n 0.1
 | 
				
			||||||
 | 
					  Brevementes comentadas por mi (JDsoft para no confundirme)
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					int __fastcall TSmartCard_Reader::DoReset(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  EscapeCommFunction(hCom,SETRTS);
 | 
				
			||||||
 | 
					  Sleep(50);
 | 
				
			||||||
 | 
					  EscapeCommFunction(hCom,CLRRTS);
 | 
				
			||||||
 | 
					  Sleep(250);
 | 
				
			||||||
 | 
					  return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int __fastcall TSmartCard_Reader::SetConfig(const char *serconfig)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  DCB	dcb;
 | 
				
			||||||
 | 
					  BOOL	fSuccess;
 | 
				
			||||||
 | 
					  DWORD	dwError;
 | 
				
			||||||
 | 
					  ComErr[0]=0;
 | 
				
			||||||
 | 
					  if (hCom==INVALID_HANDLE_VALUE) { strcpy(ComErr,"Port not open");return -1; }
 | 
				
			||||||
 | 
					  fSuccess = GetCommState(hCom, &dcb);
 | 
				
			||||||
 | 
					  if (!fSuccess) { strcpy(ComErr,"GetCommState failed");CloseHandle(hCom);return -1; }
 | 
				
			||||||
 | 
					  fSuccess = BuildCommDCB(serconfig,&dcb);
 | 
				
			||||||
 | 
					  if (!fSuccess) { strcpy(ComErr,"BuildCommDCB failed");CloseHandle(hCom);return -1; }
 | 
				
			||||||
 | 
					  dcb.fRtsControl=RTS_CONTROL_DISABLE;
 | 
				
			||||||
 | 
					  fSuccess = SetCommState(hCom, &dcb);
 | 
				
			||||||
 | 
					  if (!fSuccess) { dwError=GetLastError();strcpy(ComErr,"SetCommState failed");CloseHandle(hCom);return -1; }
 | 
				
			||||||
 | 
					  return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DWORD __fastcall TSmartCard_Reader::SRead(BYTE *buf,DWORD bytes_to_read,DWORD wait)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  DWORD bytes_read,cnt,t;
 | 
				
			||||||
 | 
					  BYTE  *buf2;
 | 
				
			||||||
 | 
					  cnt=0;
 | 
				
			||||||
 | 
					  buf2=buf;
 | 
				
			||||||
 | 
					  ReadFile(hCom,(void*)buf,bytes_to_read,&bytes_read,NULL);
 | 
				
			||||||
 | 
					  cnt+=bytes_read;
 | 
				
			||||||
 | 
					  buf2+=bytes_read;
 | 
				
			||||||
 | 
					  t=clock();
 | 
				
			||||||
 | 
					  while ((clock()<t+wait) && cnt<bytes_to_read)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    ReadFile(hCom,(void*)buf2,bytes_to_read-cnt,&bytes_read,NULL);
 | 
				
			||||||
 | 
					    cnt+=bytes_read;
 | 
				
			||||||
 | 
					    buf2+=bytes_read;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  if(inver)
 | 
				
			||||||
 | 
					    for(int i=0;i<cnt;++i) buf[i]=inverso(buf[i]);
 | 
				
			||||||
 | 
					  return cnt;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					DWORD __fastcall TSmartCard_Reader::SWrite(BYTE *buf,DWORD bytes_to_write)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  DWORD n,i,j,k,l,tt;
 | 
				
			||||||
 | 
					  BYTE buf2[256],ch;
 | 
				
			||||||
 | 
					  for(i=n=l=0;i<bytes_to_write;++i)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					//    tt=rdtsc();
 | 
				
			||||||
 | 
					    if(inver) ch=inverso(buf[i]);
 | 
				
			||||||
 | 
					    else      ch=buf[i];
 | 
				
			||||||
 | 
					    WriteFile(hCom,(void*)&ch,1,&j,NULL);
 | 
				
			||||||
 | 
					    n+=j;
 | 
				
			||||||
 | 
					    ReadFile(hCom,&buf2[l],n-l,&k,NULL);
 | 
				
			||||||
 | 
					    l+=k;
 | 
				
			||||||
 | 
					//    while(rdtsc()-tt<delay);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  if(l<n) SRead(&buf2[l],n-l,20);
 | 
				
			||||||
 | 
					  return n;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					unsigned char __fastcall TSmartCard_Reader::inverso(unsigned char ch)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  unsigned char r;
 | 
				
			||||||
 | 
					  int i;
 | 
				
			||||||
 | 
					  for(r=i=0;i<8;++i) { r<<=1;r|=(ch&1);ch>>=1; }
 | 
				
			||||||
 | 
					  return ~r;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int __fastcall TSmartCard_Reader::Send(unsigned char *out,char *buf,unsigned char *in,int m,int RL)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  int n,k;
 | 
				
			||||||
 | 
					  SWrite(in,m);
 | 
				
			||||||
 | 
					  k=SRead(out,RL,2500);
 | 
				
			||||||
 | 
					  setarr(buf,out,k);
 | 
				
			||||||
 | 
					  return k;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define min(x,y) ((x<y)?(x):(y))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Dado un caracter (con notacion hexadecimal)
 | 
				
			||||||
 | 
					// devuelve su valor en decimal
 | 
				
			||||||
 | 
					// Ej.  '0' == 0   y 'B' == 11
 | 
				
			||||||
 | 
					int __fastcall TSmartCard_Reader::getnyb(char c)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if((c<='9')&&(c>='0')) return c-'0';
 | 
				
			||||||
 | 
					  else if((c<='F')&&(c>='A')) return c-'A'+10;
 | 
				
			||||||
 | 
					  else return -1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Dado un puntero a un par de caracteres, (con notacion hex)
 | 
				
			||||||
 | 
					// devuelve el n<>mero que representa
 | 
				
			||||||
 | 
					// Ej. '3B' == 3<<4 + 11
 | 
				
			||||||
 | 
					int __fastcall TSmartCard_Reader::getbyte(char *buf)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  int v,w;
 | 
				
			||||||
 | 
					  v=getnyb(toupper(*buf++));
 | 
				
			||||||
 | 
					  w=getnyb(toupper(*buf++));
 | 
				
			||||||
 | 
					  if((v<0)||(w<0)) return -1;
 | 
				
			||||||
 | 
					  return (v<<4)+w;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Dada una cadena del tipo  "AF 32 2D E6"
 | 
				
			||||||
 | 
					//      devuelve en la cadena a los valores en decimal:
 | 
				
			||||||
 | 
					// n == num_elementos a procesar de la cadena buf...
 | 
				
			||||||
 | 
					// Ejemplo: para la cadena anterior a[0]=0xAF; a[1]=0x32; a[2]=0x2D; a[3]=0xE6
 | 
				
			||||||
 | 
					int __fastcall TSmartCard_Reader::getarr(unsigned char *a,char *buf,int n)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  int i;
 | 
				
			||||||
 | 
					  for(i=0;i<n;++i,buf+=2)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    int v;
 | 
				
			||||||
 | 
					    while(*buf==' ') ++buf;
 | 
				
			||||||
 | 
					    v=getbyte(buf);
 | 
				
			||||||
 | 
					    if(v<0) return -1;
 | 
				
			||||||
 | 
					    a[i]=v;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  return n;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Igual que antes, pero para toda la cadena 'buf'
 | 
				
			||||||
 | 
					int __fastcall TSmartCard_Reader::getvar(unsigned char *a,char *buf)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  int n;
 | 
				
			||||||
 | 
					  n=0;
 | 
				
			||||||
 | 
					  while(*buf!=0)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    int v;
 | 
				
			||||||
 | 
					    while(*buf==' ') ++buf;
 | 
				
			||||||
 | 
					    if(*buf==0) return n;
 | 
				
			||||||
 | 
					    v=getbyte(buf);buf+=2;
 | 
				
			||||||
 | 
					    if(v<0) return -1;
 | 
				
			||||||
 | 
					    a[n++]=v;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  return n;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Dado un array de valores, los convierte a hexadecimal
 | 
				
			||||||
 | 
					// a[0]=0x1D y a[1]=0x24 ==> buf = "1D 24 ";
 | 
				
			||||||
 | 
					int __fastcall TSmartCard_Reader::setarr(char *buf,unsigned char *a,int n)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  int i;
 | 
				
			||||||
 | 
					  for(i=0;i<n;++i) sprintf(&buf[3*i],"%02x ",a[i]);
 | 
				
			||||||
 | 
					  return n;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					void __fastcall TSmartCard_Reader::Salir1Click(TObject *Sender)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					 Close();        
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int  __fastcall TSmartCard_Reader::Open(const char *serconfig)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  COMMTIMEOUTS	timeouts;
 | 
				
			||||||
 | 
					  char		string[16];
 | 
				
			||||||
 | 
					  BOOL		fSuccess;
 | 
				
			||||||
 | 
					  ComErr[0]=0;
 | 
				
			||||||
 | 
					  memcpy(string,serconfig,4);
 | 
				
			||||||
 | 
					  string[4]=0x00;
 | 
				
			||||||
 | 
					  hCom = CreateFile(string,GENERIC_READ | GENERIC_WRITE,0, NULL,OPEN_EXISTING, 0,NULL);
 | 
				
			||||||
 | 
					  if (hCom == INVALID_HANDLE_VALUE) { strcpy(ComErr,"Could not create handle");return -1; }
 | 
				
			||||||
 | 
					  fSuccess = SetupComm(hCom,1024,1024);
 | 
				
			||||||
 | 
					  if (!fSuccess) { strcpy(ComErr,"SetupComm failed");CloseHandle(hCom);return -1; }
 | 
				
			||||||
 | 
					  fSuccess = GetCommTimeouts(hCom,&timeouts);
 | 
				
			||||||
 | 
					  if (!fSuccess) { strcpy(ComErr,"GetCommTimeouts failed");CloseHandle(hCom);return -1; }
 | 
				
			||||||
 | 
					  timeouts.ReadIntervalTimeout=MAXDWORD;
 | 
				
			||||||
 | 
					  fSuccess = SetCommTimeouts(hCom,&timeouts);
 | 
				
			||||||
 | 
					  if (!fSuccess) { strcpy(ComErr,"SetCommTimeouts failed");CloseHandle(hCom);return -1; }
 | 
				
			||||||
 | 
					  return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* MIS FUNCIONES AUXILIARES
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					void __fastcall TSmartCard_Reader::ATR1Click(TObject *Sender)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					 char buf[255];
 | 
				
			||||||
 | 
					            DoReset();
 | 
				
			||||||
 | 
					            lenATR=SRead(ATR,27,30);
 | 
				
			||||||
 | 
					            setarr(buf,ATR,lenATR);
 | 
				
			||||||
 | 
					            Logger( "ATR == " + AnsiString( buf ) );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void __fastcall TSmartCard_Reader::Edit3KeyPress(TObject *Sender,
 | 
				
			||||||
 | 
					      char &Key)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					 if ( Key==VK_RETURN )
 | 
				
			||||||
 | 
					        SendCommand( Edit3->Text );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void __fastcall TSmartCard_Reader::BitBtn1Click(TObject *Sender)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					   SendCommand( Edit3->Text );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					void __fastcall TSmartCard_Reader::SendCommand( AnsiString cmd )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					 char values[255],out[255];
 | 
				
			||||||
 | 
					 getvar( values, cmd.c_str() );
 | 
				
			||||||
 | 
					 Send( out, values, values, cmd.Length(), 254 );
 | 
				
			||||||
 | 
					 Memo1->Lines->Insert(0, "-----------------------------------------" );
 | 
				
			||||||
 | 
					 Memo1->Lines->Insert(0, "Respuesta: "+AnsiString(values) );
 | 
				
			||||||
 | 
					 Memo1->Lines->Insert(0, "Enviado comando: "+cmd );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										208
									
								
								Main.dfm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										208
									
								
								Main.dfm
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,208 @@
 | 
				
			|||||||
 | 
					object SmartCard_Reader: TSmartCard_Reader
 | 
				
			||||||
 | 
					  Left = 191
 | 
				
			||||||
 | 
					  Top = 116
 | 
				
			||||||
 | 
					  Width = 572
 | 
				
			||||||
 | 
					  Height = 368
 | 
				
			||||||
 | 
					  Caption = 'SmartCard_Reader'
 | 
				
			||||||
 | 
					  Color = clBtnFace
 | 
				
			||||||
 | 
					  Font.Charset = DEFAULT_CHARSET
 | 
				
			||||||
 | 
					  Font.Color = clWindowText
 | 
				
			||||||
 | 
					  Font.Height = -11
 | 
				
			||||||
 | 
					  Font.Name = 'MS Sans Serif'
 | 
				
			||||||
 | 
					  Font.Style = []
 | 
				
			||||||
 | 
					  Menu = MainMenu1
 | 
				
			||||||
 | 
					  OldCreateOrder = False
 | 
				
			||||||
 | 
					  PixelsPerInch = 96
 | 
				
			||||||
 | 
					  TextHeight = 13
 | 
				
			||||||
 | 
					  object StatusBar1: TStatusBar
 | 
				
			||||||
 | 
					    Left = 0
 | 
				
			||||||
 | 
					    Top = 303
 | 
				
			||||||
 | 
					    Width = 564
 | 
				
			||||||
 | 
					    Height = 19
 | 
				
			||||||
 | 
					    Panels = <>
 | 
				
			||||||
 | 
					    SimplePanel = False
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  object PageControl1: TPageControl
 | 
				
			||||||
 | 
					    Left = 0
 | 
				
			||||||
 | 
					    Top = 0
 | 
				
			||||||
 | 
					    Width = 564
 | 
				
			||||||
 | 
					    Height = 303
 | 
				
			||||||
 | 
					    ActivePage = cmdManual
 | 
				
			||||||
 | 
					    Align = alClient
 | 
				
			||||||
 | 
					    MultiLine = True
 | 
				
			||||||
 | 
					    TabOrder = 1
 | 
				
			||||||
 | 
					    TabPosition = tpBottom
 | 
				
			||||||
 | 
					    object TabSheet1: TTabSheet
 | 
				
			||||||
 | 
					      Caption = 'TabSheet1'
 | 
				
			||||||
 | 
					      object Label1: TLabel
 | 
				
			||||||
 | 
					        Left = 0
 | 
				
			||||||
 | 
					        Top = 16
 | 
				
			||||||
 | 
					        Width = 77
 | 
				
			||||||
 | 
					        Height = 13
 | 
				
			||||||
 | 
					        Caption = 'Direcci<63>n inicial:'
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					      object Label2: TLabel
 | 
				
			||||||
 | 
					        Left = 104
 | 
				
			||||||
 | 
					        Top = 16
 | 
				
			||||||
 | 
					        Width = 44
 | 
				
			||||||
 | 
					        Height = 13
 | 
				
			||||||
 | 
					        Caption = 'Longitud:'
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					      object Edit1: TEdit
 | 
				
			||||||
 | 
					        Left = 0
 | 
				
			||||||
 | 
					        Top = 32
 | 
				
			||||||
 | 
					        Width = 80
 | 
				
			||||||
 | 
					        Height = 21
 | 
				
			||||||
 | 
					        TabOrder = 0
 | 
				
			||||||
 | 
					        Text = '0'
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					      object Edit2: TEdit
 | 
				
			||||||
 | 
					        Left = 104
 | 
				
			||||||
 | 
					        Top = 32
 | 
				
			||||||
 | 
					        Width = 80
 | 
				
			||||||
 | 
					        Height = 21
 | 
				
			||||||
 | 
					        TabOrder = 1
 | 
				
			||||||
 | 
					        Text = '0'
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					      object UpDown1: TUpDown
 | 
				
			||||||
 | 
					        Left = 80
 | 
				
			||||||
 | 
					        Top = 32
 | 
				
			||||||
 | 
					        Width = 12
 | 
				
			||||||
 | 
					        Height = 21
 | 
				
			||||||
 | 
					        Associate = Edit1
 | 
				
			||||||
 | 
					        Min = 0
 | 
				
			||||||
 | 
					        Position = 0
 | 
				
			||||||
 | 
					        TabOrder = 2
 | 
				
			||||||
 | 
					        Wrap = False
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					      object UpDown2: TUpDown
 | 
				
			||||||
 | 
					        Left = 184
 | 
				
			||||||
 | 
					        Top = 32
 | 
				
			||||||
 | 
					        Width = 12
 | 
				
			||||||
 | 
					        Height = 21
 | 
				
			||||||
 | 
					        Associate = Edit2
 | 
				
			||||||
 | 
					        Min = 0
 | 
				
			||||||
 | 
					        Position = 0
 | 
				
			||||||
 | 
					        TabOrder = 3
 | 
				
			||||||
 | 
					        Wrap = False
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					      object Button1: TButton
 | 
				
			||||||
 | 
					        Left = 208
 | 
				
			||||||
 | 
					        Top = 32
 | 
				
			||||||
 | 
					        Width = 75
 | 
				
			||||||
 | 
					        Height = 21
 | 
				
			||||||
 | 
					        Caption = 'Leer &Eeprom'
 | 
				
			||||||
 | 
					        TabOrder = 4
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					    object TabHistorico: TTabSheet
 | 
				
			||||||
 | 
					      Caption = 'Hist<73>rico'
 | 
				
			||||||
 | 
					      ImageIndex = 1
 | 
				
			||||||
 | 
					      object mlog: TMemo
 | 
				
			||||||
 | 
					        Left = 0
 | 
				
			||||||
 | 
					        Top = 0
 | 
				
			||||||
 | 
					        Width = 556
 | 
				
			||||||
 | 
					        Height = 275
 | 
				
			||||||
 | 
					        Align = alClient
 | 
				
			||||||
 | 
					        Lines.Strings = (
 | 
				
			||||||
 | 
					          'mlog')
 | 
				
			||||||
 | 
					        ScrollBars = ssVertical
 | 
				
			||||||
 | 
					        TabOrder = 0
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					    object cmdManual: TTabSheet
 | 
				
			||||||
 | 
					      Caption = 'cmdManual'
 | 
				
			||||||
 | 
					      ImageIndex = 2
 | 
				
			||||||
 | 
					      object Label3: TLabel
 | 
				
			||||||
 | 
					        Left = 8
 | 
				
			||||||
 | 
					        Top = 16
 | 
				
			||||||
 | 
					        Width = 80
 | 
				
			||||||
 | 
					        Height = 13
 | 
				
			||||||
 | 
					        Caption = 'Enviar comando:'
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					      object Label4: TLabel
 | 
				
			||||||
 | 
					        Left = 0
 | 
				
			||||||
 | 
					        Top = 48
 | 
				
			||||||
 | 
					        Width = 142
 | 
				
			||||||
 | 
					        Height = 13
 | 
				
			||||||
 | 
					        Caption = 'Respuesta al <20>ltimo comando:'
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					      object Memo1: TMemo
 | 
				
			||||||
 | 
					        Left = 0
 | 
				
			||||||
 | 
					        Top = 64
 | 
				
			||||||
 | 
					        Width = 556
 | 
				
			||||||
 | 
					        Height = 211
 | 
				
			||||||
 | 
					        Align = alBottom
 | 
				
			||||||
 | 
					        Color = clAppWorkSpace
 | 
				
			||||||
 | 
					        ReadOnly = True
 | 
				
			||||||
 | 
					        TabOrder = 0
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					      object Edit3: TEdit
 | 
				
			||||||
 | 
					        Left = 96
 | 
				
			||||||
 | 
					        Top = 8
 | 
				
			||||||
 | 
					        Width = 433
 | 
				
			||||||
 | 
					        Height = 21
 | 
				
			||||||
 | 
					        TabOrder = 1
 | 
				
			||||||
 | 
					        OnKeyPress = Edit3KeyPress
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					      object BitBtn1: TBitBtn
 | 
				
			||||||
 | 
					        Left = 528
 | 
				
			||||||
 | 
					        Top = 5
 | 
				
			||||||
 | 
					        Width = 25
 | 
				
			||||||
 | 
					        Height = 25
 | 
				
			||||||
 | 
					        Caption = '>>'
 | 
				
			||||||
 | 
					        TabOrder = 2
 | 
				
			||||||
 | 
					        OnClick = BitBtn1Click
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  object MainMenu1: TMainMenu
 | 
				
			||||||
 | 
					    Left = 168
 | 
				
			||||||
 | 
					    Top = 120
 | 
				
			||||||
 | 
					    object Archivo1: TMenuItem
 | 
				
			||||||
 | 
					      Caption = '&Archivo'
 | 
				
			||||||
 | 
					      object Acercade1: TMenuItem
 | 
				
			||||||
 | 
					        Caption = 'Acerca &de...'
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					      object N1: TMenuItem
 | 
				
			||||||
 | 
					        Caption = '-'
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					      object Salir1: TMenuItem
 | 
				
			||||||
 | 
					        Caption = '&Salir'
 | 
				
			||||||
 | 
					        OnClick = Salir1Click
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					    object Configuracin1: TMenuItem
 | 
				
			||||||
 | 
					      Caption = '&Configuraci<63>n'
 | 
				
			||||||
 | 
					      object Puertoserie1: TMenuItem
 | 
				
			||||||
 | 
					        Caption = '&Puerto serie'
 | 
				
			||||||
 | 
					        OnClick = Puertoserie1Click
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					      object N2: TMenuItem
 | 
				
			||||||
 | 
					        Caption = '-'
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					      object Conectar1: TMenuItem
 | 
				
			||||||
 | 
					        Caption = 'Conectado'
 | 
				
			||||||
 | 
					        GroupIndex = 1
 | 
				
			||||||
 | 
					        RadioItem = True
 | 
				
			||||||
 | 
					        OnClick = Conectar1Click
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					      object Desconectar1: TMenuItem
 | 
				
			||||||
 | 
					        Caption = 'Desconectado'
 | 
				
			||||||
 | 
					        Checked = True
 | 
				
			||||||
 | 
					        GroupIndex = 1
 | 
				
			||||||
 | 
					        RadioItem = True
 | 
				
			||||||
 | 
					        OnClick = Desconectar1Click
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					      object N4: TMenuItem
 | 
				
			||||||
 | 
					        Caption = '-'
 | 
				
			||||||
 | 
					        GroupIndex = 2
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					      object ATR1: TMenuItem
 | 
				
			||||||
 | 
					        Caption = 'Reset'
 | 
				
			||||||
 | 
					        GroupIndex = 2
 | 
				
			||||||
 | 
					        OnClick = ATR1Click
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
							
								
								
									
										89
									
								
								Main.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								Main.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,89 @@
 | 
				
			|||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MainH
 | 
				
			||||||
 | 
					#define MainH
 | 
				
			||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					#include <Classes.hpp>
 | 
				
			||||||
 | 
					#include <Controls.hpp>
 | 
				
			||||||
 | 
					#include <StdCtrls.hpp>
 | 
				
			||||||
 | 
					#include <Forms.hpp>
 | 
				
			||||||
 | 
					#include <Menus.hpp>
 | 
				
			||||||
 | 
					#include <ComCtrls.hpp>
 | 
				
			||||||
 | 
					#include <Buttons.hpp>
 | 
				
			||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					class TSmartCard_Reader : public TForm
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					__published:	// IDE-managed Components
 | 
				
			||||||
 | 
					        TMainMenu *MainMenu1;
 | 
				
			||||||
 | 
					        TMenuItem *Archivo1;
 | 
				
			||||||
 | 
					        TMenuItem *Acercade1;
 | 
				
			||||||
 | 
					        TMenuItem *N1;
 | 
				
			||||||
 | 
					        TMenuItem *Salir1;
 | 
				
			||||||
 | 
					        TMenuItem *Configuracin1;
 | 
				
			||||||
 | 
					        TMenuItem *Puertoserie1;
 | 
				
			||||||
 | 
					        TMenuItem *N2;
 | 
				
			||||||
 | 
					        TMenuItem *Conectar1;
 | 
				
			||||||
 | 
					        TMenuItem *Desconectar1;
 | 
				
			||||||
 | 
					        TMenuItem *ATR1;
 | 
				
			||||||
 | 
					        TMenuItem *N4;
 | 
				
			||||||
 | 
					        TStatusBar *StatusBar1;
 | 
				
			||||||
 | 
					        TPageControl *PageControl1;
 | 
				
			||||||
 | 
					        TTabSheet *TabSheet1;
 | 
				
			||||||
 | 
					        TTabSheet *TabHistorico;
 | 
				
			||||||
 | 
					        TMemo *mlog;
 | 
				
			||||||
 | 
					        TEdit *Edit1;
 | 
				
			||||||
 | 
					        TLabel *Label1;
 | 
				
			||||||
 | 
					        TEdit *Edit2;
 | 
				
			||||||
 | 
					        TUpDown *UpDown1;
 | 
				
			||||||
 | 
					        TUpDown *UpDown2;
 | 
				
			||||||
 | 
					        TLabel *Label2;
 | 
				
			||||||
 | 
					        TButton *Button1;
 | 
				
			||||||
 | 
					        TTabSheet *cmdManual;
 | 
				
			||||||
 | 
					        TMemo *Memo1;
 | 
				
			||||||
 | 
					        TLabel *Label3;
 | 
				
			||||||
 | 
					        TLabel *Label4;
 | 
				
			||||||
 | 
					        TEdit *Edit3;
 | 
				
			||||||
 | 
					        TBitBtn *BitBtn1;
 | 
				
			||||||
 | 
					        void __fastcall Puertoserie1Click(TObject *Sender);
 | 
				
			||||||
 | 
					        void __fastcall Conectar1Click(TObject *Sender);
 | 
				
			||||||
 | 
					        void __fastcall Desconectar1Click(TObject *Sender);
 | 
				
			||||||
 | 
					        void __fastcall Salir1Click(TObject *Sender);
 | 
				
			||||||
 | 
					        void __fastcall ATR1Click(TObject *Sender);
 | 
				
			||||||
 | 
					        void __fastcall Edit3KeyPress(TObject *Sender, char &Key);
 | 
				
			||||||
 | 
					        void __fastcall BitBtn1Click(TObject *Sender);
 | 
				
			||||||
 | 
					private:	// User declarations
 | 
				
			||||||
 | 
					        void __fastcall SendCommand( AnsiString cmd ); 
 | 
				
			||||||
 | 
					public:		// User declarations
 | 
				
			||||||
 | 
					        __fastcall TSmartCard_Reader(TComponent* Owner);
 | 
				
			||||||
 | 
					        void __fastcall Logger(AnsiString log);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /* Funciones para tratar con el puerto serie... */
 | 
				
			||||||
 | 
					        HANDLE hCom;
 | 
				
			||||||
 | 
					        char ComErr[40],serconfig1[40],serconfig2[40];
 | 
				
			||||||
 | 
					        unsigned char ATR[40],ATRinv[40],lenATR;
 | 
				
			||||||
 | 
					        unsigned long delay;
 | 
				
			||||||
 | 
					        bool inver, atr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        void __fastcall CloseCOM(void);
 | 
				
			||||||
 | 
					        void __fastcall OpenCOM(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        DWORD __fastcall SRead(BYTE *buf,DWORD bytes_to_read,DWORD wait);
 | 
				
			||||||
 | 
					        DWORD __fastcall SWrite(BYTE *buf,DWORD bytes_to_write);
 | 
				
			||||||
 | 
					        int __fastcall Send(unsigned char *out,char *buf,unsigned char *in,int m,int RL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        int __fastcall DoReset(void);
 | 
				
			||||||
 | 
					        int __fastcall SetConfig(const char *serconfig);
 | 
				
			||||||
 | 
					        unsigned char __fastcall inverso(unsigned char ch);
 | 
				
			||||||
 | 
					        int __fastcall getbyte(char *buf);
 | 
				
			||||||
 | 
					        int __fastcall getnyb(char c);
 | 
				
			||||||
 | 
					        int __fastcall getarr(unsigned char *a,char *buf,int n);
 | 
				
			||||||
 | 
					        int __fastcall getvar(unsigned char *a,char *buf);
 | 
				
			||||||
 | 
					        int __fastcall setarr(char *buf,unsigned char *a,int n);
 | 
				
			||||||
 | 
					        int  __fastcall Open(const char *serconfig);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					extern PACKAGE TSmartCard_Reader *SmartCard_Reader;
 | 
				
			||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
							
								
								
									
										9
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					#SmartCard 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					*07/07/2002* 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					ToDo: wwtcf? 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
							
								
								
									
										26
									
								
								SerieCfg.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								SerieCfg.cpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,26 @@
 | 
				
			|||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <vcl.h>
 | 
				
			||||||
 | 
					#pragma hdrstop
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "SerieCfg.h"
 | 
				
			||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					#pragma package(smart_init)
 | 
				
			||||||
 | 
					#pragma resource "*.dfm"
 | 
				
			||||||
 | 
					TSerieConf *SerieConf;
 | 
				
			||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					__fastcall TSerieConf::TSerieConf(TComponent* Owner)
 | 
				
			||||||
 | 
					        : TForm(Owner)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					void __fastcall TSerieConf::cancelarClick(TObject *Sender)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					        ModalResult = mrCancel;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					void __fastcall TSerieConf::aceptarClick(TObject *Sender)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					        ModalResult = mrOk;        
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
							
								
								
									
										199
									
								
								SerieCfg.dfm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										199
									
								
								SerieCfg.dfm
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,199 @@
 | 
				
			|||||||
 | 
					object SerieConf: TSerieConf
 | 
				
			||||||
 | 
					  Left = 308
 | 
				
			||||||
 | 
					  Top = 598
 | 
				
			||||||
 | 
					  AutoScroll = False
 | 
				
			||||||
 | 
					  BorderIcons = [biSystemMenu]
 | 
				
			||||||
 | 
					  Caption = 'Configuraci<63>n del Puerto serie'
 | 
				
			||||||
 | 
					  ClientHeight = 172
 | 
				
			||||||
 | 
					  ClientWidth = 285
 | 
				
			||||||
 | 
					  Color = clBtnFace
 | 
				
			||||||
 | 
					  Font.Charset = DEFAULT_CHARSET
 | 
				
			||||||
 | 
					  Font.Color = clWindowText
 | 
				
			||||||
 | 
					  Font.Height = -11
 | 
				
			||||||
 | 
					  Font.Name = 'MS Sans Serif'
 | 
				
			||||||
 | 
					  Font.Style = []
 | 
				
			||||||
 | 
					  OldCreateOrder = False
 | 
				
			||||||
 | 
					  Position = poScreenCenter
 | 
				
			||||||
 | 
					  PixelsPerInch = 96
 | 
				
			||||||
 | 
					  TextHeight = 13
 | 
				
			||||||
 | 
					  object Label1: TLabel
 | 
				
			||||||
 | 
					    Left = 0
 | 
				
			||||||
 | 
					    Top = 16
 | 
				
			||||||
 | 
					    Width = 34
 | 
				
			||||||
 | 
					    Height = 13
 | 
				
			||||||
 | 
					    Caption = 'Puerto:'
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  object Label11: TLabel
 | 
				
			||||||
 | 
					    Left = 192
 | 
				
			||||||
 | 
					    Top = 16
 | 
				
			||||||
 | 
					    Width = 16
 | 
				
			||||||
 | 
					    Height = 13
 | 
				
			||||||
 | 
					    Caption = 'bits'
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  object Label4: TLabel
 | 
				
			||||||
 | 
					    Left = 136
 | 
				
			||||||
 | 
					    Top = 16
 | 
				
			||||||
 | 
					    Width = 37
 | 
				
			||||||
 | 
					    Height = 13
 | 
				
			||||||
 | 
					    Caption = 'baudios'
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  object Label12: TLabel
 | 
				
			||||||
 | 
					    Left = 224
 | 
				
			||||||
 | 
					    Top = 16
 | 
				
			||||||
 | 
					    Width = 20
 | 
				
			||||||
 | 
					    Height = 13
 | 
				
			||||||
 | 
					    Caption = 'pari.'
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  object Label13: TLabel
 | 
				
			||||||
 | 
					    Left = 256
 | 
				
			||||||
 | 
					    Top = 16
 | 
				
			||||||
 | 
					    Width = 20
 | 
				
			||||||
 | 
					    Height = 13
 | 
				
			||||||
 | 
					    Caption = 'stop'
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  object Label7: TLabel
 | 
				
			||||||
 | 
					    Left = 40
 | 
				
			||||||
 | 
					    Top = 40
 | 
				
			||||||
 | 
					    Width = 70
 | 
				
			||||||
 | 
					    Height = 13
 | 
				
			||||||
 | 
					    Caption = 'Antes del reset'
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  object Label8: TLabel
 | 
				
			||||||
 | 
					    Left = 40
 | 
				
			||||||
 | 
					    Top = 64
 | 
				
			||||||
 | 
					    Width = 85
 | 
				
			||||||
 | 
					    Height = 13
 | 
				
			||||||
 | 
					    Caption = 'Despu<70>s del reset'
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  object Label2: TLabel
 | 
				
			||||||
 | 
					    Left = 40
 | 
				
			||||||
 | 
					    Top = 88
 | 
				
			||||||
 | 
					    Width = 30
 | 
				
			||||||
 | 
					    Height = 13
 | 
				
			||||||
 | 
					    Caption = 'Delay:'
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  object aceptar: TBitBtn
 | 
				
			||||||
 | 
					    Left = 208
 | 
				
			||||||
 | 
					    Top = 112
 | 
				
			||||||
 | 
					    Width = 75
 | 
				
			||||||
 | 
					    Height = 25
 | 
				
			||||||
 | 
					    Caption = '&Aceptar'
 | 
				
			||||||
 | 
					    TabOrder = 0
 | 
				
			||||||
 | 
					    OnClick = aceptarClick
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  object cancelar: TBitBtn
 | 
				
			||||||
 | 
					    Left = 208
 | 
				
			||||||
 | 
					    Top = 144
 | 
				
			||||||
 | 
					    Width = 75
 | 
				
			||||||
 | 
					    Height = 25
 | 
				
			||||||
 | 
					    Caption = '&Cancelar'
 | 
				
			||||||
 | 
					    TabOrder = 1
 | 
				
			||||||
 | 
					    OnClick = cancelarClick
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  object comPort: TComboBox
 | 
				
			||||||
 | 
					    Left = 40
 | 
				
			||||||
 | 
					    Top = 8
 | 
				
			||||||
 | 
					    Width = 89
 | 
				
			||||||
 | 
					    Height = 21
 | 
				
			||||||
 | 
					    ItemHeight = 13
 | 
				
			||||||
 | 
					    TabOrder = 2
 | 
				
			||||||
 | 
					    Text = 'COM1'
 | 
				
			||||||
 | 
					    Items.Strings = (
 | 
				
			||||||
 | 
					      'COM1'
 | 
				
			||||||
 | 
					      'COM2'
 | 
				
			||||||
 | 
					      'COM3'
 | 
				
			||||||
 | 
					      'COM4')
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  object stopA: TEdit
 | 
				
			||||||
 | 
					    Left = 256
 | 
				
			||||||
 | 
					    Top = 32
 | 
				
			||||||
 | 
					    Width = 25
 | 
				
			||||||
 | 
					    Height = 21
 | 
				
			||||||
 | 
					    TabOrder = 3
 | 
				
			||||||
 | 
					    Text = '2'
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  object pariA: TEdit
 | 
				
			||||||
 | 
					    Left = 224
 | 
				
			||||||
 | 
					    Top = 32
 | 
				
			||||||
 | 
					    Width = 25
 | 
				
			||||||
 | 
					    Height = 21
 | 
				
			||||||
 | 
					    TabOrder = 4
 | 
				
			||||||
 | 
					    Text = 'O'
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  object bitsA: TEdit
 | 
				
			||||||
 | 
					    Left = 192
 | 
				
			||||||
 | 
					    Top = 32
 | 
				
			||||||
 | 
					    Width = 25
 | 
				
			||||||
 | 
					    Height = 21
 | 
				
			||||||
 | 
					    TabOrder = 5
 | 
				
			||||||
 | 
					    Text = '8'
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  object baudiosA: TEdit
 | 
				
			||||||
 | 
					    Left = 128
 | 
				
			||||||
 | 
					    Top = 32
 | 
				
			||||||
 | 
					    Width = 57
 | 
				
			||||||
 | 
					    Height = 21
 | 
				
			||||||
 | 
					    TabOrder = 6
 | 
				
			||||||
 | 
					    Text = '4800'
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  object baudiosD: TEdit
 | 
				
			||||||
 | 
					    Left = 128
 | 
				
			||||||
 | 
					    Top = 56
 | 
				
			||||||
 | 
					    Width = 57
 | 
				
			||||||
 | 
					    Height = 21
 | 
				
			||||||
 | 
					    TabOrder = 7
 | 
				
			||||||
 | 
					    Text = '57600'
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  object bitsD: TEdit
 | 
				
			||||||
 | 
					    Left = 192
 | 
				
			||||||
 | 
					    Top = 56
 | 
				
			||||||
 | 
					    Width = 25
 | 
				
			||||||
 | 
					    Height = 21
 | 
				
			||||||
 | 
					    TabOrder = 8
 | 
				
			||||||
 | 
					    Text = '8'
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  object pariD: TEdit
 | 
				
			||||||
 | 
					    Left = 224
 | 
				
			||||||
 | 
					    Top = 56
 | 
				
			||||||
 | 
					    Width = 25
 | 
				
			||||||
 | 
					    Height = 21
 | 
				
			||||||
 | 
					    TabOrder = 9
 | 
				
			||||||
 | 
					    Text = 'O'
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  object stopD: TEdit
 | 
				
			||||||
 | 
					    Left = 256
 | 
				
			||||||
 | 
					    Top = 56
 | 
				
			||||||
 | 
					    Width = 25
 | 
				
			||||||
 | 
					    Height = 21
 | 
				
			||||||
 | 
					    TabOrder = 10
 | 
				
			||||||
 | 
					    Text = '2'
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  object delayTime: TEdit
 | 
				
			||||||
 | 
					    Left = 128
 | 
				
			||||||
 | 
					    Top = 80
 | 
				
			||||||
 | 
					    Width = 153
 | 
				
			||||||
 | 
					    Height = 21
 | 
				
			||||||
 | 
					    TabOrder = 11
 | 
				
			||||||
 | 
					    Text = '5000'
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  object ConvenioInverso: TCheckBox
 | 
				
			||||||
 | 
					    Left = 40
 | 
				
			||||||
 | 
					    Top = 112
 | 
				
			||||||
 | 
					    Width = 161
 | 
				
			||||||
 | 
					    Height = 17
 | 
				
			||||||
 | 
					    Caption = 'Convenio Inverso'
 | 
				
			||||||
 | 
					    Checked = True
 | 
				
			||||||
 | 
					    State = cbChecked
 | 
				
			||||||
 | 
					    TabOrder = 12
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  object ATR: TCheckBox
 | 
				
			||||||
 | 
					    Left = 40
 | 
				
			||||||
 | 
					    Top = 128
 | 
				
			||||||
 | 
					    Width = 161
 | 
				
			||||||
 | 
					    Height = 17
 | 
				
			||||||
 | 
					    Caption = 'ATR despues de conectar'
 | 
				
			||||||
 | 
					    Checked = True
 | 
				
			||||||
 | 
					    State = cbChecked
 | 
				
			||||||
 | 
					    TabOrder = 13
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
							
								
								
									
										46
									
								
								SerieCfg.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								SerieCfg.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,46 @@
 | 
				
			|||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef SerieCfgH
 | 
				
			||||||
 | 
					#define SerieCfgH
 | 
				
			||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					#include <Classes.hpp>
 | 
				
			||||||
 | 
					#include <Controls.hpp>
 | 
				
			||||||
 | 
					#include <StdCtrls.hpp>
 | 
				
			||||||
 | 
					#include <Forms.hpp>
 | 
				
			||||||
 | 
					#include <Buttons.hpp>
 | 
				
			||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					class TSerieConf : public TForm
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					__published:	// IDE-managed Components
 | 
				
			||||||
 | 
					        TBitBtn *aceptar;
 | 
				
			||||||
 | 
					        TBitBtn *cancelar;
 | 
				
			||||||
 | 
					        TComboBox *comPort;
 | 
				
			||||||
 | 
					        TLabel *Label1;
 | 
				
			||||||
 | 
					        TLabel *Label11;
 | 
				
			||||||
 | 
					        TLabel *Label4;
 | 
				
			||||||
 | 
					        TLabel *Label12;
 | 
				
			||||||
 | 
					        TLabel *Label13;
 | 
				
			||||||
 | 
					        TEdit *stopA;
 | 
				
			||||||
 | 
					        TEdit *pariA;
 | 
				
			||||||
 | 
					        TEdit *bitsA;
 | 
				
			||||||
 | 
					        TEdit *baudiosA;
 | 
				
			||||||
 | 
					        TEdit *baudiosD;
 | 
				
			||||||
 | 
					        TEdit *bitsD;
 | 
				
			||||||
 | 
					        TEdit *pariD;
 | 
				
			||||||
 | 
					        TEdit *stopD;
 | 
				
			||||||
 | 
					        TLabel *Label7;
 | 
				
			||||||
 | 
					        TLabel *Label8;
 | 
				
			||||||
 | 
					        TLabel *Label2;
 | 
				
			||||||
 | 
					        TEdit *delayTime;
 | 
				
			||||||
 | 
					        TCheckBox *ConvenioInverso;
 | 
				
			||||||
 | 
					        TCheckBox *ATR;
 | 
				
			||||||
 | 
					        void __fastcall cancelarClick(TObject *Sender);
 | 
				
			||||||
 | 
					        void __fastcall aceptarClick(TObject *Sender);
 | 
				
			||||||
 | 
					private:	// User declarations
 | 
				
			||||||
 | 
					public:		// User declarations
 | 
				
			||||||
 | 
					        __fastcall TSerieConf(TComponent* Owner);
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					extern PACKAGE TSerieConf *SerieConf;
 | 
				
			||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								TEMP/emv.exe
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								TEMP/emv.exe
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										15
									
								
								TEMP/mondex.spt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								TEMP/mondex.spt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					00 a4 08 0c 02 00
 | 
				
			||||||
 | 
					2f 00
 | 
				
			||||||
 | 
					00 b2 01 04 00 02
 | 
				
			||||||
 | 
					00 b2 01 04 00 29
 | 
				
			||||||
 | 
					00 a4 04 0c 08 00
 | 
				
			||||||
 | 
					a0 00 00 00 02 01 99 04
 | 
				
			||||||
 | 
					80 24 00 00 00 03
 | 
				
			||||||
 | 
					80 22 00 00 00 6c
 | 
				
			||||||
 | 
					80 54 00 00 00 33
 | 
				
			||||||
 | 
					80 2a 00 00 00 1c
 | 
				
			||||||
 | 
					80 38 00 00 03 05
 | 
				
			||||||
 | 
					55 53 44
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										42
									
								
								TEMP/readme.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								TEMP/readme.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,42 @@
 | 
				
			|||||||
 | 
					PCSC Test Program
 | 
				
			||||||
 | 
					v.0.7 (c) Andrew Whitaker
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					It can run in either of threemodes.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Mode 1:
 | 
				
			||||||
 | 
					Command line parameter mondex
 | 
				
			||||||
 | 
					ie: emv mondex
 | 
				
			||||||
 | 
					Automatically does
 | 
				
			||||||
 | 
					Application Selection
 | 
				
			||||||
 | 
					Purse Register
 | 
				
			||||||
 | 
					Register
 | 
				
			||||||
 | 
					Payment Register
 | 
				
			||||||
 | 
					Read Pocket Record
 | 
				
			||||||
 | 
					Currency Enquiry
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Mode 2:
 | 
				
			||||||
 | 
					With a command line parameter of the name of a script.  I have enclosed a sample script that does the same functions as mode 1 but in a non intelligent way, eg. Register length hard coded not read from purse register.
 | 
				
			||||||
 | 
					So:  emv mondex.spt is the command line.  The file extension can be anything you like.
 | 
				
			||||||
 | 
					The structure of the file is as follows:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					00 a4 08 0c 02 00
 | 
				
			||||||
 | 
					2f 00
 | 
				
			||||||
 | 
					This is CLA INS P1 P2 LC LE
 | 
				
			||||||
 | 
					Then data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					00 b2 01 04 00 02
 | 
				
			||||||
 | 
					No LC so no data line
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					80 38 00 00 03 05
 | 
				
			||||||
 | 
					55 53 44
 | 
				
			||||||
 | 
					LC and LE so data line
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					The end just shows the end of the script file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Mode 3:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					emv test
 | 
				
			||||||
 | 
					forces the pc/sc resource manager dialog to appear and connects to the reader and then disconnects.
 | 
				
			||||||
							
								
								
									
										2
									
								
								leeme.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								leeme.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
				
			|||||||
 | 
					Inicializando el puerto: COM2: baud=9600 parity=O data=8 stop=2
 | 
				
			||||||
 | 
					ATR == 23 9b ff ff 9b fd ff f6 ff 
 | 
				
			||||||
							
								
								
									
										109
									
								
								smartcard.bpr
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										109
									
								
								smartcard.bpr
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,109 @@
 | 
				
			|||||||
 | 
					<?xml version='1.0' encoding='utf-8' ?>
 | 
				
			||||||
 | 
					<!-- C++Builder XML Project -->
 | 
				
			||||||
 | 
					<PROJECT>
 | 
				
			||||||
 | 
					  <MACROS>
 | 
				
			||||||
 | 
					    <VERSION value="BCB.05.03"/>
 | 
				
			||||||
 | 
					    <PROJECT value="smartcard.exe"/>
 | 
				
			||||||
 | 
					    <OBJFILES value="smartcard.obj Main.obj SerieCfg.obj"/>
 | 
				
			||||||
 | 
					    <RESFILES value="smartcard.res"/>
 | 
				
			||||||
 | 
					    <IDLFILES value=""/>
 | 
				
			||||||
 | 
					    <IDLGENFILES value=""/>
 | 
				
			||||||
 | 
					    <DEFFILE value=""/>
 | 
				
			||||||
 | 
					    <RESDEPEN value="$(RESFILES) Main.dfm SerieCfg.dfm"/>
 | 
				
			||||||
 | 
					    <LIBFILES value=""/>
 | 
				
			||||||
 | 
					    <LIBRARIES value="VCL50.lib"/>
 | 
				
			||||||
 | 
					    <SPARELIBS value="VCL50.lib"/>
 | 
				
			||||||
 | 
					    <PACKAGES value="VCL50.bpi VCLX50.bpi VCLDB50.bpi QRPT50.bpi VCLBDE50.bpi VCLIE50.bpi 
 | 
				
			||||||
 | 
					      INETDB50.bpi INET50.bpi NMFAST50.bpi dclocx50.bpi CabForCB.bpi 
 | 
				
			||||||
 | 
					      CoolPack.bpi JDsoft.bpi PhantomPack.bpi VCLIB50.bpi VCLMID50.bpi 
 | 
				
			||||||
 | 
					      WEBMID50.bpi VCLDBX50.bpi TEEQR50.bpi asgc5.bpi RAS_Tools.bpi 
 | 
				
			||||||
 | 
					      ZCommonCB5.bpi ZDbwareCB5.bpi ZMySqlCB5.bpi ZDb2SqlCB5.bpi ZIbSqlCB5.bpi 
 | 
				
			||||||
 | 
					      ZMsSqlCB5.bpi ZOraSqlCB5.bpi ZPgSqlCB5.bpi TEEUI50.bpi TEEDB50.bpi 
 | 
				
			||||||
 | 
					      TEE50.bpi DSS50.bpi bcbsmp50.bpi VCLADO50.bpi ibsmp50.bpi bcbie50.bpi 
 | 
				
			||||||
 | 
					      bcb2kaxserver50.bpi"/>
 | 
				
			||||||
 | 
					    <PATHCPP value=".;"/>
 | 
				
			||||||
 | 
					    <PATHPAS value=".;"/>
 | 
				
			||||||
 | 
					    <PATHRC value=".;"/>
 | 
				
			||||||
 | 
					    <PATHASM value=".;"/>
 | 
				
			||||||
 | 
					    <DEBUGLIBPATH value="$(BCB)\lib\debug"/>
 | 
				
			||||||
 | 
					    <RELEASELIBPATH value="$(BCB)\lib\release"/>
 | 
				
			||||||
 | 
					    <LINKER value="tlink32"/>
 | 
				
			||||||
 | 
					    <USERDEFINES value="_DEBUG"/>
 | 
				
			||||||
 | 
					    <SYSDEFINES value="NO_STRICT"/>
 | 
				
			||||||
 | 
					    <MAINSOURCE value="smartcard.cpp"/>
 | 
				
			||||||
 | 
					    <INCLUDEPATH value="..\ViaMosc;$(BCB)\include;$(BCB)\include\vcl"/>
 | 
				
			||||||
 | 
					    <LIBPATH value="..\ViaMosc;$(BCB)\Projects\Lib;..\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib"/>
 | 
				
			||||||
 | 
					    <WARNINGS value="-w-par"/>
 | 
				
			||||||
 | 
					  </MACROS>
 | 
				
			||||||
 | 
					  <OPTIONS>
 | 
				
			||||||
 | 
					    <IDLCFLAGS value="-I..\ViaMosc -I$(BCB)\include -I$(BCB)\include\vcl -src_suffix cpp 
 | 
				
			||||||
 | 
					      -D_DEBUG -boa"/>
 | 
				
			||||||
 | 
					    <CFLAG1 value="-Od -H=$(BCB)\lib\vcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c 
 | 
				
			||||||
 | 
					      -tW -tWM"/>
 | 
				
			||||||
 | 
					    <PFLAGS value="-$YD -$W -$O- -v -JPHNE -M"/>
 | 
				
			||||||
 | 
					    <RFLAGS value=""/>
 | 
				
			||||||
 | 
					    <AFLAGS value="/mx /w2 /zd"/>
 | 
				
			||||||
 | 
					    <LFLAGS value="-D"" -aa -Tpe -x -Gn -v"/>
 | 
				
			||||||
 | 
					  </OPTIONS>
 | 
				
			||||||
 | 
					  <LINKER>
 | 
				
			||||||
 | 
					    <ALLOBJ value="c0w32.obj sysinit.obj $(OBJFILES)"/>
 | 
				
			||||||
 | 
					    <ALLRES value="$(RESFILES)"/>
 | 
				
			||||||
 | 
					    <ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib"/>
 | 
				
			||||||
 | 
					  </LINKER>
 | 
				
			||||||
 | 
					  <IDEOPTIONS>
 | 
				
			||||||
 | 
					[Version Info]
 | 
				
			||||||
 | 
					IncludeVerInfo=0
 | 
				
			||||||
 | 
					AutoIncBuild=0
 | 
				
			||||||
 | 
					MajorVer=1
 | 
				
			||||||
 | 
					MinorVer=0
 | 
				
			||||||
 | 
					Release=0
 | 
				
			||||||
 | 
					Build=0
 | 
				
			||||||
 | 
					Debug=0
 | 
				
			||||||
 | 
					PreRelease=0
 | 
				
			||||||
 | 
					Special=0
 | 
				
			||||||
 | 
					Private=0
 | 
				
			||||||
 | 
					DLL=0
 | 
				
			||||||
 | 
					Locale=3082
 | 
				
			||||||
 | 
					CodePage=1252
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Version Info Keys]
 | 
				
			||||||
 | 
					CompanyName=
 | 
				
			||||||
 | 
					FileDescription=
 | 
				
			||||||
 | 
					FileVersion=1.0.0.0
 | 
				
			||||||
 | 
					InternalName=
 | 
				
			||||||
 | 
					LegalCopyright=
 | 
				
			||||||
 | 
					LegalTrademarks=
 | 
				
			||||||
 | 
					OriginalFilename=
 | 
				
			||||||
 | 
					ProductName=
 | 
				
			||||||
 | 
					ProductVersion=1.0.0.0
 | 
				
			||||||
 | 
					Comments=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Excluded Packages]
 | 
				
			||||||
 | 
					C:\Mis documentos\Fuentes de Programacion\C++ Builder\CAP\LM2000_vcl\LM2000_vcl.bpl=Funciones para el Manejo del LM2000
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Debugging]
 | 
				
			||||||
 | 
					DebugSourceDirs=$(BCB)\source\vcl
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Parameters]
 | 
				
			||||||
 | 
					RunParams=
 | 
				
			||||||
 | 
					HostApplication=
 | 
				
			||||||
 | 
					RemoteHost=
 | 
				
			||||||
 | 
					RemotePath=
 | 
				
			||||||
 | 
					RemoteDebug=0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Compiler]
 | 
				
			||||||
 | 
					ShowInfoMsgs=0
 | 
				
			||||||
 | 
					LinkDebugVcl=0
 | 
				
			||||||
 | 
					LinkCGLIB=0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[CORBA]
 | 
				
			||||||
 | 
					AddServerUnit=1
 | 
				
			||||||
 | 
					AddClientUnit=1
 | 
				
			||||||
 | 
					PrecompiledHeaders=1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Language]
 | 
				
			||||||
 | 
					ActiveLang=
 | 
				
			||||||
 | 
					ProjectLang=
 | 
				
			||||||
 | 
					RootDir=
 | 
				
			||||||
 | 
					  </IDEOPTIONS>
 | 
				
			||||||
 | 
					</PROJECT>
 | 
				
			||||||
							
								
								
									
										23
									
								
								smartcard.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								smartcard.cpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <vcl.h>
 | 
				
			||||||
 | 
					#pragma hdrstop
 | 
				
			||||||
 | 
					USERES("smartcard.res");
 | 
				
			||||||
 | 
					USEFORM("Main.cpp", SmartCard_Reader);
 | 
				
			||||||
 | 
					USEFORM("SerieCfg.cpp", SerieConf);
 | 
				
			||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					        try
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					                 Application->Initialize();
 | 
				
			||||||
 | 
					                 Application->CreateForm(__classid(TSmartCard_Reader), &SmartCard_Reader);
 | 
				
			||||||
 | 
					                 Application->Run();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        catch (Exception &exception)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					                 Application->ShowException(&exception);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								smartcard.exe
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								smartcard.exe
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								smartcard.rar
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								smartcard.rar
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								smartcard.res
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								smartcard.res
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
		Reference in New Issue
	
	Block a user