我正在使用OSC服务器接收数据,数据如下所示:
b'Muse-C46F/elements/alpha_absolute\x00\x00\x00,ffff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
b'Muse-C46F/elements/alpha_relative\x00\x00\x00,ffff\x00\x00\x00\x7f\xc0\x00\x00\x7f\xc0\x00\x00\x7f\xc0\x00\x00\x7f\xc0\x00\x00'
b'Muse-C46F/elements/alpha_session_score\x00\x00,ffff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
b'Muse-C46F/elements/alpha_absolute\x00\x00\x00,ffff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
我试着从这些编码序列中解码4个浮点数。你知道吗
这是我的全部密码:
print('Program Initiated')
UDP_IP = "192.168.2.57"
UDP_PORT = 4000
sock = socket.socket(socket.AF_INET, # Internet
socket.SOCK_DGRAM) # UDP
sock.bind((UDP_IP, UDP_PORT))
while True:
data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes
if 'alpha' in str(data):
print(struct.unpack('>32s8sffff', data))
我看到了一个类似的问题并使用了print(struct.unpack('>32s8sffff', data))
,但是我得到了unpack requires a buffer of 56 bytes
作为错误。你知道吗
这些OSC消息由三部分组成:
b'/'
开头)b','
开头,定义后面的参数类型和数量在问题中提供的数据中,每条消息由36或40字节的地址,然后是5字节的标记类型字符串组成。忽略初始逗号,标记类型字符串由四个“f”组成,因此我们希望参数由四个浮点组成,由16个字节组成(每个浮点4个字节)。你知道吗
在四个浮点所需的16个字节之后,每条消息都有一些额外的字节;让我们假设这些是可以丢弃的填充。你知道吗
因此,struct格式将是:可变数量的地址字符、五个标记类型字符和四个浮点。你知道吗
然后,提取数据所需的代码如下所示:
$猫营业收入你知道吗
生成此输出:
做假设通常是个坏主意。如果OSC服务器有文档,请检查其格式是否偏离OSC spec。你知道吗
相关问题 更多 >
编程相关推荐