Jump to content
View in the app

A better way to browse. Learn more.

Tinkerunity

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Geschrieben

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

Geschrieben

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

 

Geschrieben
  • Autor

Hallo Photron

Vielen Dank für deine Antwort, jetzt funktioniert alles wie gewünscht, auch die Rücktransformierung.

Liebe Grüsse

Ralph

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...

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.