linux - 无法使用 IMU 制造商的 python2.7 示例脚本传递 OSC 数据

标签 linux multithreading python-2.7 sockets osc

我正在使用高刷新率 IMU(x-IO 技术 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 连接。我试过禁用防火墙,但没有效果。 另外,我使用另一台计算机向该 ip 和端口发送 udp 数据包并确认收到。 说我是一个编码新手也太慷慨了。尽管如此,我还是需要运行这个脚本。非常感谢您提供的任何帮助。

最佳答案

问题是

socket.gethostbyname(socket.gethostname())

没有设置正确的 IP。你应该改成

msg.setAddress('/wifi/send/ip')
msg.append('192.168.1.2')

关于linux - 无法使用 IMU 制造商的 python2.7 示例脚本传递 OSC 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40796936/

相关文章:

linux - 如何为 Net::IRC 机器人设置互联网连接检测器?

c - pthread 编程中的段错误

python - 线程 :must be a sequence, 中的异常不是实例

csv - 使用python基于两个单词的词频统计

c - 如何获取子进程的完整返回值?

regex - 基于空行的新文本文件

从 C 源代码调用汇编例程

multithreading - Perl 中的线程定时循环

python - 将表情符号添加到 AFINN 库以进行情感分析

python - tryton中这个函数有什么用?