DitDahChat モールス通信ウェブアプリ (6) 電鍵をシリアルポートに接続する

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 を使用しました。

f:id:ji1jdi:20210731092720j:plain

変換ケーブルに使用されているチップによってはWindows 10で動作しないものもあるようです。
A1 CLUBの掲示板でいただいた情報をまとめると、次のチップを使っているものは動作するようでした。

  • Profilic PL-2303HX (rev.D)
  • Profilic PL-2303RA
  • FTDI FT232BM
  • FTDI FT232RL
  • CH340

打鍵時に感じる遅延

いつもの交信のときのように縦振電鍵や複式電鍵でゆっくり打っているときは感じませんでしたが、 一総通の電気通信術試験の速さで電報を送信してみると、ほんの少しですが明らかに遅延があることがわかります。 打っていても詰まった感じがします。タイミングが狂わされるほどではないですが気になりました。