simple working example

This commit is contained in:
Kieran McAuliffe 2025-09-01 16:11:49 +02:00
parent 4de088fe98
commit b02edd109b
2 changed files with 32 additions and 10 deletions

16
example-client.pd Normal file
View File

@ -0,0 +1,16 @@
#N canvas 155 110 562 769 12;
#X obj 95 418 netsend -u -b;
#X obj 87 252 oscformat tcp_coordinates;
#X msg 233 363 disconnect;
#X obj 90 313 list trim;
#X obj 89 287 list prepend send;
#X msg 307 289 connect localhost 5005;
#X obj 325 262 loadbang;
#X msg 82 214 242 29 2 0 0 0;
#X connect 1 0 4 0;
#X connect 2 0 0 0;
#X connect 3 0 0 0;
#X connect 4 0 3 0;
#X connect 5 0 0 0;
#X connect 6 0 5 0;
#X connect 7 0 1 0;

26
main.py
View File

@ -1,16 +1,22 @@
import threading
import turtle import turtle
import argparse
from pythonosc import udp_client from pythonosc import udp_client
from pythonosc.dispatcher import Dispatcher from pythonosc.dispatcher import Dispatcher
from pythonosc import osc_server from pythonosc import osc_server
def coordinate_handler(unused_addr, args, x, y): t = turtle.Turtle()
turtle.goto(x, y) screen = turtle.Screen()
screen.title("Painting robot sim")
def change_pressure(unused_aadr, args, pressure):
turtle.pen(pensize=pressure*20)
def coordinate_handler(unused_addr, x, y, z, roll, pitch, yaw):
t.pen(pensize=z)
if z <= 0:
t.penup()
else:
t.pendown()
t.goto(x, y)
if __name__ == "__main__": if __name__ == "__main__":
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
@ -19,10 +25,10 @@ if __name__ == "__main__":
args = parser.parse_args() args = parser.parse_args()
dispatcher = Dispatcher() dispatcher = Dispatcher()
dispatcher.map("/filter", print) dispatcher.map("/tcp_coordinates", coordinate_handler)
dispatcher.map("/volume", print_volume_handler, "Volume")
dispatcher.map("/logvolume", print_compute_handler, "Log volume", math.log)
server = osc_server.ThreadingOSCUDPServer((args.ip, args.port), dispatcher) server = osc_server.ThreadingOSCUDPServer((args.ip, args.port), dispatcher)
print(f"Serving on {server.server_address}") print(f"Serving on {server.server_address}")
server.serve_forever() osc_thread = threading.Thread(target = server.serve_forever, daemon=True)
osc_thread.start()
turtle.done()