From b02edd109bb6049ff5660c31a3fe19aba21cc17e Mon Sep 17 00:00:00 2001 From: Kieran McAuliffe Date: Mon, 1 Sep 2025 16:11:49 +0200 Subject: [PATCH] simple working example --- example-client.pd | 16 ++++++++++++++++ main.py | 26 ++++++++++++++++---------- 2 files changed, 32 insertions(+), 10 deletions(-) create mode 100644 example-client.pd diff --git a/example-client.pd b/example-client.pd new file mode 100644 index 0000000..3533bbc --- /dev/null +++ b/example-client.pd @@ -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; diff --git a/main.py b/main.py index 6d1ad28..6e31c98 100644 --- a/main.py +++ b/main.py @@ -1,16 +1,22 @@ +import threading import turtle - +import argparse from pythonosc import udp_client from pythonosc.dispatcher import Dispatcher from pythonosc import osc_server -def coordinate_handler(unused_addr, args, x, y): - turtle.goto(x, y) - -def change_pressure(unused_aadr, args, pressure): - turtle.pen(pensize=pressure*20) +t = turtle.Turtle() +screen = turtle.Screen() +screen.title("Painting robot sim") +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__": parser = argparse.ArgumentParser() @@ -19,10 +25,10 @@ if __name__ == "__main__": args = parser.parse_args() dispatcher = Dispatcher() - dispatcher.map("/filter", print) - dispatcher.map("/volume", print_volume_handler, "Volume") - dispatcher.map("/logvolume", print_compute_handler, "Log volume", math.log) + dispatcher.map("/tcp_coordinates", coordinate_handler) server = osc_server.ThreadingOSCUDPServer((args.ip, args.port), dispatcher) 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()