Obtenir l'équilibre Suica en Python (en utilisant libpafe)

Obtenir l'équilibre Suica en Python (en utilisant libpafe)

Environnement d'exploitation

Bibliothèque

Cadre environnemental

  1. Installez libusb

    • $ sudo apt-get install libusb-dev
  2. Cloner libpafe depuis GitHub

    • $ git clone https://github.com/rfujita/libpafe.git
  3. Compilez et installez

    $ cd libpafe
    $ ./configure
    $ make
    $ sudo make install
    
  4. Contrôle de fonctionnement

    $ 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. Paramètres udev

Obtenez l'IDm de la carte IC

Lire FeliCa IDm avec Raspberry Pi + libpafe + Python + ctypes (Presque en référence à ce qui a été publié ici)

read_idm.py


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

	#IDm est en notation hexadécimale
	print("IDm:", "%016X" % idm.value)

	#De README, felica_polling()Gratuit après utilisation()utilisation
	#De plus, le free semble être automatiquement inclus dans la bibliothèque
	libpafe.free(felica)

	libpafe.pasori_close(pasori)

Obtenez l'équilibre Suica

read_balance.py


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

from __future__ import print_function
from ctypes import *

# libpafe.Défini à la ligne 77 de h
FELICA_POLLING_ANY = 0xffff

#Définition d'une classe qui remplace la structure
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)

	#Définition du tableau de type C int(Longueur 16)
	int_array16 = c_uint8 * 16

	#Données de réponse
	data = int_array16()
	#Liste des codes de service
	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("Équilibre:", data[11] * 256 + data[10], "Cercle")
			break

	libpafe.free(felica)

	libpafe.pasori_close(pasori)

référence

Recommended Posts

Obtenir l'équilibre Suica en Python (en utilisant libpafe)
Obtenez des données Youtube en Python à l'aide de l'API Youtube Data
Obtenir la date en Python
Obtenir l'URL de l'image à l'aide de l'API Flickr en Python
Obtenez des commentaires YouTube en Python
Python --bitflyer Obtenir le solde des actifs
Obtenez le mois dernier en Python
Obtenez des données LEAD à l'aide de l'API REST de Marketo en Python
Obtenir la taille du terminal en Python
Obtenir explicitement EOF en python
Obtenez des notes Evernote en Python
Traduit à l'aide de googletrans en Python
Utilisation du mode Python dans le traitement
Obtenez des synonymes japonais avec Python
Autoriser l'exécution rapide des scripts Python dans Cloud Run à l'aide du répondeur
Obtenez des données LeapMotion en Python.
Programmation GUI en Python avec Appjar
Obtenir des données de Quandl en Python
Obtenez le chemin du bureau en Python
Essayez d'utiliser LevelDB avec Python (plyvel)
Obtenez le chemin du script en Python
Utilisation de variables globales dans les fonctions python
Obtenir, publier un mémo de communication en Python
Voyons voir l'utilisation de l'entrée en python
Puissance totale en Python (en utilisant functools)
Obtenez le chemin du bureau en Python
Obtenez le nom d'hôte en Python
Reconnaissance de caractères manuscrits à l'aide de KNN en Python
Essayez d'utiliser LeapMotion avec Python
Recherche de priorité de profondeur à l'aide de la pile en Python
Démarrez avec Python avec Blender
Lors de l'utilisation d'expressions régulières en Python
Création d'interface graphique en python avec tkinter 2
J'obtiens un attribut impossible à définir lors de l'utilisation de @property en python
Obtenez des données supplémentaires vers LDAP avec python
Fonctionnement de la souris à l'aide de l'API Windows en Python
Notes utilisant cChardet et python3-chardet dans Python 3.3.1.
Obtenez des taux de change à partir des taux de change ouverts en Python
Création d'interface graphique en python à l'aide de tkinter partie 1
Pratique d'utilisation de ceci en Python (mauvais)
Hachez lentement les mots de passe en utilisant bcrypt en Python
Essayez d'utiliser l'API Kraken avec Python
Utilisation de venv dans un environnement Windows + Docker [Python]
[FX] Hit oanda-API avec Python en utilisant Docker
Recevoir des e-mails à l'aide de l'API Gmail en Java
Tweet à l'aide de l'API Twitter en Python
[Python] [Windows] Communication série en Python à l'aide de DLL
Obtenez les données de l'API Google Fit en Python
J'ai essayé d'utiliser l'optimisation bayésienne de Python
Connectez-vous à Slack à l'aide de requêtes en Python
Comment obtenir stacktrace en python
Utilisation des constantes physiques dans Python scipy.constants ~ constant e ~
Scraping de sites Web à l'aide de JavaScript en Python
Obtenez le niveau de la batterie de SwitchBot avec Python
Développement de slack bot avec python en utilisant chat.postMessage
Obtenez un jeton pour conoha avec python
Commençons avec TopCoder en Python (version 2020)
Ecrire un module python dans fortran en utilisant f2py
Dessinez une structure arborescente en Python 3 à l'aide de graphviz