All Projects → niklasf → python-asyncdgt

niklasf / python-asyncdgt

Licence: GPL-3.0 license
Communicate asynchronously with DGT boards

Programming Languages

python
139335 projects - #7 most used programming language

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].