gpt4 book ai didi

java - 如何修复 USB 错误 4 : Unable to open USB deviceOperation not supported or unimplemented on this platform

转载 作者:行者123 更新时间:2023-12-05 07:56:06 25 4
gpt4 key购买 nike

我正在创建检测连接的 USB 设备并使用来自 here 的库发送数据的 Java 应用程序通过它。但我收到一个名为“线程“main”中的异常 org.usb4java.LibUsbException:USB 错误 12:无法打开 USB 设备:此平台上不支持或未实现的操作”的错误请帮助我要解决这个问题,这是我的 Java 代码:

package com.lakshman.sundeep;

import java.nio.ByteBuffer;

import org.usb4java.Context;
import org.usb4java.Device;
import org.usb4java.DeviceDescriptor;
import org.usb4java.DeviceHandle;
import org.usb4java.DeviceList;
import org.usb4java.LibUsb;
import org.usb4java.LibUsbException;

public class UTMusb
{
public static int vid = 6790;
public static int pid = 29987;

public static void main(String[] args)
{
Context context = new Context();
int result = LibUsb.init(context);
if(result != LibUsb.SUCCESS)
{
throw new LibUsbException("Unable to initialize the usb device",result);
}
DeviceList list = new DeviceList();
result = LibUsb.getDeviceList(null, list);
if(result < 0 )throw new LibUsbException("Unable to get device list",result);
try
{
for(Device device : list)
{
DeviceDescriptor device_descriptor = new DeviceDescriptor();
result = LibUsb.getDeviceDescriptor(device, device_descriptor);
if(result != LibUsb.SUCCESS)throw new LibUsbException("Unable to get device descriptor : ",result);
System.out.println("Product id is : "+device_descriptor.idProduct()+" "+"Vendor id is : "+device_descriptor.idVendor());
if(device_descriptor.idProduct()==pid && device_descriptor.idVendor()==vid)
{
System.out.println("Product id and vendor id was matched");
getDeviceHandle(device);
}
else
{

System.out.println("Product id and vendor id was not matched");
}

}

}
finally
{
LibUsb.freeDeviceList(list, true);
}


}

public static void getDeviceHandle(Device device)
{
DeviceHandle handle = new DeviceHandle();
int result = LibUsb.open(device, handle);
if(result!=LibUsb.SUCCESS)
{
throw new LibUsbException("Unable to open the usb device",result);
}
try
{
claimDevice(handle,0);
}
finally
{
LibUsb.close(handle);
}
}

private static void claimDevice(DeviceHandle handle, int interfacenumber) {
int result = LibUsb.claimInterface(handle, interfacenumber);

if(result!=LibUsb.SUCCESS)
{
throw new LibUsbException("Unabl to claim or take the usb interface",result);
}
try
{
System.out.println("Usb device taken successfully");
SendData(handle);
}
finally
{
result = LibUsb.releaseInterface(handle, interfacenumber);
if(result!=LibUsb.SUCCESS);
{
throw new LibUsbException("Unable to release interface ",result);
}
}
}

private static void SendData(DeviceHandle handle)
{
ByteBuffer sending_buffer= ByteBuffer.allocateDirect(8);
sending_buffer.put(new byte[]{1,2,3,4,5,6,7,8});
int transfered = LibUsb.controlTransfer(handle, (byte)(LibUsb.REQUEST_TYPE_CLASS | LibUsb.RECIPIENT_INTERFACE),(byte)0x09, (short)2, (short)1, sending_buffer, 5000);
if(transfered < 0)
{
throw new LibUsbException("Transfering failed",transfered);
}
System.out.println(transfered +"Data bytes sent" );
}

}

最佳答案

我遇到了同样的问题,我通过安装 libusb 驱动程序解决了它。Zadig 做得很好。

关于java - 如何修复 USB 错误 4 : Unable to open USB deviceOperation not supported or unimplemented on this platform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28736211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com