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学习开发有一段时间,也有些成就,目前已能进行通讯,但仍在进一步研究中,接下来我会抽时间先总结记录这段时间的一些知识。。

最新文章

  1. ios批量打包
  2. constant
  3. PAT (Basic Level) 1001害死人不偿命的(3n+1)猜想 (15)
  4. [每日一题] OCP1z0-047 :2013-08-15 描述GROUPING 函数 .......................................43
  5. 关于在R中无法引用自己的xml文件
  6. iOS文档序列化(对象归档)
  7. 【52ABP实战教程】00-- ASP.NET CORE系列介绍
  8. SQLServer 基础
  9. GDI+ 读取jpg图片每个像素的值
  10. cf478d 线性dp好题
  11. sqlserver查询父子级关系
  12. Android Studio 发布 APK
  13. CSS中字体响应式的设置
  14. ifconfig命令详情
  15. 使用python开发一个能够计算带括号的复杂表达式的计算器(只支持加减乘除)
  16. asp.net返回值当文件下载问题
  17. Bootstrap按钮组学习
  18. javascript遍历json对象数据的方法
  19. Django的url别名功能的使用
  20. UNITY把3D模型显示在UI层级上的思路

热门文章

  1. 批量转换word文档到pdf文件
  2. for循环例题
  3. iOS类似QQ好友展开和合并列表的实现代码
  4. iOS开发——极光推送
  5. Golang中解析json,构造json
  6. Android SDK下载技巧
  7. QT 常用设置
  8. mysql基本知识
  9. preg_match_all, preg_match
  10. 使用WebClient上传文件并同时Post表单数据字段到服务端