作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 jni 的 Android 应用程序中使用 libusb。我能够使用 libusb 找到设备。但打不开。
#include <stdio.h>
#include <sys/types.h>
#include <string.h>
#include <libusb.h>
#include <jni.h>
#define MY_VENDOR_ID 0xXXXX
#define MY_PRODUCT_ID 0xXXXX
int is_usbdevblock( libusb_device *dev )
{
struct libusb_device_descriptor desc;
int r = libusb_get_device_descriptor( dev, &desc );
if( desc.idVendor == MY_VENDOR_ID && desc.idProduct == MY_PRODUCT_ID ){
return 1;
}
return 0;
}
char* mymethod()
{
libusb_device **list;
libusb_device *found = NULL;
libusb_context *ctx = NULL;
int attached = 0;
if(libusb_init(&ctx)!=0)
return "libusb init failed";
libusb_set_debug(ctx,3);
ssize_t cnt = libusb_get_device_list(ctx, &list);
ssize_t i = 0;
int err = 0;
if (cnt < 0)
return "No usb device on system";
for(i = 0; i < cnt; i++){
libusb_device *device = list[i];
if( is_usbdevblock(device) ){
found = device;
break;
}
}
if(found){
libusb_device_handle *handle;
err = libusb_open(found, &handle);
if (err)
return "Open error";
return "Device Opened";
}
return "Device not found";
}
JNIEXPORT jstring JNICALL Java_com_example_test_Test_TestOpen(JNIEnv* env, jobject obj)
{
return mymethod();
}
include $(CLEAR_VARS)
LOCAL_MODULE := libusb-1.0
LOCAL_SRC_FILES := libusb-1.0.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := TestExP
LOCAL_SRC_FILES := TestExP.c
LOCAL_SHARED_LIBRARIES += usb-1.0
include $(BUILD_SHARED_LIBRARY)
在我的 Activity 课上,我会遵循...
static{
System.loadLibrary("usb-1.0");
System.loadLibrary("TestExP");
}
public native String TestOpen();
一切正常。当我运行这个程序时,它返回 -3 libusb 错误代码,上面写着“LIBUSB_ERROR_ACCESS”我做错了什么。有人说给 usb 设备权限。我可以使用 Android USB-API 打开设备并连接到设备。但我想用 libusb-1.0 做到这一点。
最佳答案
找到您的设备并记住它的 VID 和 PID:
lsusb
创建规则文件:
sudo gedit /etc/udev/rules.d/99-my-android-device.rules
Enter next strings to file,用你的VID和PID填充03eb
和204f<
:
ACTION!="add|change", GOTO="my_android_device_rules_end"
SUBSYSTEM!="usb|tty|hidraw", GOTO="my_android_device_rules_end"
ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="204f", MODE="664", GROUP="plugdev"
LABEL="my_android_device_rules_end"
将自己添加到 plugdev
组:
usermod -aG plugdev $USER
重新登录或重启。
您也可能对类似的 issue 感兴趣.
关于android - libusb_open 返回 LIBUSB_ERROR_ACCESS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15923820/
我在使用 jni 的 Android 应用程序中使用 libusb。我能够使用 libusb 找到设备。但打不开。 TestExP.c #include #include #include #i
我是一名优秀的程序员,十分优秀!