Skip to content
Snippets Groups Projects
Commit 6138fd40 authored by gawen.ackerman's avatar gawen.ackerman :robot:
Browse files

REFACTOR : Move UDP app in root

parent 00fc6797
No related branches found
No related tags found
No related merge requests found
Showing with 0 additions and 208 deletions
File moved
import socket
import random
import time
import pyautogui
# UDP_IP = "192.168.1.112" # VR headset: 192.168.1.112
UDP_IP = "127.0.0.1"
UDP_PORT = 5000
FOLDER_PATH = "DATA/"
SUBFOLDER_PATH = "TestData/"
# DATA = "static-5sec.txt"
# DATA = "forward-3sec.txt"
# DATA = "backward-3sec.txt"
# DATA = "left-3sec.txt"
# DATA = "right-3sec.txt"
# DATA = "custom-movement.txt" # left, right, back, left, right, left, right
DATA = ""
# SUBFOLDER_PATH = "RealData/"
# DATA = "data-30sec.txt"
# DATA = "data-60sec.txt"
# refreshRate = 0.02
refreshRate = 0.5
# Initialize spatial values
x = 0
y = 0
z = 0
x_theta = 0
y_theta = 0
z_theta = 0
# Create a UDP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# Aggregate values into a string
# Output format: (x, y, z, x_theta, y_theta, z_theta)
def aggregateValuesToString(x, y, z, x_theta, y_theta, z_theta):
return (
str(x)
+ ","
+ str(y)
+ ","
+ str(z)
+ ","
+ str(x_theta)
+ ","
+ str(y_theta)
+ ","
+ str(z_theta)
)
# Read data from file
if DATA != "":
# If a file with data exist, let's use it
with open(FOLDER_PATH + SUBFOLDER_PATH + DATA) as file:
for line in file:
# Split the line into strings (it's seperated by spaces)
# strings = line.split('\x00')
strings = line.split("|")
# Split each string into values (seperated by _)
for string in strings:
values = string.split("_")
print(values)
# Assign values
timestamp, x, y, z, x_theta, y_theta, z_theta = values
# Send values
data = aggregateValuesToString(x, y, z, x_theta, y_theta, z_theta)
sock.sendto(data.encode(), (UDP_IP, UDP_PORT))
# print(data)
# Sleep for 0.1 seconds
time.sleep(refreshRate)
# If no file with data exist, let's use mouse position
else:
while True:
# Use mouse position as data instead
x = pyautogui.position()[0]
z = pyautogui.position()[1]
data = aggregateValuesToString(x, y, z, x_theta, y_theta, z_theta)
sock.sendto(data.encode(), (UDP_IP, UDP_PORT))
print("Sent: " + data)
time.sleep(refreshRate)
import socket
import tkinter as tk
# Window Configuration
WINDOW_SIZE = 400
CENTER_X = WINDOW_SIZE // 2
CENTER_Y = WINDOW_SIZE // 2
# UDP Configuration
UDP_IP = "127.0.0.1"
UDP_PORT = 5000
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# Rotation angle
y_theta = 0
def aggregate_values_to_string(x, y, z, x_theta, y_theta, z_theta):
return f"{x},{y},{z},{x_theta},{y_theta},{z_theta}"
def send_mouse_position(event):
global y_theta
x = event.x - CENTER_X
y = event.y - CENTER_Y
z = 0
x_theta = 0
z_theta = 0
data = aggregate_values_to_string(x, y, z, x_theta, y_theta, z_theta)
sock.sendto(data.encode(), (UDP_IP, UDP_PORT))
print("Sent:", data)
def adjust_rotation(event):
global y_theta
if event.delta > 0:
y_theta += 5
else:
y_theta -= 5
print(f"Rotation Angle (Y): {y_theta}°")
def draw_center_and_arrows(canvas):
CIRCLE_RADIUS = 20
# Draw central circle
canvas.create_oval(
CENTER_X - CIRCLE_RADIUS,
CENTER_Y - CIRCLE_RADIUS,
CENTER_X + CIRCLE_RADIUS,
CENTER_Y + CIRCLE_RADIUS,
fill="black",
)
# Draw arrows
ARROW_MARGIN = 30
ARROW_LENGTH = 150
canvas.create_line(
CENTER_X,
CENTER_Y - ARROW_MARGIN,
CENTER_X,
CENTER_Y - ARROW_LENGTH,
arrow=tk.LAST,
width=2,
) # Up
canvas.create_line(
CENTER_X + ARROW_MARGIN,
CENTER_Y,
CENTER_X + ARROW_LENGTH,
CENTER_Y,
arrow=tk.LAST,
width=2,
) # Right
canvas.create_line(
CENTER_X,
CENTER_Y + ARROW_MARGIN,
CENTER_X,
CENTER_Y + ARROW_LENGTH,
arrow=tk.LAST,
width=2,
) # Down
canvas.create_line(
CENTER_X - ARROW_MARGIN,
CENTER_Y,
CENTER_X - ARROW_LENGTH,
CENTER_Y,
arrow=tk.LAST,
width=2,
) # Left
def main():
root = tk.Tk()
root.title("Mouse Tracker")
root.geometry(f"{WINDOW_SIZE}x{WINDOW_SIZE}")
root.resizable(False, False)
canvas = tk.Canvas(root, width=WINDOW_SIZE, height=WINDOW_SIZE, bg="white")
canvas.pack()
draw_center_and_arrows(canvas)
# Bind mouse movement event
root.bind("<Motion>", send_mouse_position)
# Bind mouse wheel event
root.bind("<MouseWheel>", adjust_rotation)
root.mainloop()
if __name__ == "__main__":
main()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment