2011-06-03 12 views
8

hemos comprado el ACR122 USB SDK para pruebas NFC. Nos gustaría construir la aplicación de escritorio de prueba para el lector de NFC ACR122U-A2. Lo estamos desarrollando en Java en la plataforma Microsoft Windows 7.ACR122 USB SDK - JNI llama a Winscard.dll

Esperábamos que para usar PC/SC desde Winscard.dll necesitamos hacer llamadas JNI. Para hacer eso, se debe preparar la biblioteca contenedora C/C++ para llamadas JNI.

Creo que esto debería ser parte del SDK, porque la aplicación de ejemplo hace referencia al envoltorio JNI Jacspcsc.dll, pero la biblioteca no está allí. ¿Alguien tiene una experiencia similar? ¿Hay contenedores JNI disponibles para Winscard.dll?

Gracias Sten

Respuesta

5

Si ha instalado el/SC controlador de PC para el lector puede utilizar el paquete smardcardio java (http://download.oracle.com/javase/6/docs/jre/api/ security/smartcardio/spec/javax/smartcardio/package-summary.html) para comunicarse con el lector.

TerminalFactory terminalFactory = TerminalFactory.getDefault(); 
CardTerminal terminal = terminalFactory.terminals().list().get(0); 
Card card = terminal.connect("T=0"); 
CardChannel channel = card.getBasicChannel(); 

// Construct a command and transmit it 
CommandAPDU command = new CommandAPDU(new byte[]{(byte)0x01, (byte)0x02, ...}) 
ResponseAPDU response = channel.transmit(command) 
+0

Hola, ya uso el paquete java smardcardio. También recibí la biblioteca para llamadas JNI, pero prefiero el modo nativo de Java ... Justo ahora finalicé toda la inicialización, hice GUI y obtuve el ATR. Ahora voy a programar la etiqueta. ¿Sabe si CommandAPDU se puede utilizar para enviar comandos que no son APDU, es decir, cómo proceder con las etiquetas (por ejemplo, Mifare Classic 1K) que no comprenden APDU, sino solo comandos propietarios? Thx Petr – STeN

+0

Para enviar comandos específicos de etiquetas a la etiqueta, debe seguir algunos pasos para establecer una conexión lógica a la etiqueta; Debe buscar una etiqueta y una vez que haya recibido una respuesta, use el comando de transmisión directa para enviar comandos a la etiqueta. La documentación del lector ACR122U proporciona ejemplos sobre cómo hacer esto. –

+0

Debe envolver los comandos para la tarjeta sin contacto (a diferencia de la tarjeta SAM de contacto interno) dentro de 'pseudo APDU'. Hemos implementado un proveedor basado en tarjeta inteligente para esto en [aquí] (http://scuba.svn.sourceforge.net/viewvc/scuba/acr122provider/src/net/sourceforge/scuba/smartcards/ACR122TerminalFactorySpi.java?revision=161&view = marcado). – martijno