J'ai acheté un simple lecteur RFID actif qui est connecté via le port série RS232 à mon Raspberry Pi 3 en utilisant RS232 Shield. Je veux lire l'identifiant d'étiquette en utilisant le lecteur. J'ai écrit un morceau de code qui signifiait lire les données du périphérique série. Quand je l'exécute, j'attends juste quelque chose (pas de message d'erreur). Comment lire les tags en utilisant ce lecteur avec du code python ou un script shell?Convertir un code hexadécimal (RFID) ID
import serial
ser = serial.Serial ("/dev/ttyAMA0")
ser.baudrate = 9600
data = ser.read(8)
print (data)
MISE À JOUR
J'ai pu lire l'étiquette en utilisant:.
ser = serial.Serial("/dev/ttyS0")
comme ttyAMA0
est Bluetooth Raspberry Pi 3 (ce que works sur python 3.4 lorsque je tente python 2.7 la chaîne est vide). Mon problème est que j'ai un tag et l'ID de 02160323 mais quand je cours ce code la sortie est: b'\xec
, b'\xfe
, b\xf6
, b\xfc
et semblable (pas sûr que ces valeurs sont). Comment reconnaître l'identifiant réel?
MISE À JOUR 2
j'ai pu convertir le texte en HEX et puis le convertir en valeurs numériques. L'ID complet est long de 8 entiers, et la sortie donnée n'a pas grand chose à voir avec l'ID sur la carte. Comment puis-je le convertir pour afficher 02160323?
MISE À JOUR 3
Mon baundrate a eu tort tout ce temps, il devrait être 115200
. Maintenant, je reçois la valeur: 4000021603237440 et comme clairement visible j'ai l'ID en son sein. Maintenant, je dois récupérer l'algorithme d'écriture de données appropriées. Quelqu'un peut-il m'aider avec ça?
Les données de l'étiquette RFID sont plus susceptibles d'être BCD ou ASCII que binaire et comprennent généralement des bits ou des mots de parité ou de vérification (par exemple BCD plus parité pour les chiffres de 5 bits). Il pourrait aussi y avoir des sentinelles de départ et d'arrêt. Au lieu de deviner, vous devriez obtenir le format de données réel qui est utilisé par le tag (s) que vous essayez de lire. Je ne suis pas convaincu que vous êtes en train de lire les données correctes du lecteur via le port série. Juste parce que vous obtenez * quelque chose * ne fait pas les données réelles. – sawdust
@sawdust vous avez raison, c'était des données incorrectes. J'étais d'abord heureux parce que j'avais la communication et bien que ce soit les bonnes données mais j'avais tort, maintenant je peux voir l'ID dans les données reçues il est juste question d'écrire un algorithme pour laisser 02160323 de ce nombre. – UZIERSKI