使用osc4py3从Python发送消息?

2024-10-01 04:45:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正试图弄清楚如何将OSC消息从Python发送到Max/MSP。我目前正在使用osc4py3来实现这一点,我有一个来自文档的示例代码,假设它可以工作,写在这里:

from osc4py3.as_eventloop import *
from osc4py3 import oscbuildparse

# Start the system.
osc_startup()

# Make client channels to send packets.
osc_udp_client("127.0. 0.1", 5000, "tester")

msg = oscbuildparse.OSCMessage("/test/me", ",sif", ["text", 672, 8.871])
osc_send(msg, "tester")

Max中的接收器只是监听端口5000的udprecieve对象。我成功地获得了将OSC消息发送给Max的处理,并且它非常简单地使用oscp5库工作,但是我在Python中似乎没有这样的运气

我错过了什么?此外,我不完全理解在osc4py3中构建OSC消息的结构,即使在尽我所能处理文档之后;如果有人愿意解释在类似的事情中到底发生了什么(即争论)

msg = oscbuildparse.OSCMessage("/test/me", ",sif", ["text", 672, 8.871])

那我将永远感激你

我完全愿意使用另一个OSC库,但我所要求的只是一个如何发送消息的演练(我曾尝试使用pyOSC,但这对我来说太令人困惑了)


Tags: from文档testimportclientsend消息msg
2条回答

osc4py3中可能存在不同的调度策略。文档使用带有as_eventloop的事件循环模型,其中用户代码必须定期调用osc_process(),以便osc4py3处理内部消息队列和通信

用于发送OSC消息的client exampleosc_process()调用包装在一个循环中(通常它是在一个事件处理循环中)

只需在代码开头使用完整的多线程调度策略导入名称,即可取消osc_process()调用:

from osc4py3.as_allthreads import *

第三种调度策略是as_comthreads,其中通信在后台线程中处理,但接收到的消息(在服务器端)在osc_process()调用中同步处理

(作者:osc4py3)

也许你已经解决了这个问题,但是在发布的代码中有两个问题。一种是IP地址格式(第二个“0”前面有一个空格)。然后在最后需要命令osc.process()。所以下面的方法应该有效

from osc4py3.as_eventloop import *
from osc4py3 import oscbuildparse

# Start the system.
osc_startup()

# Make client channels to send packets.
osc_udp_client("127.0.0.1", 5000, "tester")

msg = oscbuildparse.OSCMessage("/test/me", ",sif", ["text", 672, 
8.871])
osc_send(msg, "tester")
osc_process()

希望能成功

相关问题 更多 >