Android USB Host 与 HID 之通讯方法
Android USB Host与HID通讯,就目前Google Developer提供的方法有bulkTransfer()与controlTransfer(),看是简简单单的两个方法,要实现真正的通讯可谓要难倒一大片android开发者,至少对于我一开始就是这样,这对和我一样不懂HID及外设等底层通讯原理的人更是一个头两个大,况且不同的HID具体通讯机制也不同,因设备而异。
先不管其他,先仔细看看bulkTransfer()与controlTransfer()方法吧,个人觉得google Developer给出的资料太少,没啥详细说明,初一看简单,真正一用才知道问题一大堆。。
1),bulkTransfer(UsbEndpoint endpoint, byte[] buffer, int length, int timeout):
功能:Performs a bulk transaction on the given endpoint.没什么说的google原版解释,执行一个bulk transaction在我们给定的端点;
参数:endpoint,OUT or IN(Host to Device用OUT,Device to Host 用IN);
buffer ,你将要发送/接收的指令或数据,当endpoint为OUT,buffer为你定义好的指令或数据,将下发给device,当endpoint为IN,buffer则是一个容器,用来存储device返回的应答指令或数据,此时一定要注意buffer的大小,以足够存储所有的数据;
length ,即发送/接收指令或数据的大小;
timeout ,即指令或数据的最长通讯时间,在通讯出现问题时,若超时还未通讯完成,视为通讯失败;
说明:此方法还算好,按照正常操作定义好4个参数,都可以正常实现,重点是对与不同设备进行bulkTransfer()的组合使用,指令下发次序和数据接收处理等问题,这些在此先不详谈,有时间下次再详细~~
2),controlTransfer(int requestType, int request, int value, int index, byte[] buffer, int length, int timeout)
功能:Performs a control transaction on endpoint zero.说直白点就是零点传输执行一个control transaction,即所有的通讯都是通过endpoint 0;
参数:requestType,request type for this transaction
request ,request ID for this transaction
value ,value field for this transaction
index ,index field for this transaction
buffer ,同bulkTransfer()
length ,同bulkTransfer()
timeout ,同bulkTransfer()
说明:此方法个人而言,难点在7个参数,特别是前四个参数,google能给出的针对各参数的具体说明少,到现在都还不太确定,所以前四个参数都只给出google的原解释。requestType可以确定是USB_ENDPOINT_DIR_MASK其中包含USB_DIR_OUT和USB_DIR_IN两种类型,而对于request,value,index,没有具体详细,我试了很多种情况,也看了下样例和在网上看了些他人的资料,至今未能完全弄懂,求分享,求扩散中~~
下面是曾经学习摸索中的写法,不知错对,请赐教。。
controlTransfer(UsbConstants.USB_TYPE_MASK, UsbConstants.USB_DIR_OUT, 0, 0, CMD, CMD.length, 5000);
PS:这阵子的Android HID学习开发有一段时间,也有些成就,目前已能进行通讯,但仍在进一步研究中,接下来我会抽时间先总结记录这段时间的一些知识。。
Android USB Host 与 HID 之通讯方法的更多相关文章
- Android USB Host 与 HID 之通讯方法(bulkTransfer()与controlTransfer()方法使用)
转载地址:差满多乃几 Android USB Host与HID通讯,就目前Google Developer提供的方法有bulkTransfer()与controlTransfer(),看是简简单单的两 ...
- Android USB Host与HID通讯 (二)
不好意思,从上一篇到现在确实比较忙,中间又外出了一段时间,虽然也上LOFTER,或者看到一些朋友QQ上加我,给我发信息询问,有些看到了有些可能没看到,偶尔回复了一两个,也不咋的详细,在此我想说,一方面 ...
- Android USB Host与HID通讯 (一)
去年9月份来到现在的公司,接到新公司的第一个项目就是Android USB Host与HID通讯,当时也什么都不懂,就拿着google的api 开发指南 (http://developer.andro ...
- Android USB Host与HID通讯
前端时间捣鼓一个HID的硬件, 需要和android通信, 网上搜索了一圈,收获不小. 比较好的文章是: Android USB Host与HID通讯 Android Service创建US ...
- Android USB Host 与 Hid 设备通信bulkTransfer()返回-1问题的原因
近期一直在做Android USB Host 与USB Hid设备(STM32FXXX)的通信,遇到了很多问题.项目源码以及所遇到的其他问题可以见本博客其他相关文章,这里重点讲一下bulkTransf ...
- 翻译Android USB HOST API
翻译Android USB HOST API 源代码地址:http://developer.android.com/guide/topics/connectivity/usb/host.html 译者 ...
- android usb Host模式下与usb Hid 设备的通信
做android 与USB HID设备的通信有段时间了,总结一下遇到的问题和解决方法: 1,第一次遇到的问题:android 版本低不支持usb hid, 被要求做相关项目的时候,就从mUsbMana ...
- Android USB Host 通信程序
换到了一家新公司,于是就有了新的项目.这次的项目 要用Android SDK与USB HID设备进行通信.第一次接触Android SDK,以及USB,记录下源程序.开发过程以及一些心得. 首先,要感 ...
- android usb host 读写USB设备
自android3.1以后android增加了操作USB设备的API. 官网地址:http://developer.android.com/guide/topics/connectivity/usb/ ...
随机推荐
- SQL server 的约束条件【转】
SQLServer - 约束 一.约束的分类 在SQLServer中,有3种不同类型的约束. 1.实体约束 实体约束是关于行的,比如某一行出现的值就不允许出现在其他行,例如主键. 2.域约束 域约束是 ...
- java多线程总结四:volatile、synchronized示例
1.synchronized保证同步 先看一个生成偶数的类 <span style="font-size:16px;">package demo.thread; /** ...
- ###Linux基础 - 3
点击查看Evernote原文. #@author: gr #@date: 2014-10-15 #@email: forgerui@gmail.com 一.GCC编译程序 在Windows下使用Vis ...
- JS代码大全 (都是网上看到 自己整理的)
事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture(); event. ...
- js和jq使用submit方法无法提交表单
昨天,在做一个表单异步提交内容的时候,遇到很奇怪的问题,submit()方法无法进行提交,每次提交都是把 当前给刷新了,网络抓包发现,每次都是 get方式去获取 当前页面,完全没有post 请求,想着 ...
- 文本框限制输入类型<input>的输入框
最近在开发完一个项目后,又测试人员测试bug,然后我根据他们测试出来的bug一个一个的改,然后就遇到了一个问题,文本框是用来搜索,但是,比如这个文本框是用来搜索年龄的区间,输入条件的时候,如果输入了非 ...
- How to Change Password Complexity Requirements in Windows XP
Original Link: http://www.ehow.com/how_4812793_password-complexity-requirements-windows-xp.html#ixzz ...
- 使用Class.getResource和ClassLoader.getResource方法获取文件路径
自从转投Java阵营后,一直发下Java程序的路径读取异常麻烦,因此查阅了比较多的版本内容,整合了一份自己的学习笔记.主要使用Class及通过ClassLoader来动态获取文件路径. 查阅链接如下: ...
- 转载 shell sort
http://blog.sina.com.cn/s/blog_6d09b5750100x6zg.html 首先是shell排序实现多列排序,这里添加竖线以作分割,如下文件test: a|gggg|4| ...
- JS中判断JSON数据是否存在某字段的方法 JavaScript中判断json中是否有某个字段
方式一 !("key" in obj) 方式二 obj.hasOwnProperty("key") //obj为json对象. 实例: var jsonwor ...