usb4java底层基于libusb,这个问题在官网已经有说明。简单说,系统的默认驱动程序已经占有了设备,libusb就无法读写数据。当然,设备的VID、PID信息还是可以获取。若只是开发设备检测应用,则可以不用替换驱动。
因此解决方案就是安装官方的驱动程序。以下是我的安装步骤:
1、下载libusbK开发包并安装。这个只是开发包,不会自动替换驱动,里面有inf修改向导
2、打开Driver Install Creator Wizard(inf修改向导),查看已连接的usb设备并选择希望替换驱动的设备
3、安装生成的驱动文件(点击运行InstallDriver.exe就行)
安装成功后,在设备管理器里面,会出现libusbK的设备列表,我们刚才选择的设备挂在这个下面
注意,由于驱动已经变为libusbK,默认的设备功能都无法使用,但可以通过libusb读写设备数据
若不需要libusbK管理设备,到控制面板的程序列表,卸载安装的驱动即可(不是libusbK开发包)
libusbK驱动卸载后,系统会自动更新设备的驱动信息,默认会恢复之前的驱动
若之前向导导出的驱动文件没有删除,下次需要的时候,再点击安装即可
另外补充一点,stackoverflow说到的下面配置,我测试是不需要配置的。若你配置了这个,会导致初始失败!(我是用最新usb4java)
Set the org.usb4java.javax.useUSBDK = true in you javax.usb.properties file
stackoverflow提问:
https://stackoverflow.com/questions/57241363/java-usb4java-reading-from-usb-device-on-windows-10-platform
usb4java官方说明:
http://usb4java.org/faq.html
libusbK官方说明(包括开发包、驱动下载地址):
https://github.com/libusb/libusb/wiki/Windows#Driver_Installation
libusbK开发包、驱动下载:
http://sourceforge.net/projects/libusbk/