forked from davircarvalho/multiHRTFrenderer
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdatasetIndexReceiver.py
More file actions
75 lines (59 loc) · 2.5 KB
/
datasetIndexReceiver.py
File metadata and controls
75 lines (59 loc) · 2.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# %% import libs
import socket
import time
import keyboard
import threading
class DatasetIndexReceiver():
def __init__(self, IP_rcv='0.0.0.0', PORT_rcv=5556,
IP_snd='127.0.0.1', PORT_snd=5555):
self.latest = 0
# receiver socket
self.sock = socket.socket(socket.AF_INET, # Internet
socket.SOCK_DGRAM) # UDP
self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.sock.bind((IP_rcv, PORT_rcv))
# sender socket
self.sock_send = socket.socket(socket.AF_INET, # Internet
socket.SOCK_DGRAM) # UDP
self.ADDR_snd = (IP_snd, PORT_snd)
# start threads
self.t1 = threading.Thread(target=self.reader, daemon=True).start()
self.t2 = threading.Thread(target=self.controlHotKeys, daemon=True).start()
# Receive messages from external app
def reader(self):
print('HRTF manager initialized')
while True:
data, addr = self.sock.recvfrom(1024)
if len(data) > 0:
tmp = data.decode()
print
if 'captur' in tmp.lower(): # if received cmd to capture position, request the pos receiver
self.sock_send.sendto(data, self.ADDR_snd)
else:
self.latest = int(list(filter(str.isdigit, tmp))[0])
print(f'Dataset: {self.latest}')
time.sleep(1)
# Hotkey control
def controlHotKeys(self):
savepos = False
changeDatasetIdx = None
while True:
time.sleep(0.1)
# capture position (use 'right' key)
if keyboard.is_pressed('right'):
savepos = True
if (not keyboard.is_pressed('right') and savepos):
savepos = False
# print('space')
self.sock_send.sendto('captur'.encode(), self.ADDR_snd)
# change dataset index
for number_key in range(10):
if keyboard.is_pressed(f'alt gr+{number_key}'):
changeDatasetIdx = number_key
if (not keyboard.is_pressed(f'alt gr+{number_key}') and isinstance(changeDatasetIdx, int)): # dataset index
self.latest = changeDatasetIdx
changeDatasetIdx = None
print(f'Dataset: {self.latest}')
if __name__ == '__main__':
a = DatasetIndexReceiver()
# %%