Au départ, je pensais utiliser nfcpy pour lire l'IDm de FeliCa, mais il s'est avéré que mon pasori RC-S320 ne le supportait pas, j'ai donc utilisé libpafe à la place.
Post-scriptum 2016/10/16: Si vous voulez lire IDm avec pasori RC-S380 ici
Dur: raspberrypi3 OS:raspbian Responsable: pasori RC-S320
--Création d'un répertoire
$ mkdir pasori
$ cd pasori
--Connectez pasori à la clé USB du raspberry pi3. --Confirmez qu'il est reconnu par la commande suivante.
$ lsusb
Bus 001 Device 004: ID 054c:01bb Sony Corp. FeliCa S320 [PaSoRi]
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
--Installation de libusb
$ sudo apt-get install libusb-dev
--Télécharger et compiler
$ git clone https://github.com/rfujita/libpafe.git
$ cd libpafe
$ ./configure
$ make
$ sudo make install
--Vérifier le résultat de l'installation Assurez-vous que vous avez libpafe.so.0.0.8
$ cd /usr/local/lib
$ ls
libpafe.a libpafe.so libpafe.so.0.0.8 python2.7 site_ruby
libpafe.la libpafe.so.0 pypy2.7 python3.4
$ cd ~/pasori/libpafe-0.0.8
$ sudo ./tests/pasori_test
PaSoRi (RC-S320)
firmware version 1.40
Echo test... success
EPROM test... success
RAM test... success
CPU test... success
Polling test... success
--60-Créer une nouvelle libpafe.rules
$ sudo nano /lib/udev/rules.d/60-libpafe.rules
--60-libpafe.rules Contenu édité
60-libpafe.rules
ACTION!="add", GOTO="pasori_rules_end"
SUBSYSTEM=="usb_device", GOTO="pasori_rules_start"
SUBSYSTEM!="usb", GOTO="pasori_rules_end"
LABEL="pasori_rules_start"
ATTRS{idVendor}=="054c", ATTRS{idProduct}=="006c", MODE="0664", GROUP="plugdev"
ATTRS{idVendor}=="054c", ATTRS{idProduct}=="01bb", MODE="0664", GROUP="plugdev"
ATTRS{idVendor}=="054c", ATTRS{idProduct}=="02e1", MODE="0664", GROUP="plugdev"
LABEL="pasori_rules_end"
$ udevadm control --reload-rules
root privileges required
$ sudo udevadm control --reload-rules
$ sudo reboot
--Confirmez qu'il peut être exécuté sans sudo après le redémarrage.
$ ./pasori/libpafe-0.0.8/tests/pasori_test
L'échantillon est tiré de ici. Si la source de la citation est laissée telle quelle, seuls les 4 derniers chiffres de l'IDm seront affichés, nous allons donc apporter quelques modifications pour afficher 16 chiffres.
# -*- coding: utf-8 -*-
from __future__ import print_function
from ctypes import *
# libpafe.Défini à la ligne 77 de h
FELICA_POLLING_ANY = 0xffff
if __name__ == '__main__':
libpafe = cdll.LoadLibrary("/usr/local/lib/libpafe.so")
libpafe.pasori_open.restype = c_void_p
pasori = libpafe.pasori_open()
libpafe.pasori_init(pasori)
libpafe.felica_polling.restype = c_void_p
felica = libpafe.felica_polling(pasori, FELICA_POLLING_ANY, 0, 0)
idm = c_ulonglong() #← Changé pour recevoir 16 chiffres
libpafe.felica_get_idm.restype = c_void_p
libpafe.felica_get_idm(felica, byref(idm))
#IDm est en notation hexadécimale
print("%016X" % idm.value) #← Modifié pour afficher 16 chiffres
#De README, felica_polling()Gratuit après utilisation()utilisation
#De plus, gratuit semble être automatiquement inclus dans la bibliothèque
libpafe.free(felica)
libpafe.pasori_close(pasori)
Lire FeliCa IDm avec Raspberry Pi + libpafe + Python + ctypes