技术标签: Android
main.c
#include <endian.h>
#include <errno.h>
#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include <usbhost/usbhost.h>
int main(int argc, char **argv)
{
char buff[64];
int i = 0,out =0;
static uint8_t read_ep;
struct usb_descriptor_header* desc;
struct usb_descriptor_iter iter;
struct usb_interface_descriptor *intf = NULL;
struct usb_endpoint_descriptor *ep1 = NULL;
struct usb_endpoint_descriptor *ep2 = NULL;
struct usb_device *p = usb_device_open("/dev/bus/usb/001/002");
int vendorId = usb_device_get_vendor_id(p);
int productId = usb_device_get_product_id(p);
printf("vid = %x, pid = %x\n",vendorId,productId);
usb_descriptor_iter_init(p, &iter);
while ((desc = usb_descriptor_iter_next(&iter)) != NULL && (!intf || !ep1 || !ep2)) {
if (desc->bDescriptorType == USB_DT_INTERFACE) {
intf = (struct usb_interface_descriptor *)desc;
} else if (desc->bDescriptorType == USB_DT_ENDPOINT) {
if (ep1)
ep2 = (struct usb_endpoint_descriptor *)desc;
else
ep1 = (struct usb_endpoint_descriptor *)desc;
}
}
if (!intf) {
printf("interface not found\n");
exit(1);
}
if (!ep1 || !ep2) {
printf("endpoints not found\n");
exit(1);
}
printf("%d,%d,%d\n",ep1->bEndpointAddress,ep2->bEndpointAddress,intf->bInterfaceNumber);
if (usb_device_claim_interface(p, intf->bInterfaceNumber)) {
printf("usb_device_claim_interface failed errno2:\n");
exit(1);
}
if ((ep1->bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN) {
read_ep = ep1->bEndpointAddress;
} else {
read_ep = ep2->bEndpointAddress;
}
for(i = 0;i<10;i++){
out = usb_device_bulk_transfer(p,read_ep,buff,64,0);
printf("out = %d\n",out);
}
return 0;
}
Android.mk
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := main.c
LOCAL_MODULE := main
LOCAL_MODULE_TAGS := optional
LOCAL_STATIC_LIBRARIES := \
libusbhost \
include $(BUILD_EXECUTABLE)
huangyh 2008-11-18 1.写在最前面 用E3组件很久了,对于黄老大滴无私奉献精神盛为感动。一直以来想帮着做点什么,今天,写此一文,希望能对初次接触E3的朋友有一定参考借鉴意义。谨以此为E3的成长壮大献上自己一点绵薄之力,了表心意。鉴于作者水平和精力有限,恳请各路大侠们批评指正! E3官方网站:http://www.javae3.com 2.E3.Tree简单...
盼望着,盼望着,春节的脚步近了,然而,每年到这个时候,最难的,莫过于一张回家的火车票。据悉,今年春运期间,全国铁路发送旅客人次同比将增长8.0%,达到4.4亿人次,2020年铁路春运自1月10日开始,2月18日结束,共40天,节前15天,节后25天,今年的12月12日起日1月10日火车票正式发售。即使再难,家还是要回的,票还是要抢的,所以这一周,GitHub上用python抢票的项目又重回top榜...
.NET Framework 版本和依赖关系微软官方文档:https://docs.microsoft.com/zh-cn/dotnet/framework/migration-guide/versions-and-dependencies每个版本的 .NET framework 都包含公共语言运行时 (CLR)、基类库和其他托管库。本主题按版本介绍了 .NET Framewo...
什么是 HTML5?HTML5 是下一代 HTML 标准。最小的HTML5文档下面是一个简单的HTML5文档:<</span>!DOCTYPE html><</span>html><</span>head><</span>meta charset="utf-8"><...
Android计算器的代码直接使用Android系统里面的Calculator。先找到Android 工程源码中的Calculator(./package/app/Calculator)。导入到Eclipse或者AS。 一、Eclipse导入Android系统自带的Calculator。 在找到Calculator代码以后,在Eclipse中执行:file->
在开发过程中,GET和POST像灵魂一样,无处不在。$_GET 变量是一个数组,内容是由 HTTP GET 方法发送的变量名称和值。$_GET 变量用于收集来自 method="get" 的表单中的值。从带有 GET 方法的表单发送的信息,对任何人都是可见的(会显示在浏览器的地址栏),并且对发送的信息量也有限制(最多 100 个字符)。在使用 $_GET 变量时,所有的变量名和值都会显示在 URL...
互联网产品经理,和传统行业产品经理本质上的不同在哪里? 本质区别在于思维方式。首先,阐明他们两个在职业属性上的共同点:满足需求。产品经理的工作核心在于挖掘需求后满足需求,在此基础上实现双方共赢。而区别在于满足谁的需求,传统行业产品经理(以下称为A)满足的是客户的需求,他的每一项工作都具有极强的目的性和针对性,换而言之,每个客户的需求得到满 足之后都是需要对产品付费的。于是,在结果导向的驱动下,A...
caffe的原始的loss的英文描述:http://caffe.berkeleyvision.org/tutorial/loss.html点击打开链接由于caffe支持的是有向无环图图的网络结构。所以对于多个损失函数的网络结构也是绝对支持的,文中也说明了这一点:Loss weightsFor nets with multiple layers producing a l
做了也快3年程序员了,算上大学时期的经历,也
Description OIER公司是一家大型专业化软件公司,有着数以万计的员工。作为一名出纳员,我的任务之一便是统计每位员工的工资。这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调整员工的工资。如果他心情好,就可能把每位员工的工资加上一个相同的量。反之,如果心情不好,就可能把他们的工资扣除一个相同的量。我真不知道除了调工资他还做什么其它事情。工资的频繁调整很让员工反...
1 异常信息今天在写 dubbo 文章的时候遇到一个问题,倒是折腾了几分钟,百思不得其解,最后终于发现了。异常信息如下:com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method subscribe in the service com.alibaba.dubbo.registry.RegistryService. Tried...
A页面返回index页面刷新数据onLoad和onShow页面传参解决三种场景一、index页面不需要识别不同入口二、有很多页面“跳转”到B页面,所以onLoad需要接收url传参,识别不同入口。在只有A页面是“返回”的情况,可以固定写法onShow加载this.onLoad({route:'a'})三、如果有多页面“跳转”或“返回”index页面的情...