Skip to content

niklasf/python-asyncdgt

Repository files navigation

asyncdgt: Communicate asynchronously with DGT boards

asyncdgt uses asyncio to communicate asynchronously with a DGT electronic chess board. View reference documentation.

Example

Create an event loop and a connection to the DGT board.

import asyncio

loop = asyncio.get_event_loop()
dgt = asyncdgt.auto_connect(loop, ["/dev/ttyACM*"])

Register some pyee event handlers. They will be called whenever a board gets connected, disconnected or the position changed.

@dgt.on("connected")
def on_connected(port):
    print("Board connected to {0}!".format(port))

@dgt.on("disconnected")
def on_disconnected():
    print("Board disconnected!")

@dgt.on("board")
def on_board(board):
    print("Position changed:")
    print(board)
    print()

Get some information outside of an event handler using the coroutine get_version().

print("Version:", loop.run_until_complete(dgt.get_version()))

Run the event loop.

try:
    loop.run_forever()
except KeyboardInterrupt:
    pass
finally:
    dgt.close()
    loop.close()

See asyncdgt/__main__.py for the complete example. Run with python -m asyncdgt /dev/ttyACM0.

Hardware

Tested with the following boards:

  • DGT e-Board 3.1
  • DGT e-Board 3.1 Bluetooth

Clocks:

  • DGT Clock 3000

Dependencies

pip install -r requirements.txt

Related projects

  • python-chess, a general purpose chess library.
  • picochess, a standalone chess computer for DGT boards. Some of the DGT protocol handling has been shamelessly extracted from their code.

License

python-asyncdtg is licensed under the GPL3. See the LICENSE.txt file for the full license text.

About

Communicate asynchronously with DGT boards

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages