Android controlTransfer 参数解析
最近在做Android和pl-2303的通信试验,作为USB host功能的应用,必须要用到android.hardware.usb的内容,USB设备的识别、监测试验是很简单,有很多的资料可以借鉴。但是对于实现USB和pl-2303通信的部分讲的不是很清楚,我也是花了很长的时间在寻找资料。其中最重要的就是配置pl-2303的波特率、停止位、校验位和数据位个数,为了找到设置的方法我反编译了我在网上下载的“Free串口终端.apk”和prolific 公司提供的“pl2303Driver.jar”。慢慢的我发现我的重心集中到了controlTransfer()上,一开始我总是以为prolific公司没有提供具体的资料介绍怎样给pl2303编程,后来我发现其实这是USB协议里的标准。
controlTransfer的参数有requestType、request、value、index、buffer、length和timeout。
其中比较难于理解的是前四个:
- requestType设置的是通信的方向,pl-2303的设置中常见的设置值有:33,64,192
- request设置的是访问的类型,pl-2303的设置中常见的设置值有:32,06,1
- value根据不同的请求而设置不同的值,一般就是传送参数给设备标明这是什么请求。在GET_DESCRIPTOR获取设备描述符里,它的值是00 01。在GET_DESCRIPTOR里这个字段的低字节表示描述符的索引,高字节表示描述符的类型,高字节的类型如下
index可将请求专属星系传递给设备,有两个字节。典型的应用是传递索引或者诸如接口或端点号的偏移量.举例在程序中见到的设置:
connection.controlTransfer(33,32,0,0,portseting,7,100);
本文由 创作,采用 知识共享署名4.0 国际许可协议进行许可。本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为: 2020/09/15 10:21