关于Rasperry pi的Libusb问题

时间:2017-10-28 23:59:52

标签: c libusb magnetic-cards

我正在编写一个应用程序,通过libusb与磁带阅读器进行通信。在ubuntu 14.04中它运行得很好,但是当我执行相同的代码时,它会在pi rasperry中显示这个错误:

  

libusb:错误[reap_for_handle]收获失败错误-1 errno = 14 libusb:   错误[handle_events]后端handle_events失败,错误为-1   libusb:错误[sync_transfer_wait_for_completion] libusb_handle_events   失败:LIBUSB_ERROR_IO,取消传输和重试,

当他尝试使用函数读取端口的内容时会发生这种情况:

u_char * answer ={'\0'};
u_char epAdress;
epAdress=0x81;
r=libusb_bulk_transfer(dev_handle,epAdress,answer,sizeof(answer),&actual, 0);

2 个答案:

答案 0 :(得分:0)

端点 [Symfony\Component\Debug\Exception\FatalThrowableError] Class 'Yajra\Datatables\DatatablesServiceProvider' not found 是IN端点(即设备到主机),因为方向位(最高有效位)为1,这意味着您要将数据从设备移动到{{1} }。

问题是0x81执行标量初始化,相当于answer,实际上相当于u_char * answer = {'\0'}

显然,写入内存位置uchar * answer = '\0'将无效。我很惊讶它在Ubuntu上运行,也许编译器设法优化了写入。你应该写的是uchar * answer = 0,它将执行数组初始化。然后,当您将0传递给u_char answer[] = {'\0'}时,数组类型将衰减为指向数组开头的指针类型。

答案 1 :(得分:0)

已经解决了问题是从默认存储库安装的libusb版本的错误..我所做的是下载它的最新版本并将其编译成rasperry,这一切都完美无缺。

这是[http://www.linuxfromscratch.org/blfs/view/cvs/general/libusb.html]