はじめに
ここではSONY社製PaSoRi(RC-S380)をJavaで制御するまでの方法を説明します.
環境
- OS: Windows 11 23H2(Windows 10 22H2)でも動作確認済み
- Java: JDK 1.8.0_202(もっと新しいものでも動作するはずですが,本件とは別の理由でこのような古いバージョンを使っています)
- USBライブラリ: libusb4java 1.3.0
- カードリーダ: SONY社製 RC-S380
- IDE: NetBeans 20
発生したエラー
以前(記憶があいまいですがWindows 10 21H1まで)では特に問題なく動作していたプログラムですが,少なくともWindows 10 22H2では動作しなくなってしまっていました.まずはどのようなエラーが発生するのか示します.下のエラーは抜粋です.
javax.usb.UsbPlatformException: USB error 12: Can't open device Bus 001 Device 024: ID 054c:06c3: Operation not supported or unimplemented on this platform at org.usb4java.javax.ExceptionUtils.createPlatformException(ExceptionUtils.java:39)
at org.usb4java.javax.AbstractDevice.open(AbstractDevice.java:226) at org.usb4java.javax.AbstractDevice.getLanguages(AbstractDevice.java:538)
at org.usb4java.javax.AbstractDevice.getUsbStringDescriptor(AbstractDevice.java:507) at org.usb4java.javax.AbstractDevice.getString(AbstractDevice.java:526)
at org.usb4java.javax.AbstractDevice.getManufacturerString(AbstractDevice.java:304)
このエラーはUSBライブラリが正しく動作していないという内容です.よって本稿ではドライバを変更して対応します.
RC-S380をパソコンに接続後,デバイスマネージャを開くと下のように「NFC Port/PaSoRi 100 USB」として認識されます.
ドライバの更新
上記の問題は,以前使われていたドライバ(WinUSB)から変わってしまったことが原因であると考えられます.このため,もとのWinUSBへ戻す作業をします.そのために使うアプリケーションがZadigです.こちらにある公式サイトからダウンロードしてください.下の図はダウンロードするリンクを表しています.
ダウンロード後,インストールしてください.次にRC-380SをUSBで接続した状態でZadigを立ち上げます.ただしそのままではRC-380Sが表示されません.そこで下の図のようにOptions⇒List All Devicesを選択してください.
その結果,接続されているすべてのデバイスが選べるようになるはずです.その中からRC-380Sを選びます.次にドライバをWinUSBとし,最後にReplace Driverボタンを押してください.
ドライバのインストールには数分がかかります.下のようなダイアログが断続的に表示されます.
ドライバのインストールが完了すると,下のようなダイアログが現れます.Closeボタンを押し,さらにZadigを終了してください.
以上で設定は終わりです.