-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsequence_writer.py
More file actions
97 lines (70 loc) · 2.71 KB
/
sequence_writer.py
File metadata and controls
97 lines (70 loc) · 2.71 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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#!/usr/bin/env python
"""Python Celery Script sequence writer."""
from __future__ import print_function
import sequence_commands
class Sequence:
def __init__(self, name='New Sequence', color='gray', post=print):
self.sequence = {
'name': name,
'color': color,
'body': []
}
self.add = self.sequence['body'].append
self.post = post
def __enter__(self):
return self
def move_absolute(self, **kwargs):
self.add(sequence_commands.move_absolute(**kwargs))
def move_relative(self, **kwargs):
self.add(sequence_commands.move_relative(**kwargs))
def send_message(self, **kwargs):
self.add(sequence_commands.send_message(**kwargs))
def find_home(self, **kwargs):
self.add(sequence_commands.find_home(**kwargs))
def if_statement(self, **kwargs):
self.add(sequence_commands.if_statement(**kwargs))
def write_pin(self, **kwargs):
self.add(sequence_commands.write_pin(**kwargs))
def read_pin(self, **kwargs):
self.add(sequence_commands.read_pin(**kwargs))
def execute_sequence(self, **kwargs):
self.add(sequence_commands.execute_sequence(**kwargs))
def execute_script(self, **kwargs):
self.add(sequence_commands.execute_script(**kwargs))
def wait(self, **kwargs):
self.add(sequence_commands.wait(**kwargs))
def take_photo(self, **kwargs):
self.add(sequence_commands.take_photo(**kwargs))
def __exit__(self, *args):
self.post(self.sequence)
if __name__ == '__main__':
# Print unformatted sequence
with Sequence("my sequence", "green") as s:
s.move_relative(distance=(100, 100, 0))
s.wait(milliseconds=1000)
s.take_photo()
# Print formatted sequence
import json
def print_json(sequence):
print(json.dumps(sequence, indent=2, sort_keys=False))
with Sequence("my sequence", "green", print_json) as s:
s.move_relative(distance=(100, 100, 0))
s.wait(milliseconds=1000)
s.take_photo()
# Save sequence to file
def save_as_file(sequence):
with open('my_sequence.json', 'w') as sequence_file:
json.dump(sequence, sequence_file)
with Sequence("my sequence", "green", save_as_file) as s:
s.move_relative(distance=(100, 100, 0))
s.wait(milliseconds=1000)
s.take_photo()
# Upload sequence
import requests
def upload(sequence):
r = requests.post("http://httpbin.org/post", data=json.dumps(sequence))
print(r, r.json())
with Sequence("my sequence", "green", upload) as s:
s.move_relative(distance=(100, 100, 0))
s.wait(milliseconds=1000)
s.take_photo()