added scripts

This commit is contained in:
Robert Martin
2020-04-11 16:34:16 +09:00
parent 7851eced4f
commit 18a423aa5b
5 changed files with 105 additions and 16 deletions
+33
View File
@@ -1,9 +1,42 @@
import asyncio
import logging
from contextlib import contextmanager
import hid
logger = logging.getLogger(__name__)
class AsyncHID(hid.Device):
def __init__(self, *args, loop=asyncio.get_event_loop(), **kwargs):
super().__init__(*args, **kwargs)
self._loop = loop
self._write_lock = asyncio.Lock()
self._read_lock = asyncio.Lock()
async def read(self, size, timeout=None):
async with self._read_lock:
return await self._loop.run_in_executor(None, hid.Device.read, self, size, timeout)
async def write(self, data):
async with self._write_lock:
return await self._loop.run_in_executor(None, hid.Device.write, self, data)
@contextmanager
def get_output(path=None, open_flags='wb', default=None):
"""
Context manager that open the file a path was given, otherwise returns default value.
"""
if path is not None:
file = open(path, open_flags)
yield file
file.close()
else:
yield default
def get_bit(value, n):
return (value >> n & 1) != 0