はじめに

 ここでは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」として認識されます.

01

ドライバの更新

上記の問題は,以前使われていたドライバ(WinUSB)から変わってしまったことが原因であると考えられます.このため,もとのWinUSBへ戻す作業をします.そのために使うアプリケーションがZadigです.こちらにある公式サイトからダウンロードしてください.下の図はダウンロードするリンクを表しています.

02

ダウンロード後,インストールしてください.次にRC-380SをUSBで接続した状態でZadigを立ち上げます.ただしそのままではRC-380Sが表示されません.そこで下の図のようにOptions⇒List All Devicesを選択してください.

03

 

その結果,接続されているすべてのデバイスが選べるようになるはずです.その中からRC-380Sを選びます.次にドライバをWinUSBとし,最後にReplace Driverボタンを押してください.

04

 

ドライバのインストールには数分がかかります.下のようなダイアログが断続的に表示されます.

 0506

 

ドライバのインストールが完了すると,下のようなダイアログが現れます.Closeボタンを押し,さらにZadigを終了してください.

07

 

以上で設定は終わりです.