1

Konu: SCARD LARA VFP DE OKUMA YAZMA

Arkadaşlar selam yeni bir projeye başlıyorum ve VFP den SCARD lara aşağıdaki verileri yazıp okumak istiyorum kart okuyucumun markası omnikey yazmak istediğim veriler ise;

1) Karta ait bir kimlik bilgisi (örn:00001, 00002)
2) kazanılan puan (Örn: 100 puan)
3) puanın kazanıldığı tarih (örn:01/02/2009)
4) puan kodu (örn:01)
5) puanın harcama tarihi (örn:01/02/2009)
6) puanın harcama miktarı (Örn: 100 puan)
7) puanın hracama kodu (örn:01)

şeklinde olacak bu verileri karta VFP den nasıl yazıp okuyabilirim
yardımlarınıziçin peşinen teşekkürler.

2

Re: SCARD LARA VFP DE OKUMA YAZMA

Kaynak :
http://www.news2news.com/vfp/?example=539

Visual Fox Pro
DEFINE CLASS SmartCards As Session

#DEFINE SCARD_SCOPE_USER 0
#DEFINE SCARD_SCOPE_SYSTEM 2
#DEFINE SCARD_S_SUCCESS 0
#DEFINE SCARD_E_NO_SERVICE 0x8010001D
 
    hContext=0
    ReaderGroups=NULL
    Readers=NULL
 
PROCEDURE Init
    THIS.declare
    IF NOT THIS.EstablishContext()
        = MESSAGEBOX("SCardEstablishContext " +;
            "call failed.", 48, "Class Initialization Error")
        RETURN .F.
    ENDIF
 
    THIS.ReaderGroups = CREATEOBJECT("Collection")
    THIS.Readers = CREATEOBJECT("Collection")
 
    THIS.GetReaderGroups
    THIS.GetReaders
 
PROCEDURE Destroy
    THIS.ReleaseContext
 
PROTECTED PROCEDURE EstablishContext
    THIS.ReleaseContext
 
    LOCAL nResult, hContext
    STORE 0 TO nResult, hContext
    nResult = SCardEstablishContext(SCARD_SCOPE_USER,;
        0, 0, @hContext)
 
    THIS.hContext = m.hContext
RETURN (nResult=0)
 
PROTECTED PROCEDURE ReleaseContext
    IF THIS.hContext <> 0
        = SCardReleaseContext(THIS.hContext)
        THIS.hContext=0
    ENDIF
 
PROCEDURE GetReaderGroups
    DO WHILE THIS.ReaderGroups.Count > 0
        THIS.ReaderGroups.Remove(1)
    ENDDO
 
    LOCAL cBuffer, nBufsize, nResult
    nBufsize=1024
    cBuffer=REPLICATE(CHR(0), nBufsize)
 
    nResult = SCardListReaderGroups(THIS.hContext,;
        @cBuffer, @nBufsize)
 
    IF nResult <> SCARD_S_SUCCESS
        RETURN .F.
    ENDIF
 
    LOCAL nItemCount, nItemIndex, cItem
    nItemCount = ALINES(arrSCardItems, cBuffer, CHR(0))
 
    FOR nItemIndex=1 TO nItemCount
        cItem = STRTRAN(arrSCardItems[nItemIndex], CHR(0), "")
        IF LEN(m.cItem) > 0
            THIS.ReaderGroups.Add(m.cItem)
        ENDIF
    NEXT
 
PROCEDURE GetReaders()
    DO WHILE THIS.Readers.Count > 0
        THIS.Readers.Remove(1)
    ENDDO
 
    LOCAL cBuffer, nBufsize, nResult
    nBufsize=1024
    cBuffer=REPLICATE(CHR(0), nBufsize)
 
    nResult = SCardListReaders(THIS.hContext,;
        NULL, @cBuffer, @nBufsize)
 
    IF nResult <> SCARD_S_SUCCESS
        RETURN .F.
    ENDIF
 
    LOCAL nItemCount, nItemIndex, cItem
    nItemCount = ALINES(arrSCardItems, cBuffer, CHR(0))
 
    FOR nItemIndex=1 TO nItemCount
        cItem = STRTRAN(arrSCardItems[nItemIndex], CHR(0), "")
        IF LEN(m.cItem) > 0
            THIS.Readers.Add(m.cItem)
        ENDIF
    NEXT
 
PROTECTED PROCEDURE declare
    DECLARE LONG SCardEstablishContext IN Winscard;
        INTEGER dwScope, INTEGER pvReserved1,;
        INTEGER pvReserved2, INTEGER @phContext
 
    DECLARE LONG SCardReleaseContext IN Winscard;
        INTEGER hContext
 
    DECLARE LONG SCardListReaderGroups IN Winscard;
        LONG hContext, STRING @mszGroups,;
        LONG @pcchGroups
 
    DECLARE LONG SCardListReaders IN Winscard;
        INTEGER hContext, STRING mszGroups,;
        STRING @mszReaders, LONG @pcchReaders
 
    DECLARE LONG SCardListCards IN Winscard;
        INTEGER hContext, INTEGER pbAtr,;
        INTEGER rgguidInterfaces, LONG cguidInterfaceCount,;
        STRING @mszCards, LONG @pcchCards
 
    DECLARE LONG SCardListInterfaces IN Winscard;
        INTEGER hContext, STRING szCard,;
        STRING @pguidInterfaces, LONG @pcguidInterfaces
 
    DECLARE LONG SCardGetProviderId IN Winscard;
        INTEGER hContext, STRING szCard,;
        STRING @pguidProviderId
 
    DECLARE INTEGER StringFromGUID2 IN ole32;
        STRING rguid, STRING @lpsz, INTEGER cchMax
 
ENDDEFINE
Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü