Python code used to receive OSC transmission and communicate the results to Arduino
""" pythonic test on Arduino Yun
"""
import codecs, time
from datetime import datetime
import OSC, threading
print "i am here"
f_out = codecs.open("/mnt/sd/arduino/www/pajton.csv", "w", encoding="utf-8")
currentTime = datetime.fromtimestamp(int(time.time())).strftime('%Y-%m-%d %H:%M:%S')
f_out.write('pisao'+str(currentTime))
# tupple with ip, port
receive_address = '0.0.0.0', 50000
# OSC Server. there are three different types of server.
s = OSC.OSCServer(receive_address) # basic
# this registers a 'default' handler (for unmatched messages),
# an /'error' handler, an '/info' handler.
# And, if the client supports it, a '/subscribe' & '/unsubscribe' handler
s.addDefaultHandlers()
def all_handler(addr, tags, stuff, source):
print "received new osc msg from %s" % OSC.getUrlStr(source)
f_out.write(OSC.getUrlStr(source)+'; ')
print "with addr : %s" % addr
f_out.write(addr+'; ')
print "typetags %s" % tags
print "data %s" % stuff
f_out.write(addr+'; ')
f_out.write(str(stuff[0])+'; ')
f_out.write(str(time.time())+'; ')
f_out.write('\n')
s.addMsgHandler("/conversation", all_handler) # adding our function
s.addMsgHandler("/data", all_handler)
s.addMsgHandler("/sms", all_handler)
s.addMsgHandler("/signal", all_handler)
# checking which handlers we have added
print "Registered Callback-functions are :"
for addr in s.getOSCAddressSpace():
print addr
# Start OSCServer
print "\nStarting OSCServer. Use ctrl-C to quit."
st = threading.Thread(target = s.serve_forever)
st.start()
try:
while 1:
time.sleep(5)
except KeyboardInterrupt:
print "\nClosing OSCServer."
s.close()
print "Waiting for Server-thread to finish"
st.join() ##!!!
print "Done"
f_out.close()