我尝试通过 usb4java api 从 USB 设备读取,但出现错误:USB 错误 5:无法读取数据:找不到实体有人可以帮助我吗?必须注意的是,endpoint_in 我从 LibUsb.ENDPOINT_IN 得到它,然后我将它传递给读取功能 找到设备已声明,但我无法继续从设备读取。
My code is given below:
import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.IntBuffer;
import javax.swing.JOptionPane;
import org.usb4java.BufferUtils;
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 Test {
private static byte endpoint;
// private static final byte IN_ENDPOINT = 0;
private static Device device;
private static Context context = new Context();
private static DeviceHandle handle;
public static …Run Code Online (Sandbox Code Playgroud) 目前我正在为大学做一个项目,我必须创建一个程序来控制玻璃容器中的湿度。为此,我有一个湿度计。
首先,程序必须从湿度计导入原始数据,但我不知道它是如何工作的。文档说它有一个 USB 接口,但我只能找到如何解析原始数据的方法。我还给销售这种湿度计的公司写了一封电子邮件。他们说有一个外部软件可以导入和处理这些数据。但是我不允许使用外部软件。因此我被迫直接从 USB 端口读取原始数据。我尝试使用 usb4java,但我只能找到所有连接的 USB 设备。我不知道如何继续。请帮我 文档 文档
下面的代码
public class DumpDevices
{
/**
* Dumps the specified USB device to stdout.
*
* @param device
* The USB device to dump.
*/
private static void dumpDevice(final UsbDevice device)
{
// Dump information about the device itself
System.out.println(device);
final UsbPort port = device.getParentUsbPort();
if (port != null)
{
System.out.println("Connected to port: " + port.getPortNumber());
System.out.println("Parent: " + port.getUsbHub());
}
// Dump device descriptor
System.out.println(device.getUsbDeviceDescriptor());
// Process all …Run Code Online (Sandbox Code Playgroud) 我正在尝试与PS3的DS3控制器连接.我已经设法C#使用了一个实现,libusb但决定将我的实现移动到java.不幸的是,我转向java并不是那么顺利.该设备似乎在设备列表中找到,但当我尝试打开它时,我收到以下错误"USB错误4:无法打开USB设备:没有这样的设备(可能已断开连接)"
public class Main {
private static final short VID = 0x054c;
private static final short PID = 0x0268;
Context context;
public Main() {
context = new Context();
int result = LibUsb.init(context);
if (result != LibUsb.SUCCESS) {
throw new LibUsbException("Unable to initialize libusb.", result);
}
ByteBuffer data = ByteBuffer.allocate(49);
DeviceHandle ds3Handle = getDeviceHandle(findDevice(VID, PID));
LibUsb.controlTransfer(ds3Handle, (byte)0xa1, (byte)0x1, (short)0x101, (short)0, data, 1000L);
LibUsb.exit(context);
}
private Device findDevice(int vid, int pid) {
Device UsbDevice = …Run Code Online (Sandbox Code Playgroud) 我与USB4Java(低级别的版本)工作,我基本上都是从这个代码工作在这里.我在Ubuntu工作,我遇到了关于权限的问题,但是能够通过终端使用gksu运行eclipse来解决.
现在我遇到了一个新问题:当我在这里找到代码中的要点时:
public static void claimDevice(DeviceHandle handle, int interfaceNum){
int r = LibUsb.claimInterface(handle, interfaceNum);
.
.
.
Run Code Online (Sandbox Code Playgroud)
我得到一个例外,告诉我"资源很忙":
USB error 6: Unable to claim interface: Resource busy
Run Code Online (Sandbox Code Playgroud)
我之前使用过Ubuntu(但从来没有用过开发,所以我真的很擅长这个).如果这不是应该处理这个问题的地方那么请告诉我在哪里接受它所以我可以得到答案.
具体来说,问题是,这意味着什么,我该如何解决?我的目标,在这种情况下,这是一个自定义USB设备,是创建一个低级别的跨平台...基于java ..."驱动程序"(松散地使用该术语).我现在正在使用Ubuntu,因为终端lsusb命令在相关设备上提供了大量信息.