Access 2003, Speicherbereich mit VBA auslesen
Kartenlesegerät von Cherry, eine DLL schreibt in den RAM, wie finde ich die Adresse bzw. den von der DLL beschriebenen Speicherbereich zum auslesen ?
Ein VBA-Modul ruft die Funktion CT_Data auf: rc = CT_DATA(ctn, dad, sad, lenc, command(0), lenr, response(0))
Ich verstehe das so, dass nach erfolgreichem Aufruf von CT_Data, welches die DLL ctpcsc32kv.dll nutzt, die von CT_Data gelesenen Daten (hier von einer Chipkarte) in den RAM geschrieben werden. Wenn dem so ist, wie kann ich feststellen, wohin die Daten geschrieben wurden um diese zu lesen ? Oder verstehe ich die Arbeitsweise völlig falsch ?
Dank an jeden der helfen kann, wie auch immer.
Herzliche Grüße
PCFJKG
Deklariert wurden
a) in einem Public-Modul:
Public Declare Function CT_DATA Lib "ctpcsc32kv.dll" Alias "CT_data" _
(ByVal ctn As Integer, ByRef dad As Integer, _
ByRef sad As Integer, ByVal lenc As Integer, _
ByRef command As Byte, ByRef lenr As Integer, _
ByRef response As Byte) As Byte
b) in dem aufrufenden Modul:
Dim rc As Byte
Dim ctn As Integer
Dim dad As Integer
Dim sad As Integer
Dim lenc As Integer
Dim command(5) As Byte
Dim lenr As Integer
Dim response(100) As Byte
ctn = STD_CTN ' Use standard CTN
dad = &H1 ' Destination Adresse 01 = CT, 0 = ICC
sad = &H2 ' Source Address 02 = HOST, 05 = REMOTE_HOST
lenr = 100 ' Size of Receive Buffer
command(0) = &H20 ' CLA
command(1) = &H11 ' INS B0 = Read Binary
command(2) = &H1 ' P1 Select by FID
command(3) = &H1 ' P2 has to be 00
command(4) = &H0 ' Length of Data to be read (100 Bytes)
' Put 00 here if you want to read all data availiable
lenc = 5 ' Length of command
jetzt wie oben bereits gezeigt:
rc = CT_DATA(ctn, dad, sad, lenc, command(0), lenr, response(0))
Ein VBA-Modul ruft die Funktion CT_Data auf: rc = CT_DATA(ctn, dad, sad, lenc, command(0), lenr, response(0))
Ich verstehe das so, dass nach erfolgreichem Aufruf von CT_Data, welches die DLL ctpcsc32kv.dll nutzt, die von CT_Data gelesenen Daten (hier von einer Chipkarte) in den RAM geschrieben werden. Wenn dem so ist, wie kann ich feststellen, wohin die Daten geschrieben wurden um diese zu lesen ? Oder verstehe ich die Arbeitsweise völlig falsch ?
Dank an jeden der helfen kann, wie auch immer.
Herzliche Grüße
PCFJKG
Deklariert wurden
a) in einem Public-Modul:
Public Declare Function CT_DATA Lib "ctpcsc32kv.dll" Alias "CT_data" _
(ByVal ctn As Integer, ByRef dad As Integer, _
ByRef sad As Integer, ByVal lenc As Integer, _
ByRef command As Byte, ByRef lenr As Integer, _
ByRef response As Byte) As Byte
b) in dem aufrufenden Modul:
Dim rc As Byte
Dim ctn As Integer
Dim dad As Integer
Dim sad As Integer
Dim lenc As Integer
Dim command(5) As Byte
Dim lenr As Integer
Dim response(100) As Byte
ctn = STD_CTN ' Use standard CTN
dad = &H1 ' Destination Adresse 01 = CT, 0 = ICC
sad = &H2 ' Source Address 02 = HOST, 05 = REMOTE_HOST
lenr = 100 ' Size of Receive Buffer
command(0) = &H20 ' CLA
command(1) = &H11 ' INS B0 = Read Binary
command(2) = &H1 ' P1 Select by FID
command(3) = &H1 ' P2 has to be 00
command(4) = &H0 ' Length of Data to be read (100 Bytes)
' Put 00 here if you want to read all data availiable
lenc = 5 ' Length of command
jetzt wie oben bereits gezeigt:
rc = CT_DATA(ctn, dad, sad, lenc, command(0), lenr, response(0))
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 138800
Url: https://administrator.de/contentid/138800
Ausgedruckt am: 24.11.2024 um 04:11 Uhr
2 Kommentare
Neuester Kommentar
Moin,
du musst kein RAM direkt auslesen - Dein Ergebins steht m.E. nach Aufruf von
in der Variable response. (zumindest legt das der Name nahe )
Response wird mit ByRef übergeben. D.h. Funktion kann die Variable ändern (im Gegensatz zu ByVal wo nur der Wert übergeben wird).
lg
Slainte
du musst kein RAM direkt auslesen - Dein Ergebins steht m.E. nach Aufruf von
rc = CT_DATA(ctn, dad, sad, lenc, command(0), lenr, response(0))
in der Variable response. (zumindest legt das der Name nahe )
Response wird mit ByRef übergeben. D.h. Funktion kann die Variable ändern (im Gegensatz zu ByVal wo nur der Wert übergeben wird).
lg
Slainte