LOFTER for ipad —— 让兴趣,更有趣

点击下载 关闭

应用截图

差满多乃几

差满多乃几

 

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

差满多乃几

功能说明

1. 独立查看“差满多乃几”发布在LOFTER的所有文章
2. 文章更新通知提醒
3. 归档方式查看
4. 方便的分享文章到微信、微博

创建一个属于自己的APP

本应用由UAPP生成,内容版权归作者所有。UAPP支持LOFTER、网易博客、新浪博客、百度空间、QQ空间、blogbus、豆瓣日记、点点网、搜狐博客、网易摄影等生成个人应用。

了解更多

联系我们|招贤纳士|移动客户端|风格模板|官方博客|侵权投诉 Reporting Infringements|未成年人有害信息举报 0571-89852053|涉企举报专区
网易公司版权所有 ©1997-2024  浙公网安备 33010802010186号 浙ICP备16011220号-11 增值电信业务经营许可证:浙B2-20160599
网络文化经营许可证: 浙网文[2022]1208-054号 自营经营者信息 工业和信息化部备案管理系统网站 12318全国文化市场举报网站
网信算备330108093980202220015号 网信算备330108093980204230011号