标签: libusb

对于64位Windows,libusb-win32是否可以替代?

我一直在开发一些软件,该软件使用libusb-win32库与我一直在开发的某些USB硬件进行交互。现在,我试图在Windows 64上运行相同的软件,但驱动程序似乎无法正常工作(可以理解)。

我忽略了64位Windows的替代方案吗?

c++ windows 64-bit driver libusb

4
推荐指数
1
解决办法
2万
查看次数

libusb基本的例子想要

我正在编写用户空间程序,旨在通过usb控制某些设备,所以我决定使用libusb(libusb-1.0)向该设备发送控制消息并从该设备接收响应.

但我不断从我的代码中收到以下一堆错误(即使它是使用'sudo'执行的):

USB error: could not set config 0: Device or resource busy
set configuration: failed
Check that you have permissions to write to 007/012 and, if you don't, that you set up hotplug (http://linux-hotplug.sourceforge.net/) correctly.
USB error: could not claim interface 0: Device or resource busy
claim interface: failed
USB error: error submitting URB: No such file or directory
bulk writing: failed
USB error: error submitting URB: No such file or directory
bulk reading: failed
response was: 
Run Code Online (Sandbox Code Playgroud)

代码是:

usb_dev_handle* …
Run Code Online (Sandbox Code Playgroud)

linux libusb

4
推荐指数
2
解决办法
2万
查看次数

修改libusb以接受文件描述符

我修改了libusb1.0的open函数如下:

static int op_open2(struct libusb_device_handle *handle, int fd) {
    struct linux_device_handle_priv *hpriv = _device_handle_priv(handle);

    hpriv->fd = fd;

    return usbi_add_pollfd(HANDLE_CTX(handle), hpriv->fd, POLLOUT);
}
Run Code Online (Sandbox Code Playgroud)

其中fd是通过android.hardware.usb.UsbDeviceConnection.html#getFileDescriptor()获得的

final UsbDeviceConnection connection = manager.openDevice(device); 
return connection.getFileDescriptor();
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我打电话时,我不断收到错误

static int op_claim_interface(struct libusb_device_handle *handle, int iface)
{
    int fd = _device_handle_priv(handle)->fd;

    int r = ioctl(fd, IOCTL_USBFS_CLAIMINTF, &iface);

    if (r) {
        if (errno == ENOENT)
            return LIBUSB_ERROR_NOT_FOUND;
        else if (errno == EBUSY)
            return LIBUSB_ERROR_BUSY;
        else if (errno == ENODEV)
            return LIBUSB_ERROR_NO_DEVICE;

        usbi_err(HANDLE_CTX(handle),
            "claim interface failed, error %d errno …
Run Code Online (Sandbox Code Playgroud)

usb android libusb android-ndk libusb-1.0

4
推荐指数
1
解决办法
2456
查看次数

libusb半工作,但libusb_device_descriptor未声明?

我正在尝试使用libusb的C示例,并且事情正常工作,直到我尝试执行以下操作:

libusb_device_descriptor descriptor;
int result = libusb_get_device_descriptor(usb_device, &descriptor);
Run Code Online (Sandbox Code Playgroud)

编译器告诉我,没有声明在同一个libusb.h头文件中定义的一些元素,以及我正在使用的其他libusb结构.WTH?

这是完整的代码:

#include <stdio.h>
#include <stdlib.h>
#include <libusb.h>

void printdev(libusb_device *usb_device);

/**
 * main
 */
int main(void) {
    puts("USB Test v0.0.1");

    libusb_device **usb_devices;
    libusb_context *usb_context = NULL;
    int result;
    result = libusb_init(&usb_context);
    ssize_t device_count;

    if (result < 0) {
        puts("USB initialization error!");
        return EXIT_FAILURE;
    }

    libusb_set_debug(usb_context, 1);
    device_count = libusb_get_device_list(usb_context, &usb_devices);

    if (device_count < 0) {
        puts("Unable to get USB device list!");
        return EXIT_FAILURE;
    }

    char message[24];
    sprintf(message, …
Run Code Online (Sandbox Code Playgroud)

c libusb

4
推荐指数
1
解决办法
1421
查看次数

在Windows 7上使用C++从USB读取数据

我正在尝试读取Trimble SPS-361 GPS接收器的输出,该接收器通过USB连接到Windows 7机器,使用C++(最好)或Java.我知道人们已经提出了类似的问题,但我似乎无法找到我正在寻找的东西.这听起来像libusb是我最好的选择,这是真的吗?如果是这样,什么是一个很好的教程/指南/示例代码?

听起来我需要安装/编写某种特定于设备的驱动程序然后我可以通过libusb用C++从设备读取数据.这是从USB读取的一般过程还是我困惑?

总结我认为需要的东西(我知道我到处都是):

  1. 关于如何与USB进行通信的解释/教程
  2. 有关如何从Windows 7上的USB设备读取数据的更具体的教程/指南/示例代码
  3. 究竟什么是libusb,是我在寻找什么?

c++ io usb libusb windows-7

4
推荐指数
1
解决办法
6400
查看次数

想知道libusb_bulk_transfer错误代码

libusb_open(device, &deviceHandle);
Run Code Online (Sandbox Code Playgroud)

返回0

libusb_bulk_transfer(deviceHandle, 0x81, data1, 512, &len, 0);
Run Code Online (Sandbox Code Playgroud)

返回-5

所以我尝试code -5使用发现错误printf

LIBUSB_ERROR_TIMEOUT
LIBUSB_ERROR_PIPE
LIBUSB_ERROR_OVERFLOW
LIBUSB_ERROR_NO_DEVICE
LIBUSB_ERROR_IO
LIBUSB_TRANSFER_ERROR
LIBUSB_ERROR_INTERRUPTED
LIBUSB_ERROR_ACCESS
LIBUSB_ERROR_BUSY
LIBUSB_ERROR_NO_MEM
LIBUSB_ERROR_COUNT
LIBUSB_ERROR_INVALID_PARAM
Run Code Online (Sandbox Code Playgroud)

但是没有...而且在Google中找不到任何地方...

error code -5in 是什么意思libusb_bulk_transfer

帮我!

return libusb

4
推荐指数
1
解决办法
4763
查看次数

Iterator :: find中的Mutate项

我想使用Iterator::findlibusb::Devices对象,它具有像这样的签名:

fn find<P>(&mut self, predicate: P) -> Option<Self::Item> 
    where Self: Sized, P: FnMut(&Self::Item) -> bool
Run Code Online (Sandbox Code Playgroud)

我想找一个具有特定功能的设备vendor_id,这需要Device::device_descriptor在每个设备上调用.但是,该device_descriptor方法需要&mut每个设备一个,而find方法只给出一个&.

这是否意味着它不可能在任何的迭代器的方法(使用可变方法find,filter等等)?

这是我正在努力工作的例子:

let mut device = context
    .devices()
    .unwrap()
    .iter()
    .find(&mut |dev: &libusb::Device| { 
         dev.device_descriptor().unwrap().vendor_id() == vendor_id
     })
    .unwrap();
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

error: cannot borrow immutable borrowed content `*dev` as mutable
Run Code Online (Sandbox Code Playgroud)

libusb rust

4
推荐指数
1
解决办法
314
查看次数

如何将 libusb 与 libevent 结合使用?

我正在使用 libevent 编写一个事件驱动的应用程序,并且需要使用 libusb-1.0 进行 USB 传输。

我想使用libusb_get_pollfds获取文件描述符列表(在 中fds)并将它们添加到 libevent,如下所示:

const struct libusb_pollfd **fds = libusb_get_pollfds(device->context);

const struct libusb_pollfd *it = *fds;
for(;it != NULL; ++it) {
    cout << "Adding fd: " << it->fd << ", " << it->events << endl;
    struct event * ev = event_new(base_, 
        it->fd, it->events | EV_PERSIST, 
        callbacks::libusb_cb, this);
    event_add(ev, 0);
    libusb_fds_events.insert(std::make_pair(it->fd, ev));
}

free(fds);

// (...)

// And the callback function:
void callbacks::libusb_cb(evutil_socket_t fd, short what, void *arg) {
    Server *s …
Run Code Online (Sandbox Code Playgroud)

c c++ libusb libevent libusb-1.0

3
推荐指数
1
解决办法
2954
查看次数

使用 PyUSB 进行同步读/写

PyUSB 1.0 声称现在支持等时传输(如果底层后端支持)。我已经弄清楚如何选择支持同步传输的libusb1.0后端,但我不确定如何实际实现读取和写入。我搜索过互联网,但找不到使用 PyUSB 的示例。帮助?

libusb pyusb

3
推荐指数
1
解决办法
1263
查看次数

适用于 Linux 的 hidapi 与 libusb

为 USB 鼠标编写一些 C 代码。

更具体地说,将配置和信息写入鼠标,如轮询、灵敏度、按钮操作、颜色(光)、触觉改变、OLED 等。


与开始了这个古老的文章,其中libhid建议了libusb

看着libhid它似乎已经死了。该项目的最后一次提交是从 2012 年开始的,它是 C++。但我发现一些链接说应该转到hidapi.

然而,hidapi似乎也已经死了。2016 年的最后一次提交。或者它可能只是稳定的?

libusb毕竟,它看起来像一个更好的使用。从一篇 15 年前的文章开始 - 这并没有那么夸张。

问题是我是否遗漏了什么?是libusb要走的路吗?

已经做了一些快速测试 libusb-1.0.0-dev

#include <libusb-1.0/libusb.h>
Run Code Online (Sandbox Code Playgroud)

并且效果很好 - 至少对于我所做的快速测试而言是这样。但是 HID 库也许会更好?

从本机包选项我至少有:

libhidapi-dev      
libhidapi-libusb0  
libhidrd0-dbg      
libhidapi-hidraw0  
libhidrd0          
libhidrd0-dev
Run Code Online (Sandbox Code Playgroud)

libusb-0.1-4                 libusbmuxd4
libusb-1.0-0                 libusbmuxd-dev
libusb-1.0-0-dev             libusbmuxd-tools
libusb-1.0-doc               libusb-ocaml
libusbauth-configparser1     libusb-ocaml-dev
libusbauth-configparser-dev  libusbprog0v5
libusb-dev                   libusbprog-dev
libusbguard0                 libusbredirhost1
libusbhid-common             libusbredirhost-dev
libusb-java                  libusbredirparser1
libusb-java-dbg              libusbredirparser-dev
libusb-java-doc              libusbtc08-1
libusb-java-lib              libusbtc08-dev
Run Code Online (Sandbox Code Playgroud)

linux usb mouse libusb hidapi

3
推荐指数
1
解决办法
4242
查看次数

标签 统计

libusb ×10

c++ ×3

usb ×3

c ×2

libusb-1.0 ×2

linux ×2

64-bit ×1

android ×1

android-ndk ×1

driver ×1

hidapi ×1

io ×1

libevent ×1

mouse ×1

pyusb ×1

return ×1

rust ×1

windows ×1

windows-7 ×1