Auslesen von RFID Reader

Hi Zusammen,
ich bin gerade an der Einbindung eines RFID Readers über die serielle Schnittstelle (bzw. über Telnet via Ser2Net) dran. Die Daten kommen auch im Debug an, die Weiterverarbeitung ist mir jedoch ein Rätsel. Ich habe die Doku mal angehängt, da ist sogar ein Beispiel der Kommunikation aufgechlüsselt, ich komme mit der ganzen Umwandlung zwischen Hex, Dec und Ascii sowie dieser LSB First Sache überhaupt nich klar, kann das Beispiel nichtmal in Online Convertern nachstellen. Im Prinzip geht es mir darum, aus den gesendeten Daten die Kartennummer zu extrahieren. Kann mir hier jemand auf die Sprünge helfen?

Gruß

RFID reader module.pdf (295 KB)

Hi Zusammen,
ich bekomme den String mittlerweile passend gecuttet und in eine Variable, ich kann aber den folgenden Schritt nicht nachvollziehen / nachstellen, und vor allem nicht in PHP abbilden. Kann mir da jemand auf die Sprünge helfen?

We can find card number is 171A9253A3 , country number is 483 LSB First
Translate these number to Dec format card number equal: 250000023921
Country number equal 900

Ich bin für jeden Tipp dankbar!

Gruß

Hallo,

LSB first heist, die kleinste Stelle kommt zuerst. Deshalb muss man den String mit strrev umdrehen. Dann kann man mit der hexdec() funktion den Wert ermitteln.

<?php
print hexdec(strrev( '171A9253A3'));
-- ergibt 250000023921

Hi,
danke für die Antwort! Da fehlten mir einfach ein paar entscheidende Basics. Ich habe es nun hinbekommen - sicher nicht besonders schön und bestimmt auch nicht der eleganteste Weg, aber es funktioniert! Ich hänge den Code mal an, falls der irgendwann doch mal irgendwem helfen könnte…

<?php
if ($_IPS['SENDER'] == "RegisterVariable") {
    $data = $_IPS['VALUE'];
    $data = bin2hex($data);

    $cardnr = substr($data, 0, 20);
    $countrynr = substr($data, 20, 8);

    $cardnr = hex2bin($cardnr);
    $countrynr = hex2bin($countrynr);

    $cardnr = strrev($cardnr);
    $countrynr = strrev($countrynr);

    $cardnr = hexdec($cardnr);
    $countrynr = hexdec($countrynr);

    $cardnr = str_pad($cardnr, 12, "0", STR_PAD_LEFT);

    $chipnr = $countrynr . $cardnr;

    SetValue(36632, $chipnr);
}
?>

Gruß