Mercurial > code > home > repos > light9
changeset 2012:0bb08e887166
bcf2000 python 3 support
Ignore-this: 2f78d9c590846a357876afc5116aaa5d
author | drewp@bigasterisk.com |
---|---|
date | Mon, 10 Jun 2019 02:19:59 +0000 |
parents | 9b5e313d6dfc |
children | 02eb0e99bba5 |
files | bcf2000.py |
diffstat | 1 files changed, 8 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/bcf2000.py Mon Jun 10 02:14:25 2019 +0000 +++ b/bcf2000.py Mon Jun 10 02:19:59 2019 +0000 @@ -38,27 +38,25 @@ self.dev = None self.lastValue: Dict[str, int] = {} # control name : value self.reopen() - self.packet = "" + self.packet = b"" loop = LoopingCall(self.poll) loop.start(.01) def poll(self): try: - bytes = self.dev.read(3) + newData = self.dev.read(3) except (IOError, AttributeError): return - if len(bytes) == 0: - print("midi stall, reopen slider device") - self.reopen() + if newData is None: return - self.packet += bytes + self.packet += newData if len(self.packet) == 3: p = self.packet - self.packet = "" + self.packet = b"" self.packetReceived(p) def packetReceived(self, packet): - b0, which, value = [ord(b) for b in packet] + b0, which, value = packet if b0 != 0xb0: return if which in self.control: @@ -78,7 +76,7 @@ pass self.lastValue.clear() - self.dev = open(self.devPath, "r+") + self.dev = open(self.devPath, "rb+", buffering=0) twisted.internet.fdesc.setNonBlocking(self.dev) def valueIn(self, name, value): @@ -107,7 +105,7 @@ if name.startswith('button-'): value = value * 127 #print "bcf: write %s %s" % (name, value) - self.dev.write(chr(0xb0) + chr(which[0]) + chr(int(value))) + self.dev.write(bytes([0xb0, which[0], int(value)])) def close(self): self.dev.close()