From 3a630dba1d44a9b3c9d9bbf04afd43e59f757b4b Mon Sep 17 00:00:00 2001 From: jdg Date: Sun, 12 Sep 2021 20:55:27 +0200 Subject: [PATCH] First commit 07/07/2002 --- Main.cpp | 341 ++++++++++++++++++++++++++++++++++++++++++++++++ Main.dfm | 208 +++++++++++++++++++++++++++++ Main.h | 89 +++++++++++++ README.md | 9 ++ SerieCfg.cpp | 26 ++++ SerieCfg.dfm | 199 ++++++++++++++++++++++++++++ SerieCfg.h | 46 +++++++ TEMP/emv.exe | Bin 0 -> 61440 bytes TEMP/mondex.spt | 15 +++ TEMP/readme.txt | 42 ++++++ leeme.txt | 2 + smartcard.bpr | 109 ++++++++++++++++ smartcard.cpp | 23 ++++ smartcard.exe | Bin 0 -> 551424 bytes smartcard.rar | Bin 0 -> 256198 bytes smartcard.res | Bin 0 -> 876 bytes 16 files changed, 1109 insertions(+) create mode 100644 Main.cpp create mode 100644 Main.dfm create mode 100644 Main.h create mode 100644 README.md create mode 100644 SerieCfg.cpp create mode 100644 SerieCfg.dfm create mode 100644 SerieCfg.h create mode 100644 TEMP/emv.exe create mode 100644 TEMP/mondex.spt create mode 100644 TEMP/readme.txt create mode 100644 leeme.txt create mode 100644 smartcard.bpr create mode 100644 smartcard.cpp create mode 100644 smartcard.exe create mode 100644 smartcard.rar create mode 100644 smartcard.res diff --git a/Main.cpp b/Main.cpp new file mode 100644 index 0000000..8bd9ee8 --- /dev/null +++ b/Main.cpp @@ -0,0 +1,341 @@ +//--------------------------------------------------------------------------- + +#include +#include +#include +#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ó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ó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ó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()>=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='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 buf = "1D 24 "; +int __fastcall TSmartCard_Reader::setarr(char *buf,unsigned char *a,int n) +{ + int i; + for(i=0;iText ); +} +//--------------------------------------------------------------------------- + +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 ); + +} +//--------------------------------------------------------------------------- + diff --git a/Main.dfm b/Main.dfm new file mode 100644 index 0000000..ca19af5 --- /dev/null +++ b/Main.dfm @@ -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ó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ó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 ú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ó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 diff --git a/Main.h b/Main.h new file mode 100644 index 0000000..b6c58a1 --- /dev/null +++ b/Main.h @@ -0,0 +1,89 @@ +//--------------------------------------------------------------------------- + +#ifndef MainH +#define MainH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +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 diff --git a/README.md b/README.md new file mode 100644 index 0000000..5ac7696 --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ +#SmartCard + + +*07/07/2002* + +ToDo: wwtcf? + + +![screenshot](/SmartCard.png "Screenshot") diff --git a/SerieCfg.cpp b/SerieCfg.cpp new file mode 100644 index 0000000..daa7db4 --- /dev/null +++ b/SerieCfg.cpp @@ -0,0 +1,26 @@ +//--------------------------------------------------------------------------- + +#include +#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; +} +//--------------------------------------------------------------------------- diff --git a/SerieCfg.dfm b/SerieCfg.dfm new file mode 100644 index 0000000..e8b8957 --- /dev/null +++ b/SerieCfg.dfm @@ -0,0 +1,199 @@ +object SerieConf: TSerieConf + Left = 308 + Top = 598 + AutoScroll = False + BorderIcons = [biSystemMenu] + Caption = 'Configuració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é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 diff --git a/SerieCfg.h b/SerieCfg.h new file mode 100644 index 0000000..f6db066 --- /dev/null +++ b/SerieCfg.h @@ -0,0 +1,46 @@ +//--------------------------------------------------------------------------- + +#ifndef SerieCfgH +#define SerieCfgH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +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 diff --git a/TEMP/emv.exe b/TEMP/emv.exe new file mode 100644 index 0000000000000000000000000000000000000000..33294cc11a03c0343a04d9fd8ff7f2ff0c718c26 GIT binary patch literal 61440 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[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= + + \ No newline at end of file diff --git a/smartcard.cpp b/smartcard.cpp new file mode 100644 index 0000000..c662aa6 --- /dev/null +++ b/smartcard.cpp @@ -0,0 +1,23 @@ +//--------------------------------------------------------------------------- + +#include +#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; +} +//--------------------------------------------------------------------------- diff --git a/smartcard.exe b/smartcard.exe new file mode 100644 index 0000000000000000000000000000000000000000..86c92435c5f21e6980bdbc7e3093f0b29460c523 GIT binary patch literal 551424 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