Web Serial APIの使い方

この記事を書いたチーム:frontier
Web Serial APIの使い方

Web Serial APIとは

【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc.  詳細はこちらから>

ウェブサイト上でシリアルデバイスを操作(データ送信, データ受信)するためのAPI。

シリアルデバイスとはシリアルポートで接続されたデバイスのこと。

Web Serial APIが使えるデバイス

デバイス固有のドライバをインストールすることができるデバイス。
※実体験からの予想を含むので正しくない場合がある。

例えば、
LINE EYEのSI-35 USB(インターフェースコンバータUSB⇔RS-422/485)の場合、
初めて繋いだときドライバが自動でインストールされなかった。

そこでWindowsのデフォルト?のUSBデバイス用のドライバであるWinUSBをインストールした。
(固有のドライバではない)
Web Serial APIでデバイスを認識しなかった。

次にデバイスの製品情報のWebサイトから
デバイス固有のドライバをインストールした。
Web Serial APIでデバイスを認識した。

※補足:
WinUSBのドライバの場合、Web Serial APIとは別のWeb USB APIでは認識したが、
意図した通り信号を送ることができなかった…。

WebSerialAPI 使用例と解説

プログラムの内容

デバイスを選択して
デバイスとの接続を確立して、
デバイスに情報を送信して、
デバイスからの電文を受信して、
デバイスとの接続を切断する。

プログラム全文

デバイスを選択

 

画像のようなポップアップが表示されるので、接続したいデバイスを選択する。

requestPortメソッドに対するoption引数でベンダーIDやプロダクトIDを使って、選択できるデバイスを制限することができる。

デバイスとの接続を確立

 

デバイスに情報を送信

 

あるポートに対して情報の送信者は常にひとりである必要がある。

そのため、シリアル通信の送信者の取得時に他の場所から同時に情報が送られないようにロックがかかる。

3行目で命令を送信して、4行目で送信者のロックを開放する。

デバイスからの電文を受信

 

あるポートに対して情報の受信者は常にひとりである必要がある。

そのため、シリアル通信の受信者の取得時に他の場所から同時に情報が受信されないようにロックがかかる。

3行目で電文を受信して、4行目で受信者のロックを開放する。

デバイスとの接続を切断

 

シリアル通信の送信者、受信者のロックを開放していない状態で接続を切断するとエラーになるので注意!!

参考サイト

【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>

Smallitのサービス