小编Pra*_*das的帖子

libusb_open在Windows 7上返回'LIBUSB_ERROR_NOT_SUPPORTED'

我一直在Linux上使用LibUSB开发USB驱动程序,但现在我想为Windows编译我的一个驱动程序(这是我第一次这样做).

我的环境

我正在使用MinGW编译器(也使用Dev-cpp IDE)在Windows 7上工作,我正在使用从此链接下载的预编译的libusb库.

我的设备:这是一款HID触控设备.因此Windows不需要驱动程序.我有一个额外的端点来获取某些调试数据.

我的代码:

我已编译代码列出连接到我的机器的所有设备和USB设备,代码可以工作.现在我添加代码来打开设备,以便获得设备句柄并开始通信.但是函数返回-12即LIBUSB_ERROR_NOT_SUPPORTED.

我该如何解决这个问题?

我在互联网上搜索并没有找到解决这个问题的明确方法.虽然它的代码在Linux上运行得很好.

PS:我在下面添加了整个代码.该DoList();函数工作正常,但GetTRSDevice();函数失败 libusb_open(dev, &handle);.

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


libusb_device_handle* deviceHandle = NULL;

int DoList();
libusb_device_handle* GetTRSDevice(void);

int main()
{
    int ret = libusb_init(NULL);
    if (ret < 0) {
        printf("Failed to init libusb");
        return ret;
    }

    DoList();
    deviceHandle = GetTRSDevice();
    if(!deviceHandle) {
        printf("Failed to locate device");
        goto fail_dev_open;
    }

    printf("Device opened");

    libusb_close(deviceHandle);
    fail_dev_open:
        libusb_exit(NULL);

    return(ret); …
Run Code Online (Sandbox Code Playgroud)

libusb

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

QT应用程序的运行时错误?

我已经在Windows 7的Qt5.1上开发了一个应用程序,现在我想分发它.由于我使用了MINGW编译器,因此无法将其构建为静态.我使用依赖walker找出所有的dll并打包它.当我在没有安装QT开发环境的机器上运行应用程序时,应用程序崩溃与Microsoft Visual C++运行时库错误.

有人可以指出我的问题吗?

windows qt

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

将Qemu控制台重定向到文件或主机终端?

背景:

我的系统是基于x86的内核和基于ramfs的根文件系统.我已经使用基于cpio存档的ramfs(它将使用boot =/dev/ram0作为RAM设备),并且我遇到了一些init问题.整个目的是将ramfs优化到最小,以适应一个非常小的系统.我试图在init中调试问题.我使用以下命令在Ubuntu 12.10(Quantal Quetzal)中启动QEMU:

qemu-system-x86_64 -kernel linux-3.9.2/arch/x86/boot/bzImage -serial stdio -append "root=/dev/ram0 console=tty1"
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,系统进入了OOPS.

题:

我想查看日志以调查崩溃的原因,但我无法使用Shift密钥和Page Up/ 在QEMU控制台中导航Page Down.所以我尝试使用curses命令将输出重定向到主机终端:

qemu-system-x86_64 -kernel linux-3.9.2/arch/x86/boot/bzImage -serial stdio -append "root=/dev/ram0 console=tty1" -curses
Run Code Online (Sandbox Code Playgroud)

但在这里,我无法导航并找到问题所在.

PS如果我的系统启动正常(使用正确的rootfs),那么我可以导航并查看消息.

如何将消息重定向到终端或文件?

qemu

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

无法编译Linux DTB

我正在尝试为beaglebone black编译dts文件。我已经从此位置git://git.ti.com/ti-linux-kernel/ti-linux-kernel.git克隆了git存储库,并且出现以下错误:

  1. 对于beaglebone黑色:

    $ dtc -I dts -O dtb -o am335x-boneblack.dtb am335x-boneblack.dts
    
    Run Code Online (Sandbox Code Playgroud)

    错误:am335x-boneblack.dts:10.1-9语法错误
    致命错误:无法解析输入树

  2. 我尝试使用atmel sam9g20 ek-我收到相同的错误:

    $ dtc -I dts -O dtb -o at91sam9g20ek_2mmc.dtb at91sam9g20ek_2mmc.dts
    
    Run Code Online (Sandbox Code Playgroud)

    错误:at91sam9g20ek_2mmc.dts:9.1-9语法错误
    致命错误:无法解析输入树

但是,当我使用主线内核时,它们会进行编译。

我试过make ARCH=arm dtbs也是一个错误

有人可以指出我犯的错误吗?

linux device-tree

5
推荐指数
1
解决办法
7432
查看次数

如何使用ctypes将python列表传递给C函数(dll)

背景

我在Python中有一些分析软件我必须将一个4096字节的列表(看起来像这样 [80, 56, 49, 50, 229, 55, 55, 0, 77, ......])传递给一个dll,以便dll将它写入设备.

  1. 要写入的字节存储在变量名称数据中
  2. 必须从python调用的c函数(在dll中)是

    int _DLL_BUILD_ IO_DataWrite(HANDLE hDevice, unsigned char* p_pBuff, unsigned char p_nByteCntInBuff);

  3. 我无权访问DLL代码

尝试了方法

我试图声明一种数据类型

data_tx = (ctypes.c_uint8 * len(data))(*data)
Run Code Online (Sandbox Code Playgroud)

并调用该函数

ret = self.sisdll.IO_DataWrite(self.handle, ctypes.byref(data_tx), ctypes.c_uint8(pending_bytes))
Run Code Online (Sandbox Code Playgroud)

问题

似乎没有错误,但它不起作用.API调用适用于C和C++.

我这样做是对的.谁能请我帮忙指出错误?

c c++ python dll

5
推荐指数
1
解决办法
1310
查看次数

启动时KERN_DEBUG printk没有在QEMU控制台中显示?

我正在尝试调试和优化内核启动时间.我正在使用QEMU来模拟内核.我用KERN_DEBUG放置了一些printk,但它们没有显示在任何终端上.我不得不将它们更改为KERN_INFO,然后我可以看到相同的内容.

我的调试日志级别是7.我在配置内核时更改了它.

有人可以告诉我,如果打印件被缓冲到任何其他终端吗?

qemu linux-kernel

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

标签 统计

qemu ×2

c ×1

c++ ×1

device-tree ×1

dll ×1

libusb ×1

linux ×1

linux-kernel ×1

python ×1

qt ×1

windows ×1