Seite 1 von 1

UDP-sockets kein Empfang

Verfasst: Donnerstag 6. Februar 2014, 09:59
von MLude
Hallo zusammen,
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()

Re: UDP-sockets kein Empfang

Verfasst: Donnerstag 6. Februar 2014, 10:07
von BlackJack
@MLude: So auf Anhieb stellt sich mir die Frage ob die Gegenseite es mag das Du über Telnet alles doppelt schickst?

Re: UDP-sockets kein Empfang

Verfasst: Donnerstag 6. Februar 2014, 10:31
von MLude
Stimmt, das nehm ich natürlich wieder raus. Aber das kann ja nicht der Fehler sein, warum auf dem socket keine Daten ankommen, oder?

Re: UDP-sockets kein Empfang

Verfasst: Donnerstag 6. Februar 2014, 11:06
von BlackJack
@MLude: Man könnte die UDP-Socket mal allgemein an alle Interfaces binden, also die IP als leere Zeichenkette übergeben. Und dann stelle ich mir gerade die Frage wo Du dem LV sagst an welche IP die UDP-Pakete geschickt werden sollen‽

Das ``tn.reset()`` in Zeile 37 führt aber keinen Reset aus der auch das Datastreaming wieder abschaltet, oder?

Re: UDP-sockets kein Empfang

Verfasst: Donnerstag 6. Februar 2014, 15:07
von MLude
Hallo BlackJack, das mit dem an alle Interfaces binden habe ich auch schon probiert, leider ohne Erfolg. Die IP, an die die UDP-Pakete geschickt werden sollen, wird im LV eingegeben und ist die IP meines Rechners.
Nein, reset() nullt mir nur den angeschlossenen Sensor.
Ich bin mittlerweile ratlos :K