Jump to content

Python example_callback


fedex

Recommended Posts

wieso bekomme ich bei diesem Python skript keine Ausgabe??

 

#!/usr/bin/env python

# -*- coding: utf-8 -*-

 

HOST = "10.208.216.149"

PORT = 4223

UID = "uiw" # Change to your UID

 

from tinkerforge.ip_connection import IPConnection

from tinkerforge.bricklet_humidity import Humidity

 

# Callback function for humidity callback (parameter has unit %RH/10)

def cb_humidity(humidity):

    print('Humidity: ' + str(humidity/10.0) + ' %RH')

 

if __name__ == "__main__":

    ipcon = IPConnection() # Create IP connection

    h = Humidity(UID, ipcon) # Create device object

 

    ipcon.connect(HOST, PORT) # Connect to brickd

    # Don't use device before ipcon is connected

 

    # Set period for humidity callback to 1s (1000ms)

    # Note: The humidity callback is only called every second

    #      if the humidity has changed since the last call!

    h.set_humidity_callback_period(1000)

 

    # Register humidity callback to function cb_humidity

    h.register_callback(h.CALLBACK_HUMIDITY, cb_humidity)

 

    ipcon.disconnect()

Link zu diesem Kommentar
Share on other sites

In den Beispielen, die den Bindings beiliegen, ist vor dem ipcon.disconnect() Aufruf ein input() Aufruf, der das Skript an der Stelle warten lässt bis eine Taste gedrückt wurde. Dadurch können die Bindings im Hintergrund eingehende Humidity Callbacks empfangen und an deine cb_humidity weiterreichen.

 

Dein Skript konfiguriert alles um Humidity Callbacks zu empfangen und beendet sich dann. Daher bekommst du keine Ausgabe.

 

Du musst also den input() Aufruf wieder einbauen, oder etwas alternatives, dass den gleichen Zweck erfüllt, das Skript vom sich beenden abzuhalten.

Link zu diesem Kommentar
Share on other sites

Du brauchst raw_input(), ansonsten funktionieren das Callback Examples nicht, wie du schon selbst gesehen hast.

 

Python buffered Ausgaben zwischen, dadurch siehst du sie nicht direkt im stdout.log während das Programm läuft. Du kannst Python auf unbuffered stellen. Dazu muss du hier Python -u als Argument übergeben:

 

http://www.tinkerforge.com/de/doc/Hardware/Bricks/RED_Brick_Program_Tab.html#python

 

Um Temperatur Daten an einen Server zu senden kannst du das Callback Example nehmen, raw_input() und ipcon.disconnect() drin lassen und in der cb_temperature() Funktion den Code einfügen, der die Daten an den Server sendet. Dann das modifizierte Beispiel auf den RED Brick laden und laufen lassen.

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