Mercurial > tote-had
annotate python/server.py @ 19:455a46355e72 default tip
Add freq to i2c init
| author | Radomir Dopieralski <sheep-devel@sheep.art.pl> |
|---|---|
| date | Thu, 14 Apr 2016 00:05:31 +0200 |
| parents | d323ad02e8d1 |
| children |
| rev | line source |
|---|---|
|
14
3b9ed9cd63ef
Add simple client and server
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
1 import socket |
|
3b9ed9cd63ef
Add simple client and server
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
2 import math |
|
3b9ed9cd63ef
Add simple client and server
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
3 |
|
3b9ed9cd63ef
Add simple client and server
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
4 from robot import Robot |
|
3b9ed9cd63ef
Add simple client and server
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
5 from gait import Creep |
|
3b9ed9cd63ef
Add simple client and server
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
6 |
|
3b9ed9cd63ef
Add simple client and server
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
7 |
|
3b9ed9cd63ef
Add simple client and server
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
8 def main(): |
|
3b9ed9cd63ef
Add simple client and server
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
9 sock = socket.socket() |
|
3b9ed9cd63ef
Add simple client and server
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
10 addr = socket.getaddrinfo("0.0.0.0", 1010)[0][4] |
|
3b9ed9cd63ef
Add simple client and server
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
11 sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) |
|
3b9ed9cd63ef
Add simple client and server
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
12 sock.setblocking(False) |
|
3b9ed9cd63ef
Add simple client and server
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
13 sock.bind(addr) |
|
17
d323ad02e8d1
Don't wait for the connection
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
14
diff
changeset
|
14 sock.listen(1) |
|
14
3b9ed9cd63ef
Add simple client and server
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
15 |
|
3b9ed9cd63ef
Add simple client and server
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
16 robot = Robot() |
|
3b9ed9cd63ef
Add simple client and server
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
17 gait = Creep(robot) |
|
17
d323ad02e8d1
Don't wait for the connection
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
14
diff
changeset
|
18 run = gait.run() |
|
14
3b9ed9cd63ef
Add simple client and server
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
19 |
|
3b9ed9cd63ef
Add simple client and server
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
20 while True: |
|
17
d323ad02e8d1
Don't wait for the connection
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
14
diff
changeset
|
21 try: |
|
d323ad02e8d1
Don't wait for the connection
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
14
diff
changeset
|
22 client, addr = sock.accept() |
|
d323ad02e8d1
Don't wait for the connection
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
14
diff
changeset
|
23 except OSError: |
|
d323ad02e8d1
Don't wait for the connection
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
14
diff
changeset
|
24 next(run) |
|
d323ad02e8d1
Don't wait for the connection
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
14
diff
changeset
|
25 else: |
|
d323ad02e8d1
Don't wait for the connection
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
14
diff
changeset
|
26 client.setblocking(False) |
|
d323ad02e8d1
Don't wait for the connection
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
14
diff
changeset
|
27 while True: |
|
d323ad02e8d1
Don't wait for the connection
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
14
diff
changeset
|
28 command = client.read(1) |
|
d323ad02e8d1
Don't wait for the connection
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
14
diff
changeset
|
29 if command == b' ': |
|
d323ad02e8d1
Don't wait for the connection
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
14
diff
changeset
|
30 gait.dx = 0 |
|
d323ad02e8d1
Don't wait for the connection
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
14
diff
changeset
|
31 gait.dy = 0 |
|
d323ad02e8d1
Don't wait for the connection
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
14
diff
changeset
|
32 gait.rotation = 0 |
|
d323ad02e8d1
Don't wait for the connection
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
14
diff
changeset
|
33 elif command == b'w': |
|
d323ad02e8d1
Don't wait for the connection
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
14
diff
changeset
|
34 gait.dy = min(3, gait.dy + 0.25) |
|
d323ad02e8d1
Don't wait for the connection
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
14
diff
changeset
|
35 elif command == b's': |
|
d323ad02e8d1
Don't wait for the connection
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
14
diff
changeset
|
36 gait.dy = max(-3, gait.dy - 0.25) |
|
d323ad02e8d1
Don't wait for the connection
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
14
diff
changeset
|
37 elif command == b'a': |
|
d323ad02e8d1
Don't wait for the connection
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
14
diff
changeset
|
38 gait.rotation = min(math.pi/90, gait.rotation + math.pi/360) |
|
d323ad02e8d1
Don't wait for the connection
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
14
diff
changeset
|
39 elif command == b'd': |
|
d323ad02e8d1
Don't wait for the connection
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
14
diff
changeset
|
40 gait.rotation = max(-math.pi/90, gait.rotation - math.pi/360) |
|
d323ad02e8d1
Don't wait for the connection
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
14
diff
changeset
|
41 next(run) |
