如何将消息从 Pure Data 发送到 Python?
How to send messages from Pure Data to Python?
我正在尝试将消息从 Pure Data 发送到 Python(以在 SSD1306 OLED 上显示)。有人建议我使用套接字。他们还提供了以下 Python 代码:
import socket
s = socket.socket()
host = socket.gethostname()
port = 3000
s.connect((host, port))
mess = "hello"
Msg = mess + " ;"
s.send(message.encode('utf-8'))
在 Pure Data 中,[netreceive 3000]
对象和打印对象连接在一起。
这行得通,但我想做恰恰相反的事情。使用套接字将数据从 Pure Data 发送到 Python。我找到了一些教程,但他们都在谈论 Python 到 Python 消息接收和发送。我怎样才能在其中实现 Pd?
您可以使用Python的socket
库连接到通过[netsend]
发送信息的Pd补丁。这是一个最小的工作示例。在 Pd 中,创建一个简单的补丁,将 [netsend]
连接到 localhost
网络上的端口:
在 Python 中创建并保存监听器脚本(改编自 here)。下面的脚本使用 Python 3.6:
import socket
import sys
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('localhost', 13001)
print(f'starting up on {server_address[0]} port {server_address[1]}')
sock.bind(server_address)
sock.listen(1)
while True:
print('waiting for a connection')
connection, client_address = sock.accept()
try:
print('client connected:', client_address)
while True:
data = connection.recv(16)
data = data.decode("utf-8")
data = data.replace('\n', '').replace('\t','').replace('\r','').replace(';','')
print(f'received {data}')
if not data:
break
finally:
connection.close()
运行这个脚本,然后运行pd的补丁。拖动该数字框会将值发送到 Python。在上面的这个例子中,所有接收到的值都只打印了它们的标签:
然后您可以根据需要调整这些内容。
我正在尝试将消息从 Pure Data 发送到 Python(以在 SSD1306 OLED 上显示)。有人建议我使用套接字。他们还提供了以下 Python 代码:
import socket
s = socket.socket()
host = socket.gethostname()
port = 3000
s.connect((host, port))
mess = "hello"
Msg = mess + " ;"
s.send(message.encode('utf-8'))
在 Pure Data 中,[netreceive 3000]
对象和打印对象连接在一起。
这行得通,但我想做恰恰相反的事情。使用套接字将数据从 Pure Data 发送到 Python。我找到了一些教程,但他们都在谈论 Python 到 Python 消息接收和发送。我怎样才能在其中实现 Pd?
您可以使用Python的socket
库连接到通过[netsend]
发送信息的Pd补丁。这是一个最小的工作示例。在 Pd 中,创建一个简单的补丁,将 [netsend]
连接到 localhost
网络上的端口:
在 Python 中创建并保存监听器脚本(改编自 here)。下面的脚本使用 Python 3.6:
import socket
import sys
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('localhost', 13001)
print(f'starting up on {server_address[0]} port {server_address[1]}')
sock.bind(server_address)
sock.listen(1)
while True:
print('waiting for a connection')
connection, client_address = sock.accept()
try:
print('client connected:', client_address)
while True:
data = connection.recv(16)
data = data.decode("utf-8")
data = data.replace('\n', '').replace('\t','').replace('\r','').replace(';','')
print(f'received {data}')
if not data:
break
finally:
connection.close()
运行这个脚本,然后运行pd的补丁。拖动该数字框会将值发送到 Python。在上面的这个例子中,所有接收到的值都只打印了它们的标签:
然后您可以根据需要调整这些内容。