2011-06-03 11 views
8

Nous avons acheté le SDK USB ACR122 pour le test NFC. Nous aimerions construire l'application de bureau de test pour le lecteur NFC ACR122U-A2. Nous le développons en Java sur la plate-forme Microsoft Windows 7.ACR122 USB SDK - Appels JNI vers Winscard.dll

Nous nous attendions à ce que, pour utiliser PC/SC à partir de Winscard.dll, nous devions effectuer des appels JNI. Afin de faire cette bibliothèque wrapper C/C++ pour les appels JNI doivent être préparés.

Je pense que cela devrait faire partie du SDK, car l'exemple d'application fait référence à l'encapsuleur JNI Jacspcsc.dll, mais la bibliothèque n'est pas là. Quelqu'un at-il une expérience similaire? Y a-t-il des wrappers JNI disponibles pour Winscard.dll?

Merci Sten

Répondre

5

Si vous avez installé le PC/SC pilote pour le lecteur, vous pouvez utiliser le package smardcardio java (http://download.oracle.com/javase/6/docs/jre/api/ sécurité/smartcardio/spec/javax/smartcardio/package-summary.html) pour communiquer avec le lecteur.

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

Bonjour, J'utilise déjà le paquet java smardcardio. J'ai aussi reçu la librairie pour les appels JNI, mais je préfère Java en natif ... Tout à l'heure j'ai finalisé toute l'initialisation, j'ai fait l'interface graphique et j'ai obtenu l'ATR. Maintenant, je vais programmer le tag. Savez-vous si le CommandAPDU peut être utilisé pour envoyer des commandes non-APDU, c'est-à-dire comment procéder avec des balises (par exemple Mifare Classic 1K), qui ne comprennent pas l'APDU, mais uniquement des commandes propriétaires? Thx Petr – STeN

+0

Pour envoyer des commandes spécifiques à l'étiquette, vous devez passer par certaines étapes pour établir une connexion logique à l'étiquette; Vous devez rechercher une étiquette et une fois que vous avez reçu une réponse, utilisez la commande de transmission directe pour envoyer des commandes à la balise. La documentation du lecteur ACR122U fournit des exemples sur la façon de procéder. –

+0

Vous devez enrouler les commandes de la carte sans contact (par opposition à la carte SAM de contact interne) dans les 'pseudo unités APDU'. Nous avons mis en place un fournisseur basé sur smartcardio pour cela sur [ici] (http://scuba.svn.sourceforge.net/viewvc/scuba/acr122provider/src/net/sourceforge/scuba/smartcards/ACR122TerminalFactorySpi.java?revision=161&view = balisage). – martijno

Questions connexes