Skip to content
This repository has been archived by the owner on Oct 14, 2022. It is now read-only.

Commit

Permalink
shutter: adapt to esoteric EOL, fix test
Browse files Browse the repository at this point in the history
  • Loading branch information
jordens committed Jul 27, 2018
1 parent 6efae6d commit 8c181db
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 15 deletions.
14 changes: 6 additions & 8 deletions ptb/shutter_protocol.py
Expand Up @@ -12,16 +12,15 @@ def do(self, cmd):
logger.debug("do %s", cmd)
self._writeline(cmd)

async def ask(self, cmd):
async def ask(self, cmd, n=None):
self.do(cmd)
ret = await self._readline()
if n is None:
ret = await self._readline()
else:
ret = await self._read(n)
logger.debug("ret %s", ret)
return ret

async def read(self, n):
ret = await self._read(n)
return ret.decode()

async def version(self):
"""Return the hardware/firmware version.
Expand All @@ -36,8 +35,7 @@ async def status(self):
Returns:
list(float): Temperatures on all channels
"""
ret = (await self.ask(b"e")).strip()
assert len(ret) == 3
ret = (await self.ask(b"e", 3)).strip()
return tuple(bool(int(_)) for _ in ret)

def clear(self):
Expand Down
7 changes: 4 additions & 3 deletions ptb/shutter_tcp.py
Expand Up @@ -4,7 +4,7 @@


class ShutterTCP(ShutterProtocol):
eol_write = b"\r"
eol_write = b"\r\n"
eol_read = b"\r"

def __init__(self, reader, writer):
Expand All @@ -29,8 +29,9 @@ def _writeline(self, cmd):
self._writer.write(cmd + self.eol_write)

async def _readline(self):
r = await self._reader.readline()
assert r.endswith(self.eol_read)
r = b""
while not r.endswith(self.eol_read):
r += await self._reader.read(1)
return r[:-len(self.eol_read)]

async def _read(self, n):
Expand Down
9 changes: 5 additions & 4 deletions test_shutter.py
Expand Up @@ -8,16 +8,17 @@

async def test(dev):
print(dev)
print(await dev.version())
print(await dev.status())
print(await dev.passthrough(1, b"W"))
print(await dev.version())
for i in b"TWXYZ":
print(i, await dev.passthrough(1, i))

def main():
logging.basicConfig(level=logging.INFO)
logging.basicConfig(level=logging.DEBUG)
loop = asyncio.get_event_loop()
loop.set_debug(False)
async def run():
with await Synth.connect("buemi") as dev:
with await Shutter.connect("buemi") as dev:
await test(dev)
loop.run_until_complete(run())

Expand Down

0 comments on commit 8c181db

Please sign in to comment.