37 # XXX: bug |
42 # XXX: bug |
38 self.io.write('\r') |
43 self.io.write('\r') |
39 self.io.flush() |
44 self.io.flush() |
40 self.io.read(1) |
45 self.io.read(1) |
41 |
46 |
|
47 def _arg (self, arg) : |
|
48 if isinstance(arg, str) : |
|
49 value, = arg |
|
50 value = ord(value) |
|
51 elif isinstance(arg, int) : |
|
52 value = arg |
|
53 else : |
|
54 raise ValueError(arg) |
|
55 |
|
56 if 0 <= value <= 255 : |
|
57 return str(value) |
|
58 else : |
|
59 raise ValueError(value) |
|
60 |
42 def __call__ (self, cmd, *args) : |
61 def __call__ (self, cmd, *args) : |
43 out = cmd + ' ' + ' '.join(str(arg) for arg in args) + '\r' |
62 out = cmd + ' ' + ' '.join(self._arg(arg) for arg in args) + '\r' |
44 |
63 |
45 log.info("%s", out) |
64 log.info("%s", out) |
46 |
65 |
47 self.io.write(out) |
66 self.io.write(out) |
48 self.io.flush() |
67 self.io.flush() |
100 Set dmx[start:end:step] = value |
119 Set dmx[start:end:step] = value |
101 """ |
120 """ |
102 |
121 |
103 self('r', start, stop, step, value) |
122 self('r', start, stop, step, value) |
104 |
123 |
|
124 def __setitem__ (self, index, value) : |
|
125 if isinstance(value, collections.Sequence) : |
|
126 values = tuple(value) |
|
127 else : |
|
128 values = (value, ) |
|
129 |
|
130 if isinstance(index, slice) : |
|
131 if index.start and index.stop and index.step : |
|
132 # XXX: single |
|
133 self.range(index.start, index.stop, index.step, value) |
|
134 |
|
135 elif index.start and index.stop : |
|
136 self.fill(index.start, index.stop, *values) |
|
137 |
|
138 elif index.start : |
|
139 self.set(index.start, *values) |
|
140 |
|
141 else : |
|
142 raise IndexError("invalid slice: %s" % (index, )) |
|
143 |
|
144 else : |
|
145 # simple set |
|
146 self.set(index, *values) |
|
147 |
105 import argparse |
148 import argparse |
106 |
149 |
107 def main (argv) : |
150 def main (argv) : |
108 parser = argparse.ArgumentParser() |
151 parser = argparse.ArgumentParser() |
109 parser.add_argument('--serial', default=DMX.SERIAL, |
152 parser.add_argument('--serial', default=DMX.SERIAL, |