Python-File Frage?

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Michael Rene Maurer
    LoxBus Spammer
    • 25.08.2015
    • 221

    #1

    Python-File Frage?

    Hallo Leute,...

    Bin anscheinend zu doof, habe schon einiges versucht aber leider!
    Möchte einen Ausgang am Piface meines Raspberry`s blinken lassen! Leider bis jetzt ohne Erfolg.

    Könnte mir da jemand bitte auf die Sprünge helfen?

    Danke für die Unterstützung

    Test_sip_intercom_LED_0-1.py.zip
    LG MRM
  • Bouni
    LoxBus Spammer
    • 01.09.2015
    • 291

    #2
    Hi,

    mit was sendest du das "on" bzw. "off"?

    Kommentar


    • Michael Rene Maurer
      Michael Rene Maurer kommentierte
      Kommentar bearbeiten
      Hi, per UDP vom Miniserver zum Raspberry! Schalte auch so meine Tasterbeleuchtung ein, nur das blinken bekom ich nicht hin.....
  • Bouni
    LoxBus Spammer
    • 01.09.2015
    • 291

    #3
    Habs gefunden :-)

    Du verwendest:
    Code:
    data, addr = sock.recvfrom(1024)
    Das ist blocking und wartet bis 1024 Bytes angekommen sind bevor es weiter macht!

    Kommentar


    • Michael Rene Maurer
      Michael Rene Maurer kommentierte
      Kommentar bearbeiten
      Klär mich auf, versteh jetzt nur Bahnhof! Grins....
  • Bouni
    LoxBus Spammer
    • 01.09.2015
    • 291

    #4
    Das hier tut so wie du's Dir gedacht hast. ist quick n dirty, also ohne Garantie ;-)

    Code:
    import socket
    import time
    
    UDP_IP = "localhost"
    UDP_PORT = 5005
    
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    sock.bind((UDP_IP, UDP_PORT))
    sock.settimeout(1)
    
    dauer = 1
    
    while True:
        data = None
        try:
            data, addr = sock.recvfrom(100)
        except:
            pass
        if data == b"on":
            print("ON")
        elif data == b"off":
            print("OFF")
    Das settimeout ist hier entscheidend!

    Kommentar


    • Michael Rene Maurer
      Michael Rene Maurer kommentierte
      Kommentar bearbeiten
      Hi, danke...
      Ehm,.... data == b ???

      könntest du das bitte in mein File packen, steh gerade am Schlauch......
  • Bouni
    LoxBus Spammer
    • 01.09.2015
    • 291

    #5
    Moin,

    b"" steht für einen byte string, Wenn du in Python einen "normalen" String definierst z.b. a = "Blubb", dann ist a ein Objekt von Typ String, auf der UDP Schnittstelle kommen aber bytes an.
    Du kannst aber nicht einfach einen String mit einem byte string vergelichen, daher das führende b.

    Auf jeden fall ist Achtung geboten, der code birgt noch weitere Fallstricke :-)

    - Wenn du innerhalb der der timoutzeit von hier 1 Sekunde mehr als 100 bytes bekommst, gibts n Fehler weil der Buffer zu klein ist.
    - Wenn du z.B. "on" sendest, das o ankommt kurz bevor der timeout abläuft, das n aber erst in der nächsten Runde, dann passiert einfach nichts

    Wie du siehst ist das ganze mit vorsicht zu geniessen ;-)

    Kommentar

    Lädt...