Could you please give me some advise on this piece of code?

G. bestenborstel at gmail.com
Mon Sep 12 10:51:45 EDT 2011


Dear all,
I am a python newbie, but I intend to program a python script that
communicates with Labview via a UDP socket.
I managed to send LabView strings, but the other way around is not
working.
The code seems to stop working while in the first while loop. I can
see the word "test" being print out.

When I start LabView UDP_sender.vi it is supposed to send a string
back to python, but sometimes it ends with an error saying the port
and the ip is already in usage. Do I have to start first LabView or
the python scrip when listening to LabView, please?

It would be great if you could have a look on my code and could maybe
see why it does nothing after "print test", please.

Thank you very much.

Kind regards,
G.



# 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=21312
print "UDP_PORT is", UDP_PORT





def openUDPSocket(UDP_IP,UDP_PORT):
    #UDP_IP="127.0.0.1"
    #UDP_PORT=5005
    print "Creating socket ..."
    sock=socket.socket( socket.AF_INET, # Internet
                        socket.SOCK_DGRAM ) # UDP
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    #sock.setblocking(0)
    #sock.bind((UDP_IP,UDP_PORT))
    #sock.listen(1)
    print "Done."
    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) )


pumpsocketUDP=openUDPSocket(UDP_IP,UDP_PORT)


# Receive messages
counter_while_loop=0
print "test"
while counter_while_loop < 3:
	data,addr = pumpsocketUDP.recvfrom(1024)
        print "test"
	if not data:
		print "Client has exited!"
		break
	else:
		print "\nReceived message '", data,"'"
        counter_while_loop=counter_while_loop+1


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


# Close socket
pumpsocketUDP.close()



More information about the Python-list mailing list