python Socket senden ascii-Befehl und Antwort erhalten
Ich versuche, die Verbindung zum ADAM-4017+ - I/O-Modul über das Netzwerk mit einem Lantronix EDS2100 Modul über socket-Kommunikation in python. Für das Leben von mir ich kann es nicht funktionieren.
EDS hat eine IP Adresse und einen port (10001), dass die adam-Einheit verbunden ist. Ich bin versucht, die Abfrage der adam für den Wert von ch 1 (ascii Befehl #000)
Jede Hilfe sehr dankbar:
import socket
edsIP = "192.168.1.135"
edsPORT = 10001
MESSAGE="#000\r"
srvsock = socket.socket( socket.AF_INET, socket.SOCK_STREAM)
srvsock.bind( ('',23000))
srvsock.listen(1)
newsock, (remhost, remport) = srvsock.accept()
srvsock.send((MESSAGE),(edsIP, EdsPORT) )
while 1:
data, addr = srvsock.recv(4096)
print ("received message:", data,addr)
srvsock.close()
Ist der workflow sein soll, dass Sie hören für eine Verbindung von der Einheit, im Gegensatz zu der Verbindung? Von dem, was ich sehe, binden Sie einen port und wartet auf verbindungen.
workflow ist wie folgt: ascii-Befehl und erhalten dann Antwort
workflow ist wie folgt: ascii-Befehl und erhalten dann Antwort
InformationsquelleAutor user1631534 | 2012-08-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich weiß nicht, etwas über dieses Gerät speziell, aber aus Ihrer Beschreibung, Sie sagten, es erwartet eine Verbindung auf port 10001. Aber was du tust in deinem code ist die Eröffnung Ihres eigenen sockel und hören für verbindungen auf port 23000, und dann wartet auf verbindungen. Wenn Sie nicht erwarten, etwas zu verbinden, dann werden Sie einfach nur warten ohne Grund.
Wenn alle benötigt Ihr Gerät ist für Sie zu verbinden und eine Nachricht senden, dann würde ich denken, dass dieser es tun würde:
Update
Ihre Kommentare schlagen vor, Sie könnten mit Python ist3. Wenn dem so ist, müssen Sie den code wie folgt:
Und wenn Sie erhalten Ihre
bytes
Antwort, wenn Sie wollen schalten Sie es in einen string:fyi, ich bin ein NOOB in python Programmierer
Welche version von python benutzt du?
Ich bin mit python 3 und APtna studio PyDev
Ja dachte. Siehe mein update. Sie müssen senden Sie ein bytes-Objekt anstelle eines Strings
InformationsquelleAutor jdi
Das einzige problem, das ich direkt sehen können, ist, dass Sie eingerückt die while-Anweisung mit einem Raum, aber das ist wohl nur von Ausschneiden und einfügen hier.
Nach einigen Tests ist Es klar, dass, wenn Sie versuchen, zu akzeptieren, auf die serversocket-es wird blockiert, so dass Sie nie senden nichts zu Ihrem Gerät.
InformationsquelleAutor Daniel Figueroa