Jump to content

Recommended Posts

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

Link to post
Share on other sites

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";
}

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...