[PYTHON] Lesen Sie FeliCa IDm mit Himbeerpi (Pasori RC-S320 Version)

Ursprünglich dachte ich daran, nfcpy zum Lesen des IDm von FeliCa zu verwenden, aber es stellte sich heraus, dass mein Pasori RC-S320 dies nicht unterstützt, also habe ich stattdessen libpafe verwendet.

2016/10/16 Nachtrag: Wenn Sie IDm mit pasori RC-S380 lesen möchten hier

Umgebung

Schwer: Himbeerpi3 OS:raspbian Anführer: Pasori RC-S320

Vorbereitung

--Erstellen eines Verzeichnisses

$ mkdir pasori
$ cd pasori
$ 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 von libusb

$ sudo apt-get install libusb-dev

Installieren Sie libpafe

--Download und kompilieren

$ git clone https://github.com/rfujita/libpafe.git 
$ cd libpafe
$ ./configure
$ make
$ sudo make install

--Überprüfen Sie das Installationsergebnis Stellen Sie sicher, dass Sie libpafe.so.0.0.8 haben

$ 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

Funktionsprüfung

$ 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

udev Einstellungen

--60-Erstelle eine neue libpafe.rules

$ sudo nano /lib/udev/rules.d/60-libpafe.rules

--60-libpafe.rules Bearbeiteter Inhalt

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
$ ./pasori/libpafe-0.0.8/tests/pasori_test

Python-Skript zum Lesen von FeliCa IDm

Das Beispiel stammt von hier. Wenn die Zitierquelle unverändert bleibt, werden nur die letzten 4 Ziffern von IDm angezeigt, sodass wir einige Änderungen vornehmen, um 16 Ziffern anzuzeigen.

# -*- coding: utf-8 -*-

from __future__ import print_function
from ctypes import *

# libpafe.Definiert in Zeile 77 von 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() #← Geändert, um 16 Ziffern zu erhalten
    libpafe.felica_get_idm.restype = c_void_p
    libpafe.felica_get_idm(felica, byref(idm))

    #IDm ist in hexadezimaler Schreibweise
    print("%016X" % idm.value) #← Geändert, um 16 Ziffern anzuzeigen

    #Von README, felica_polling()Kostenlos nach Gebrauch()verwenden
    #Außerdem scheint free automatisch in die Bibliothek aufgenommen zu werden
    libpafe.free(felica)

    libpafe.pasori_close(pasori)

Referenz

Lesen Sie FeliCa IDm mit Raspberry Pi + libpafe + Python + ctypes

Recommended Posts

Lesen Sie FeliCa IDm mit Himbeerpi (Pasori RC-S320 Version)
Lesen Sie FeliCa IDm mit raspberrypi3 (pasori RC-S380 Version)
Lesen Sie FeliCa mit Pasori (RC-380S) auf dem Mac