我试图使用来自neuroPy的变量(1-13)向Supercollider发送多条OSC消息。它只对一个变量有效。我可以如何利用更多的变量。在
from NeuroPy import NeuroPy
import time
import OSC
port = 57120
sc = OSC.OSCClient()
sc.connect(('192.168.1.4', port)) #send locally to laptop
object1 = NeuroPy("/dev/rfcomm0")
zero = 0
variable1 = object1.attention
variable2 = object1.meditation
variable3 = object1.rawValue
variable4 = object1.delta
variable5 = object1.theta
variable6 = object1.lowAlpha
variable7 = object1.highAlpha
variable8 = object1.lowBeta
variable9 = object1.highBeta
variable10 = object1.lowGamma
variable11 = object1.midGamma
variable12 = object1.poorSignal
variable13 = object1.blinkStrength
time.sleep(5)
object1.start()
def sendOSC(name, val):
msg = OSC.OSCMessage()
msg.setAddress(name)
msg.append(val)
try:
sc.send(msg)
except:
pass
print msg #debug
while True:
val = variable1
if val!=zero:
time.sleep(2)
sendOSC("/att", val)
这工作很好,我得到的信息在超级准直器如预期。在
如何添加更多变量并获取更多消息?在
我想应该是setCallBack的问题。在
您不需要发送多条OSC消息,您可以发送一条包含中所有值的OSC消息。事实上,这将是一个更好的方法,因为所有更新的值将同步到达,并且需要更少的网络流量。在
您的代码当前执行的等效于
一个值就可以了。对于多个值,可以执行以下几乎相同的操作:
^{pr2}$应该没问题,你会收到一个OSC消息,里面有多个数据。你也可以把上面写为
请参阅OSCMessage类的文档,以查看有关如何构造消息的更多示例。在
相关问题 更多 >
编程相关推荐