c - Raspberry pi 上的 Libusb 问题

标签 c libusb magnetic-cards

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

libusb: error [reap_for_handle] reap failed error -1 errno=14 libusb: error [handle_events] backend handle_events failed with error -1 libusb: error [sync_transfer_wait_for_completion] libusb_handle_events failed: LIBUSB_ERROR_IO, cancelling transfer and retrying,

当他试图通过函数读取通过端口的内容时会发生这种情况:

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

最佳答案

端点 0x81 是一个 IN 端点(即设备到主机),因为方向位(最高有效位)为 1,这意味着您正在将数据从设备移动到 回答

问题是 u_char * answer = {'\0'} 执行标量初始化,等同于 uchar * answer = '\0' 并且确实等价到 uchar * answer = 0

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

关于c - Raspberry pi 上的 Libusb 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46995648/

相关文章:

c - 使用间接运算符获取值

c - 使用 unsigned long long int 进行动态分配

c - 分析生成的汇编代码以操纵命令行参数

c - 防止陷入阻塞调用

python-3.4 - pylibftdi 不能在 python3 上工作,在 python2.7 上工作正常

compilation - 在Windows上编译libusb库

c# - 捕获从磁卡读卡器到变量的输入

linux - 移除绑定(bind)到 HID 接口(interface)的输入驱动程序

python - 使用 Python 在后台读取磁力滑动

Java:需要在 GUI 中获取输入行,仅在控制台中有效