Ralph Werner Posted May 27, 2021 at 03:01 PM Posted May 27, 2021 at 03:01 PM Hallo Tinkerforge-Experten. Ich arbeite schon länger mit dem Tinkerforge-System, habe aber das erste Mal mit einem RS485 Bricklet, bez. digitaler Kommunikation allgemein zu tun. Das Bricklet funktioniert, das Loop-Callback-Programm welches in der Doku aufgeführt wird, habe ich hierfür getestet. Nun sollte ich einen Sensor via rs485 auffordern, mir seine Messdaten zurückzugeben. Dies funktioniert im Brick Viewer unter der Eingabe der "rohen" Hexadezimalzahlen. Den Haxadezimalen Code im Brickviever einzugeben und abzusenden funktioniert, ich erhalte auch eine Antwort. Aber dies in PHP umzusetzen ist kniffliger. Wie muss ich die Funktion "write()" füllen, damit ich dies im korrekten Format ankommt? Ich habe es bereits Versucht indem ich alle hexadecimalzahlen zu binären Zahlen, oder auch zu einer grossen Dezimalzahl umformatiert hatte, ohne Erfolg. rs485.php Der Hexadezimale "Befehl" welcher in Brick-Viewer funktioniert ist zum Beispiel: F1 00 05 29 1E oder F1 00 08 2E 0C 02 61 26 Bei beiden kommen (wiederum hexadezimale) Antworten zurück, welche ich allerdings entschlüsseln kann. Liebe Grüsse Ralph Quote
photron Posted May 27, 2021 at 04:05 PM Posted May 27, 2021 at 04:05 PM Das RS485 Bricklet arbeitet auf Arrays von 1-Zeichen Strings. Du kannst die \x Escapesequenz oder die chr Funktion verwenden, um beliebig Bytes zu übergeben. Die Hex-Folge F1 00 05 29 1E kannst du mit \x Escapesequenz so schicken: $rs485->write(array("\xF1", "\x00", "\x05", "\x29", "\x1E")); Oder mit chr Funktion so: $rs485->write(array(chr(0xF1), chr(0x00), chr(0x05), chr(0x29), chr(0x1E))); Die Antwort im Callback kommt auch als Array von 1-Zeichen Strings. Diesen kannst du dann mit der ord Funktion so in Bytes umwandeln: foreach ($message as $char) { $byte = ord($char); echo dechex($byte) . "\n"; } Quote
Ralph Werner Posted May 31, 2021 at 11:21 AM Author Posted May 31, 2021 at 11:21 AM Hallo Photron Vielen Dank für deine Antwort, jetzt funktioniert alles wie gewünscht, auch die Rücktransformierung. Liebe Grüsse Ralph Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.