Open6

React RC-S380 接続

piyokopiyoko

インストール

npm i @types/w3c-web-usb
npm i rc_s380_driver

設定

ts.config.json

"types": ["vite-plugin-svgr/client", "vitest/globals", "@types/w3c-web-usb"],
piyokopiyoko
const onClick = async () => {
    const device = await navigator.usb.requestDevice({ filters: [] })
    await device.open()
}

こんな画面が表示される。

piyokopiyoko

ココにかいてあるが、httpsでないとダイアログが表示されない。
https://developer.mozilla.org/en-US/docs/Web/API/USB

なのでAWSの静的サイトで試すときは、CloudFrontでhttpsアクセスする必要がある。

WEB APIの対応ブラウザ
Microsoft Edge は(Windows)環境でしか使えないかもしれない。

piyokopiyoko

デバイス一覧にRC-S380だけを表示する。

const onClick = async () => {
    const filter = { vendorId: 0x054c } // RC-S380のベンダーID
    const device = await navigator.usb.requestDevice({ filters: [ filter ] })
    await device.open()
}

こんな画面が表示される。

RC-S380のベンダーIDを調べる(Windows)

デバイスマネージャー > NFC Port > NFC Port/PaSoRi 100 USB を 右クリックプロパティ

詳細タブ > プロパティで「ハードウェア ID」を選択

VID・・・デバイスのメーカーに対して割り振られたID
PID・・・メーカーにより製品に対して割り当てられたID

製品まで固定したいのであれば、PIDを指定するほうがいいのかもしれない。
ただ RC-S380 と RC-S380/S で同じPIDかどうかわからないのでVIDだけ指定しておくことにする。

const onClick = async () => {
    const filter = {  vendorId: 0x054c,  productId: 0x06c3 } 
    const device = await navigator.usb.requestDevice({ filters: [ filter ] })
    await device.open()
}
piyokopiyoko

表示されたデバイス一覧でRC-S380を選択して「接続」をクリックすると
Uncaught (in promise) DOMException: Failed to execute 'open' on 'USBDevice': Access denied.
が発生する。

Windowsでは、WinUSBドライバがデバイスにロードされていない場合に、このエラーが発生するらしい。

RC-S380のドライバをアンインストールする

RC-S380のドライバをすでにインストールしている場合はアンインストールする。

  1. SONYのページから「NFCポートソフトウェアリムーバー」をダウンロードし実行する。
    NFCポートソフトウェアリムーバー

RC-S380にWinUSBドライバをインストールする

  1. SONYのページから NFCポートソフトウェアをダウンロードする。
    NFCポートソフトウェア

2.コマンドプロンプトでドライバをダウンロードしたフォルダへ移動し「NFCPortWithDriver.exe /WinUSB」を実行して、ドライバーをインストールする

3.NFCポート自己診断(ドライバ切り替え)を起動する
「自己診断」タブ > カードリーダーにカードを置いて、「次へ」クリックし

カードが読み取れるか確認する。

「設定」タブ > 「WinUSB」を選択して「更新」クリック