Guten Morgen, Labviewforum.
Ich versuche gerade, LabView und Python miteinander reden zu lassen via UDP und localhost als Testumgebung. Ich würde das auch an für sich so beibehalten :-)
Bei LabView gibt es ja die UDP Sender und UPD Receiver.vi zum Testen.
Mit meinem Code habe ich es schon einmal geschafft, LabView einen String zu senden, aber gleichzeitig Empfangen von Strings von LabView in Python klappt nicht.
Entweder das geht nicht oder ich mache etwas in Python falsch. Habe ich beide vi's laufen + Python, gibt es eine Fehlermeldung in LabView, daß die Adresse schon gerade benutzt wird.
Muß man Senden und Empfangen über verschiedene Ports laufen lassen?
Oder kann es sein, daß die Sender.vi einen UDP port öffnet und mein Python-code macht das aus, und es deswegen Probleme gibt?
Da ich die Example vi's aus LabView für Sender und Receiver benutze, stelle ich mal den Python-Code hier rein. Vielleicht könnte ihr ihn einmal anschauen. Könnte ihn sich vielleicht jemand bitte anschauen?
Er sollte einfach mit der Sender und Receiver.vi aus Labview laufen.
Vielen Dank fürs Anschauen.
Gruß
blue
Python-Code:
Code:
#---- cut here
# To change this template, choose Tools | Templates
# and open the template in the editor.
__author__="User"
__date__ ="$11.09.2011 19:34:03$"
if __name__ == "__main__":
print "Das ist ein Test"
import socket
import time
#Define global variables for UDP_IP and UDP_Port, needs to be changed for PETRA-3
global UDP_IP
UDP_IP="127.0.0.1"
print "UDP_IP is", UDP_IP
global UDP_PORT
UDP_PORT=21311
print "UDP_PORT is", UDP_PORT
def openUDPSocket(UDP_IP,UDP_PORT):
#UDP_IP="127.0.0.1"
#UDP_PORT=21311
sock=socket.socket( socket.AF_INET, # Internet
socket.SOCK_DGRAM ) # UDP
return sock
def fastPump(sock):
# Start pumping and return
MESSAGE="pumpfast"
# print "UDP target IP:", UDP_IP
# print "UDP target port:", UDP_PORT
# print "message:", MESSAGE
sock.sendto( MESSAGE, (UDP_IP, UDP_PORT) )
def slowPump(sock):
MESSAGE="pumpslow"
sock.sendto( MESSAGE, (UDP_IP, UDP_PORT) )
#def receiveUDPpump(sock):
pumpsocketUDP=openUDPSocket(UDP_IP,UDP_PORT)
pumpsocketUDP.bind((UDP_IP,UDP_PORT)) #bind to UDP IP
data,addr = pumpsocketUDP.recvfrom(1024)
print data
counter_while_loop=0
while counter_while_loop < 3:
fastPump(pumpsocketUDP)
time.sleep(5)
slowPump(pumpsocketUDP)
time.sleep(3)
counter_while_loop=counter_while_loop+1
print "Counter_while_loop", counter_while_loop