-
Notifications
You must be signed in to change notification settings - Fork 0
/
robot_server.py
47 lines (38 loc) · 1.24 KB
/
robot_server.py
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
#!/usr/bin/env python3
import sys
import socket
import irobot_lib as irobot
PORT = 8000 # Port to listen on (non-privileged ports are > 1023)
def get_ip():
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
# doesn't even have to be reachable
sock.connect(('10.255.255.255', 1))
IP = sock.getsockname()[0]
except:
IP = '127.0.0.1'
finally:
sock.close()
return IP
if __name__ == '__main__':
robot_control = irobot.IrobotCommander()
print("robot_control initialized!")
my_ip = get_ip()
if my_ip == "127.0.0.1":
print("Not connected")
sys.exit()
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((my_ip, PORT))
s.listen()
conn, addr = s.accept()
with conn:
print("Connected.")
# print("Connected by {host}".format(host = socket.gethostbyaddr(addr[0])))
while True:
data = conn.recv(512)
if not data:
robot_control.stop_motion()
print("Connection closed")
break
robot_control.interface(data.decode())