Chrome 89でWeb Serial APIが正式にサポートされたということをつい先日知りました。 以前からCWComのようにシリアルポートに電鍵が繋げられないかと思っていたので、DitDahChatに実装してみます。
まずは、CWComの接続方法の調査からです。
シリアルポートと電鍵のつなぎ方
CWComは、D-Sub 9ピンオスコネクタのDTR(4ピン)、DSR(6ピン)、CTS(8ピン)を使用しています。 エレキーの場合は、DTRにコモン、DSRにドット、CTSにダッシュをそれぞれ接続します。ストレートキーの場合は、DTRとDSRに接続します。
DitDahChatはエレキーを内蔵していないので、ストレートキーモードで接続します。次の図の黒丸の部分に接続します。
🔵🔵🔵⚫🔵 ⚫🔵🔵🔵
電鍵のON/OFFを読み取りトーン信号を送出
ブラウザからシリアル通信するには、初めにどのシリアルポートを使うかを決めます。次のようにrequestPort()を呼び出すと、 シリアルポートを選択するダイアログが表示されます。
const port = await navigator.serial.requestPort();
次にそのポートをオープンします。
await port.open({ baudRate: 115200 });
ポートにアクセスできるようになったら、定期的にDSRの値を監視します。ONになったらトーン信号を送出、OFFになったら停止というようにします。
const sigs = await port.getSignals(); if (sigs.dataSetReady) ... else ...
動作確認
動作確認には、ラトックシステムのUSBシリアル変換ケーブル REX-USB60F を使用しました。
変換ケーブルに使用されているチップによってはWindows 10で動作しないものもあるようです。
A1 CLUBの掲示板でいただいた情報をまとめると、次のチップを使っているものは動作するようでした。
- Profilic PL-2303HX (rev.D)
- Profilic PL-2303RA
- FTDI FT232BM
- FTDI FT232RL
- CH340
打鍵時に感じる遅延
いつもの交信のときのように縦振電鍵や複式電鍵でゆっくり打っているときは感じませんでしたが、 一総通の電気通信術試験の速さで電報を送信してみると、ほんの少しですが明らかに遅延があることがわかります。 打っていても詰まった感じがします。タイミングが狂わされるほどではないですが気になりました。