npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

dgtchess

v1.0.1

Published

JavaScript connector for DGT electronic chess boards

Downloads

17

Readme

dgtchess

A JavaScript connector for the electronic DGT chess board, working both in the browser and node.js.

Browser Usage

The client version relies on the browser's Web Serial API, which is currently supported only by Google Chrome 80 and later and needs to be enabled via the #enable-experimental-web-platform-features flag in chrome://flags.

Because the Web Serial API is available only on modern browsers, it is very likely that you can simply import the provided Board.js as a JavaScript module. The Board constructor expects an open port as returned by the Web Serial API as its first argument.

<button onclick="loadBoard()">Load position from DGT board</button>
<script type="module" src="main.js">
  import Board from 'chessground/Board.js'
  async function loadBoard () {
    const port = await navigator.serial.requestPort({})
    const board = new Board(port)
    const { serialNr, version, position } = await board.reset()
    console.log(serialNr, version)
    console.log(position.ascii)
  }
</script>

In example/index.html, we provide a standalone example web page that loads the DGT chess board's information and dynamically displays the current position:

Screencast

Usage with node.js

Using npm, you can install dgtchess by calling this:

npm install dgtchess

The node.js version relies on Node Serialport to connect to the DGT chess board. Its path is expected as the first argument of the Board constructor, e.g. /dev/ttyUSB0 on Linux machines. For the node.js version, dgtchess internally maps to Board.node.js which replaces some of the Web Serial APIs by the ones provided by Node Serialport.

import Board from 'dgtchess'
const board = new Board('/dev/ttyUSB0')
const { serialNr, version, position } = await board.reset()
console.log(serialNr, version)
console.log(position.ascii)

This might result in the following output:

13116 1.8
  +------------------------+
8 | .  .  .  .  .  .  .  . |
7 | .  .  Q  .  .  .  .  . |
6 | .  .  .  .  .  .  .  . |
5 | .  .  .  .  .  .  k  . |
4 | .  .  R  .  .  .  .  . |
3 | .  .  .  .  .  .  .  . |
2 | .  .  .  K  .  .  .  . |
1 | .  .  .  .  .  .  .  . |
  +------------------------+
    a  b  c  d  e  f  g  h

Status

The current version of this module uses only the UPDATE BOARD modus and instead of moves, only changes are triggered through the 'data' event.

Background

The protocol for communicating with the electronic chess boards is well documented by DGT in their developer section. There you can find the DGT Electronic Board Protocol Description (version 20120309) which is the base for this JavaScript implementation.