Как отправлять сообщения из Pure Data на Python? - PullRequest
2 голосов
/ 18 апреля 2020

Я пытаюсь отправить сообщения из Pure Data на Python (для отображения на OLED SSD1306). Кто-то предложил мне использовать сокеты. Они также предоставили следующий 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 в этом?

1 Ответ

2 голосов
/ 18 апреля 2020

Вы можете использовать библиотеку Python socket для подключения к Pd-патчу, который отправляет информацию через [netsend]. Вот рабочий минимальный пример. В Pd создайте простое исправление, которое подключает [netsend] к порту в вашей localhost сети:

enter image description here

Создание и сохранение сценария слушателя в Python (адаптировано с здесь ). В приведенном ниже сценарии используется 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. В этом примере выше все полученные значения просто напечатаны с их метками:

enter image description here

Затем вы можете адаптировать их к вашим потребностям.

...