Daten auslesen

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
seavers
User
Beiträge: 11
Registriert: Donnerstag 31. Juli 2014, 11:46

Moin moin, ich bin ein absoluter Pythonneuling und habe eine Frage. Ich habe auch schon versucht, eine Antwort zu finden, da ich aber nicht weiß wie sich das Problem nennt tut sich Google da sehr schwer. Ich habe meinen Rechner mit einer Steuerungsbox für verschiedene Motoren, LED und PIR über TCP/IP verbunden. Es klappt auch super ein Motor zu bewegen.

Code: Alles auswählen

import socket
sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM) #verbindung über TCP/IP zu Steuerungsbox
sock.connect(('192.168.1.125', 10000))  #Adresse/Portnummer der Verbindung
sock.send('101 ST01 0\n')   #Öffnet ein Tor
Jetzt möchte ich gerne das ein Tor geöffnet wird wenn eine PIR aktiv ist.

Code: Alles auswählen

sock.send('102 L01\n') #fragt den Status einer PIR ab (Antwort kann 0 oder 1 sein)
Wenn ich das eingebe kommt nur eine "9" in der nächsten Zeile, das ist ja aber die Länge meines Befehls.
Die Frage ist jetzt wie kann ich die Antwort sowohl für Menschen als auch Maschinen lesbar machen? Möchte die Antwort dann später in ein IF/ELSE-Schleife benutzen (Das ist jetzt aber nicht das Thema).
Für den Anfang wäre ich mit ein paar Tipps sehr zufrieden, will möglichst selbst programmieren, anders lernt man es ja doch nicht.

Gruß
Seavers
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@seavers: Du mußt die Daten mit recv auch lesen.
BlackJack

@seavers: Also erst einmal solltest Du in beiden Fällen `sendall()` statt `send()` benutzen, denn sonst ist nicht garantiert, dass tatsächlich alle Daten gesendet werden. Die 9 kommt da nämlich nur als Rückgabwert wenn tatsächlich alle 9 Bytes gesendet wurden.

Wenn von der Steuerungsbox eine Antwort kommt, dann musst Du diese Antwort halt auch empfangen. Dabei gibt es leider nicht so etwas wie `recvall()` sondern nur ein `recv()` was man so oft aufrufen muss, bis man ganz sicher die komplette Antwort beisammen hat.
seavers
User
Beiträge: 11
Registriert: Donnerstag 31. Juli 2014, 11:46

Das hat schon mal super geklappt.
Danke schön.
Werde mich jetzt mal an die weitere Arbeit machen und hoffen, dass ich besser voran komme.

Seavers
Antworten