【问题标题】:pyOSC simple ServerpyOSC 简单服务器
【发布时间】:2017-09-24 21:26:58
【问题描述】:

我正在开发一个简单的程序,其中 Max-msp 通过 OSC 将一些整数发送到 python。我正在为 python 使用 pyOSC 库。 现在我可以轻松地打印数字,但我无法对其进行解码并将其用作 python 中的整数(我是菜鸟)。

想法?

import OSC
import time, threading

receive_address = '127.0.0.1', 9000

def printing_handler(addr, tags, stuff, source):
    print "---"
    print "received new osc msg from %s" % OSC.getUrlStr(source)
    print "with addr : %s" % addr
    print "typetags %s" % tags
    print "data %s" % stuff
    print "---"

s = OSC.OSCServer(receive_address) 
s.addMsgHandler("/numero", printing_handler) 

st = threading.Thread( target = s.serve_forever )
st.start()

非常感谢!

【问题讨论】:

  • 无法解码什么int(stuff) 不起作用?
  • 只取数据编号并将其转换为整数以在我的程序中使用
  • 当然,int() 转换不起作用?尝试时会出现什么错误?
  • just int(stuff) is :"int() 参数必须是字符串或数字,而不是'list'"
  • int(stuff[0]):消息回调 没有返回 OSCMessage 或 None: ---

标签: python osc max-msp-jitter


【解决方案1】:

不清楚stuff 的所有类型/长度是什么,但是,例如,如果type(stuff[0]) 已经是<type 'int'>,那么您可以简单地按原样使用该值。

【讨论】:

  • 但是如果我想将 stuff[0] 分配给一个变量呢?
  • 如果你想要整数,那么是的
  • 但是如果我返回我得到的值:" 没有返回 OSCMessage 或 None:
  • 你为什么要退货?
  • 我需要那个整数才能在我的 python 程序中使用它
【解决方案2】:

stuff 是 OSC 消息的参数。您应该能够直接检索它们。假设您从 Max 发送 3 个整数,您应该能够执行以下操作:

def printing_handler(addr, tags, stuff, source):
    print "---"
    arg1 = stuff[0]
    arg2 = stuff[1]
    arg3 = stuff[2]
    print "received",arg1,arg2,arg3
    print "---"

如果有帮助,您可以尝试使用 pyOSC 示例代码:

【讨论】:

  • 谢谢,问题是如果我尝试返回 arg1,例如,我会收到错误消息:消息回调 did not return OSCMessage or None:
  • 奇怪,我刚刚用上面的 sn-p 测试了从 max 发送的 3 个数字并且它有效。您的脚本中还有其他内容吗?
  • 是的,上面的代码工作得很好,问题是我想导出 arg1 并在脚本之外使用它
  • 抱歉,目前尚不清楚您打算如何导出 arg1 并在脚本之外使用它。你能澄清一下吗?如果要在回调函数外使用 arg1,请在作用域函数外创建 arg1,但如果您不使用类(例如 self),请记住在回调内使用 global arg1
猜你喜欢
  • 2012-02-26
  • 1970-01-01
  • 2019-07-29
  • 2011-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多