Holen Sie sich Suica Balance in Python (mit libpafe)

Holen Sie sich Suica Balance in Python (mit libpafe)

Betriebsumgebung

Bibliothek

Umgebungseinstellung

  1. Installieren Sie libusb

    • $ sudo apt-get install libusb-dev
  2. Klonen Sie libpafe von GitHub

    • $ git clone https://github.com/rfujita/libpafe.git
  3. Kompilieren und installieren

    $ cd libpafe
    $ ./configure
    $ make
    $ sudo make install
    
  4. Funktionsprüfung

    $ cd libpafe
    $ ./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
    
  1. udev Einstellungen

Holen Sie sich die IDm der IC-Karte

Lesen Sie FeliCa IDm mit Raspberry Pi + libpafe + Python + ctypes (Fast bezogen auf das, was hier gepostet wurde)

read_idm.py


# -*- 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()
	libpafe.felica_get_idm.restype = c_void_p
	libpafe.felica_get_idm(felica, byref(idm))

	#IDm ist in hexadezimaler Schreibweise
	print("IDm:", "%016X" % idm.value)

	#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)

Holen Sie sich Suica Balance

read_balance.py


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

from __future__ import print_function
from ctypes import *

# libpafe.Definiert in Zeile 77 von h
FELICA_POLLING_ANY = 0xffff

#Definition einer Klasse, die die Struktur ersetzt
class felica_block_info(Structure):
	_fields_ = [
		("service", c_uint16),
		("mode", c_uint8),
		("block", c_uint16)
	]

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)

	#Definition des Arrays vom Typ C int(Länge 16)
	int_array16 = c_uint8 * 16

	#Antwortdaten
	data = int_array16()
	#Liste der Service-Codes
	info = felica_block_info(c_uint16(0x090f), c_uint8(0), c_uint16(0))
	for i in range(0, 32):
		c_i = c_int(i)
		libpafe.felica_read(felica, byref(c_i), byref(info), byref(data))
		if (data[1] > 0) or (data[2] > 0):
			print("Balance:", data[11] * 256 + data[10], "Kreis")
			break

	libpafe.free(felica)

	libpafe.pasori_close(pasori)

Referenz

Recommended Posts

Holen Sie sich Suica Balance in Python (mit libpafe)
Holen Sie sich Youtube-Daten in Python mithilfe der Youtube-Daten-API
Holen Sie sich Datum in Python
Holen Sie sich die Bild-URL mithilfe der Flickr-API in Python
Holen Sie sich YouTube-Kommentare in Python
Python --bitflyer Holen Sie sich das Guthaben
Holen Sie sich letzten Monat in Python
Holen Sie sich LEAD-Daten mit der REST-API von Marketo in Python
Holen Sie sich die Terminalgröße in Python
Holen Sie sich explizit EOF in Python
Holen Sie sich Evernote-Notizen in Python
Übersetzt mit Googletrans in Python
Verwenden des Python-Modus in der Verarbeitung
Holen Sie sich japanische Synonyme mit Python
Ermöglichen Sie die schnelle Ausführung von Python-Skripten in Cloud Run mithilfe des Responders
Holen Sie sich LeapMotion-Daten in Python.
GUI-Programmierung in Python mit Appjar
Holen Sie sich den Desktop-Pfad in Python
Versuchen Sie es mit LevelDB mit Python (plyvel)
Holen Sie sich den Skriptpfad in Python
Verwendung globaler Variablen in Python-Funktionen
Holen Sie sich ein Kommunikationsmemo in Python
Mal sehen, wie man Eingaben in Python verwendet
Gesamtleistung in Python (mit Funktools)
Holen Sie sich den Desktop-Pfad in Python
Holen Sie sich den Hostnamen in Python
Handschriftliche Zeichenerkennung mit KNN in Python
Versuchen Sie es mit LeapMotion mit Python
Suche nach Tiefenpriorität mit Stack in Python
Beginnen Sie mit Python mit Blender
Bei Verwendung regulärer Ausdrücke in Python
GUI-Erstellung in Python mit tkinter 2
Bei Verwendung von @property in Python wird ein Attribut nicht festgelegt
Holen Sie sich mit Python zusätzliche Daten zu LDAP
Mausbedienung mit Windows-API in Python
Hinweise zur Verwendung von cChardet und python3-chardet in Python 3.3.1.
Erhalten Sie Wechselkurse von offenen Wechselkursen in Python
GUI-Erstellung in Python mit tkinter Teil 1
Übung, dies in Python zu verwenden (schlecht)
Hash-Passwörter langsam mit bcrypt in Python
Versuchen Sie, die Kraken-API mit Python zu verwenden
Verwenden von venv in der Windows + Docker-Umgebung [Python]
[FX] Hit oanda-API mit Python mit Docker
Erhalten Sie E-Mails mithilfe der Google Mail-API in Java
Tweet mit der Twitter-API in Python
[Python] [Windows] Serielle Kommunikation in Python über DLL
Holen Sie sich Google Fit API-Daten in Python
Ich habe versucht, die Bayes'sche Optimierung von Python zu verwenden
Melden Sie sich mit Anforderungen in Python bei Slack an
Wie bekomme ich Stacktrace in Python?
Verwenden physikalischer Konstanten in Python scipy.constants ~ Konstante e ~
Scraping von Websites mit JavaScript in Python
Holen Sie sich den Batteriestand von SwitchBot mit Python
Entwicklung eines Slack Bot mit Python mit chat.postMessage
Holen Sie sich ein Zeichen für Conoha mit Python
Beginnen wir mit TopCoder in Python (Version 2020)
Schreiben Sie mit f2py ein Python-Modul in fortran
Zeichnen Sie mit graphviz eine Baumstruktur in Python 3