Lectura de tarejtas Sin contacto 1k MIdfare.

Lectura de tarejtas Sin contacto 1k MIdfare.

Postby Busmatic_wpb » 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.
Regards.
S.I.T.U.
Sistemas Inteligentes de transporte urbano
http://www.situcr.com
oscarchacon@Situcr.com
Desarrollos BA4/B4j androide
User avatar
Busmatic_wpb
 
Posts: 162
Joined: Wed Feb 22, 2017 2:19 am

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 7 guests