要使用Java通过USB端口与设备通信,您可以使用一些第三方库,如jUSB或libusb4java。以下是一个使用jUSB库的简单示例:
<groupId>org.usb4java</groupId>
<artifactId>usb4java</artifactId>
<version>1.2.0</version>
</dependency>
import org.usb4java.Context;
import org.usb4java.Device;
import org.usb4java.DeviceDescriptor;
import org.usb4java.DeviceList;
import org.usb4java.LibUsb;
public class UsbDeviceEnumerator {
public static void main(String[] args) {
Context context = new Context();
int result = LibUsb.init(context);
if (result < 0) {
throw new RuntimeException("Unable to initialize libusb.");
}
DeviceList deviceList = new DeviceList();
int deviceCount = LibUsb.getDeviceList(context, deviceList);
System.out.println("Number of connected USB devices: " + deviceCount);
for (int i = 0; i< deviceCount; i++) {
Device device = deviceList.get(i);
DeviceDescriptor deviceDescriptor = new DeviceDescriptor();
result = LibUsb.getDeviceDescriptor(device, deviceDescriptor);
if (result < 0) {
throw new RuntimeException("Unable to get device descriptor.");
}
System.out.println("Device " + i + ":");
System.out.println(" Vendor ID: " + deviceDescriptor.idVendor());
System.out.println(" Product ID: " + deviceDescriptor.idProduct());
System.out.println(" Manufacturer: " + LibUsb.getStringDescriptor(device, deviceDescriptor.iManufacturer()));
System.out.println(" Product: " + LibUsb.getStringDescriptor(device, deviceDescriptor.iProduct()));
}
LibUsb.freeDeviceList(deviceList, true);
LibUsb.exit(context);
}
}
LibUsb.controlTransfer()
函数发送控制消息,或使用LibUsb.bulkTransfer()
函数发送和接收大量数据。请注意,这只是一个简单的示例,您可能需要根据您的需求进行调整。在使用jUSB库时,请确保遵循其文档和示例,以确保正确的设备访问和通信。
领取专属 10元无门槛券
手把手带您无忧上云