diff --git a/bcf2000.py b/bcf2000.py --- a/bcf2000.py +++ b/bcf2000.py @@ -6,11 +6,12 @@ from twisted.internet import reactor from twisted.internet.task import LoopingCall from typing import Dict + class BCF2000(object): control = {81 : "slider1", 82 : "slider2", 83 : "slider3", 84 : "slider4", 85 : "slider5", 86 : "slider6", 87 : "slider7", 88 : "slider8", - + 1 : "knob1", 2 : "knob2", 3 : "knob3", 4 : "knob4", 5 : "knob5", 6 : "knob6", 7 : "knob7", 8 : "knob8", @@ -36,7 +37,7 @@ class BCF2000(object): once as C0D0. It should be autodetected""" self.devPath = dev self.dev = None - self.lastValue: Dict[str, int] = {} # control name : value + self.lastValue: Dict[str, int] = {} # control name : value self.reopen() self.packet = b"" loop = LoopingCall(self.poll) @@ -78,18 +79,18 @@ class BCF2000(object): self.lastValue.clear() self.dev = open(self.devPath, "rb+", buffering=0) twisted.internet.fdesc.setNonBlocking(self.dev) - + def valueIn(self, name, value): """override this with your handler for when events come in from the hardware""" print("slider %s to %s" % (name, value)) if name == 'slider1': - for x in range(2,8+1): + for x in range(2, 8 + 1): v2 = int(64 + 64 * math.sin(x / 3 + value / 10)) self.valueOut('slider%d' % x, v2) - for x in range(1,8+1): - self.valueOut('button-upper%s' % x, value > x*15) - self.valueOut('button-lower%s' % x, value > (x*15+7)) + for x in range(1, 8 + 1): + self.valueOut('button-upper%s' % x, value > x * 15) + self.valueOut('button-lower%s' % x, value > (x * 15 + 7)) def valueOut(self, name, value): """call this to send an event to the hardware""" @@ -100,7 +101,7 @@ class BCF2000(object): if self.lastValue.get(name) == value: return self.lastValue[name] = value - which = [k for k,v in list(self.control.items()) if v == name] + which = [k for k, v in list(self.control.items()) if v == name] assert len(which) == 1, "unknown control name %r" % name if name.startswith('button-'): value = value * 127 @@ -111,6 +112,7 @@ class BCF2000(object): self.dev.close() self.dev = None + if __name__ == '__main__': b = BCF2000() reactor.run()