Lectura de tarejtas Sin contacto 1k MIdfare.
Posted: Mon Feb 12, 2018 2:17 am
Estimado amigos.
Vi por ahi una par de publicaciones acerca de lectores sin contacto ACR-128 y ACR1281U-C8.
Por muchos dias y pruebas he investigaciones mas aporte de otras personas trate de crear un dll para accesar esto lectrores que al final si es complicado , pero logre desarrollar 4 funciones basicas las ( funciones lector son complicadas se simplicaronal usuario final ) simples en un DLL en delphi que trabaja de maravillas con xhabour o harbour , se usan 4 funciones principales escribir leer..estado del lector. haytarjeya.. ect.
Estare haciendo unos ejemplos de escritura lectura de manera simplificada y compartirlas en el foro si Don Antonio me da permiso. Tambien se entregara el DLL con ejemplos al SeƱor Antonio si desea incluirlo en un futuro cercano a alguna version de fW. Esta version del DLL puede ser leida utilizada desde casi cualquir plataforma.
Tarjetas 1 K midafare.
Son fundamentalmente de los dispositivos de almacenamiento de memoria. Existen tarjetas de 1KB y de 4KB. La MIFARE Classic de 1KB ofrece unos 768 bytes de almacenamiento de datos, dividida en 16 sectores 4 blocks. no todos los sectores se usan y tiene su restricciones los sectores 1,7,11,15 sectores..
Llamado ... SCGrabar(Block,Datos)
Aqui block es la direccion del sector que se deseara escribir en la tarjeta la OPCION DATOS seran el numero de block de archivo INI (se crea un archivo ini para escribir los datos a grabar en la tarjeta midfare) , porque porque es ma facil lavantar los datos para dll en un .ini que estaran en decimal no hay que traducir nada a hexadecimal o viceversa todo lo hago en el DLL.
Ejemplo.
function leerSC()
Local _Vueltas:=0
LOCAL cDllName:="SCLib.DLL" ,_cuantos:=0
lOCAL Block := 5 , Fsalir1:=.T. ,fRetCode1,fRetCode2 ,Datos:=1
ACR120libHandle2 := LoadLibrary(cDllName)
do while Fsalir1
fRetCode1:=SCLeer()
IF fRetCode1==1
fRetCode2:= SCGrabar(Block,Datos)
IF fRetCode2==1
alert("EXITO")
exit
ELSE
alert("NO EXITO")
exit
ENDIF
endif
ALERT("NOHAYTARJETA"" )
_ cuantos:=_cuantos+1
if _cuantos==5
exit
endif
ENDDO
if ACR120libHandle2 <> 0
FreeLibrary(ACR120libHandle2)
ENDIF
return
Este es algo para ilustrar pero creo que se podria hacer mas simple para entender. Para los que ya entendimos la estructura de las tarjetas se nos hace falcial pero aquellos que necesitan incursionar en este tema antes deben de leer aalgun pdf de tarjetas sin conctacto y ilustrarse un poco para entender la estructura interna de las tarjetas.
Vi por ahi una par de publicaciones acerca de lectores sin contacto ACR-128 y ACR1281U-C8.
Por muchos dias y pruebas he investigaciones mas aporte de otras personas trate de crear un dll para accesar esto lectrores que al final si es complicado , pero logre desarrollar 4 funciones basicas las ( funciones lector son complicadas se simplicaronal usuario final ) simples en un DLL en delphi que trabaja de maravillas con xhabour o harbour , se usan 4 funciones principales escribir leer..estado del lector. haytarjeya.. ect.
Estare haciendo unos ejemplos de escritura lectura de manera simplificada y compartirlas en el foro si Don Antonio me da permiso. Tambien se entregara el DLL con ejemplos al SeƱor Antonio si desea incluirlo en un futuro cercano a alguna version de fW. Esta version del DLL puede ser leida utilizada desde casi cualquir plataforma.
Tarjetas 1 K midafare.
Son fundamentalmente de los dispositivos de almacenamiento de memoria. Existen tarjetas de 1KB y de 4KB. La MIFARE Classic de 1KB ofrece unos 768 bytes de almacenamiento de datos, dividida en 16 sectores 4 blocks. no todos los sectores se usan y tiene su restricciones los sectores 1,7,11,15 sectores..
Llamado ... SCGrabar(Block,Datos)
Aqui block es la direccion del sector que se deseara escribir en la tarjeta la OPCION DATOS seran el numero de block de archivo INI (se crea un archivo ini para escribir los datos a grabar en la tarjeta midfare) , porque porque es ma facil lavantar los datos para dll en un .ini que estaran en decimal no hay que traducir nada a hexadecimal o viceversa todo lo hago en el DLL.
Ejemplo.
function leerSC()
Local _Vueltas:=0
LOCAL cDllName:="SCLib.DLL" ,_cuantos:=0
lOCAL Block := 5 , Fsalir1:=.T. ,fRetCode1,fRetCode2 ,Datos:=1
ACR120libHandle2 := LoadLibrary(cDllName)
do while Fsalir1
fRetCode1:=SCLeer()
IF fRetCode1==1
fRetCode2:= SCGrabar(Block,Datos)
IF fRetCode2==1
alert("EXITO")
exit
ELSE
alert("NO EXITO")
exit
ENDIF
endif
ALERT("NOHAYTARJETA"" )
_ cuantos:=_cuantos+1
if _cuantos==5
exit
endif
ENDDO
if ACR120libHandle2 <> 0
FreeLibrary(ACR120libHandle2)
ENDIF
return
Este es algo para ilustrar pero creo que se podria hacer mas simple para entender. Para los que ya entendimos la estructura de las tarjetas se nos hace falcial pero aquellos que necesitan incursionar en este tema antes deben de leer aalgun pdf de tarjetas sin conctacto y ilustrarse un poco para entender la estructura interna de las tarjetas.