Ich habe einen einfachen aktiven RFID Reader gekauft, der über RS232 Serial Port mit meinem Raspberry Pi 3 unter Verwendung RS232 Shield verbunden ist. Ich möchte die Tag-ID mit dem Reader lesen. Ich schrieb einen Code, der die Daten von einem seriellen Gerät lesen sollte. Wenn ich es starte, wartet es nur auf etwas (keine Fehlermeldung). Wie lese ich die Tags mit diesem Reader mit Python-Code oder Shell-Skript?Konvertieren von Hex in (RFID) Tag ID
import serial
ser = serial.Serial ("/dev/ttyAMA0")
ser.baudrate = 9600
data = ser.read(8)
print (data)
UPDATE
konnte ich den Tag lesen: ein.
ser = serial.Serial("/dev/ttyS0")
als ttyAMA0
ist Bluetooth in Raspberry Pi 3 (dies funktioniert nur auf Python 3.4, wenn ich versuche Python 2.7 die Zeichenfolge ist leer). Mein Problem ist, dass ich ein Tag habe und die ID davon ist 02160323, aber wenn ich diesen Code ausführen, ist die Ausgabe: b'\xec
, b'\xfe
, b\xf6
, b\xfc
und ähnliche (nicht sicher, was diese Werte sind). Wie erkenne ich die tatsächliche ID?
UPDATE 2
konnte ich den Text in HEX umwandeln und sie dann in numerische umzuwandeln.
import serial
ser = serial.Serial("dev/ttyS0", 9600)
data = ser.read()
hexo = data.encode('hex')
i = ord(data)
print(i)
print(hexo)
Die vollständige ID ist 8 ganze Zahlen lang, und die angegebene Ausgabe hat nicht viel mit der ID auf der Karte zu tun. Wie konvertiere ich es zur Anzeige 02160323?
UPDATE 3
Mein baundrate falsch war die ganze Zeit, sollte es 115200
sein. Jetzt erhalte ich den Wert: 4000021603237440 und als deutlich sichtbar habe ich ID drin. Jetzt muss ich den Daten schreiben geeigneten Algorithmus abrufen. Kann mir jemand dabei helfen?
Die Daten auf dem RFID-Tag sind eher BCD oder ASCII als binär und enthalten typischerweise Paritäts- oder Prüfbits oder Wort (e) (z. B. BCD plus Parität für 5-Bit-Ziffern). Es könnte auch Start-und-Stopp-Sender geben. Anstatt zu raten, sollten Sie das tatsächliche Datenformat ermitteln, das von den zu lesenden Tags verwendet wird. IOW Ich bin nicht überzeugt, dass Sie tatsächlich die richtigen Daten vom Lesegerät über die serielle Schnittstelle lesen. Nur weil du * etwas * bekommst, sind es nicht die eigentlichen Daten. – sawdust
@Sawdust Sie haben Recht, das war falsche Daten. Ich war zunächst glücklich, weil ich Kommunikation hatte und obwohl es die richtigen Daten ist, aber ich lag falsch, jetzt kann ich die ID innerhalb der empfangenen Daten sehen, es ist nur eine Frage des Schreibens eines Algorithmus, um 02160323 von dieser Nummer zu verlassen. – UZIERSKI