ich will Daten aus einem Ladungsverstärker (LV) per UDP-socket auslesen. Mit Telnet kann ich das Daten-Streaming aktivieren, allerdings kann ich im Anschluss keine Daten auf dem socket empfangen (timeout). Wenn ich allerdings Daten über den socket sende kann ich diese empfangen.
Dass der LV keine Daten streamt kann ich ausschließen, da mit einem vom Hersteller mitgelieferten Tool das streamen (mit den exakt gleichen Einstellungen) möglich ist.
Hat jemand eine Idee, woran das liegen könnte?
Die Netzwerkadressen sind die folgenden:
IP des Rechners (Win64): 169.254.114.10
UDP-Port: 12345
Standardgateway:momentan 169.254.114.1 (aber auch schon andere probiert, die nicht mit dem LV übereinstimmen)
IP des LV: 169.254.114.1
Port Telnet: 23
Subnet: 255.255.255.0
Code: Alles auswählen
Hier mein Code:
import sys
import telnetlib
import socket
class UDPTelnet(object):
def __init__(self, host, port):
self.tel = telnetlib.Telnet(HOST, port)
self.lese_daten()
def close(self):
self.tel.close()
def lese_daten(self):
return self.tel.read_until(".\r\n", 0.1)
def kommando(self, kom):
self.tel.write("%s\r\n" % kom)
return self.lese_daten()
def reset(self):
self.kommando("RESET=0,1")
print self.kommando("RESET=0,1")
self.kommando("RESET=1,1")
print self.kommando("RESET=1,1")
HOST = "169.254.114.1"
port = "23"
tn = UDPTelnet(HOST, port)
#tn.lese_daten()
tn.kommando("DATA_STREAM_ENABLED=1")
print tn.kommando("DATA_STREAM_ENABLED=1")
tn.reset()
## UDP
UDP_IP = '169.254.114.10'
UDP_PORT = 12345
sock = socket.socket(socket.AF_INET, # Internet IPv4
socket.SOCK_DGRAM) # UDP-Protokoll
sock.bind((UDP_IP, UDP_PORT))
sock.settimeout(1)
while True:
data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes
print "received message:", data
#Verbindungen schließen
sock.close()
###DATA STREAMING BEENDEN
tn.kommando("DATA_STREAM_ENABLED=0")
print tn.kommando("DATA_STREAM_ENABLED=0")
tn.close()