我正在使用高刷新率IMU(x-IO technologies NGIMU),它以osc格式输出所有数据。制造商提供以下python脚本来提供Linux平台上的数据(我正在运行Ubuntu 16.04)
'''
NGIMU Demo python v2.7 script written by Tom Mitchell (teamxe.co.uk) 2016
Requires pyOSC https://trac.v2.nl/wiki/pyOSC
'''
import socket, OSC, threading, time
# Change this to the NGIMU IP address
send_address = '192.168.1.1', 9000
# Set the NGIMU to send to this machine's IP address
c = OSC.OSCClient()
c.connect(send_address)
msg = OSC.OSCMessage()
msg.setAddress('/wifi/send/ip')
msg.append(str(socket.gethostbyname(socket.gethostname())))
c.send(msg)
c.close()
# Set up receiver
receive_address = '192.168.1.2', 8000
s = OSC.OSCServer(receive_address)
s.addDefaultHandlers()
def sensorsHandler(add, tags, args, source):
print add + str(args)
def quaternionHandler(add, tags, args, source):
print add + str(args)
def batteryHandler(add, tags, args, source):
print add + str(args)
# Add OSC handlers
s.addMsgHandler("/sensors", sensorsHandler)
s.addMsgHandler("/quaternion", quaternionHandler)
s.addMsgHandler("/battery", batteryHandler)
# Start OSCServer
print "\nUse ctrl-C to quit."
st = threading.Thread(target = s.serve_forever)
st.start()
# Loop while threads are running
try :
while 1 :
time.sleep(10)
except KeyboardInterrupt :
print "\nClosing OSCServer."
s.close()
print "Waiting for Server-thread to finish"
st.join()
print "Done"
IMU拥有自己的网络,我连接到要接收数据的计算机。 我从脚本中引用的位置安装了pyOSC。 当我运行脚本时,没有传递数据,只有消息“使用ctrl-C退出”。 所有连接似乎都正常进行。当脚本运行时,我可以使用Ubuntu防火墙配置gui在正确的ip和端口看到udp连接。我试过禁用防火墙,但没有效果。 另外,我使用另一台计算机将udp数据包发送到该IP和端口并确认收到。 说我是一个编码新手是太慷慨了。尽管如此,我需要运行此脚本。非常感谢您提供的任何帮助。
答案 0 :(得分:0)
问题是
socket.gethostbyname(socket.gethostname())
未设置正确的IP。您应该更改为
msg.setAddress('/wifi/send/ip')
msg.append('192.168.1.2')