Jump to content

RS485 Signalgebung Format


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 zu diesem Kommentar
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 zu diesem Kommentar
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.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...