繁体   English   中英

关于android中的controltransfer设置USB通信的解释

[英]explanation about controltransfer in android to set up the USB communication

我正在尝试编写Java代码,让我的XOOM通过USB转串口电缆与我们的嵌入式设备进行通信。

我使用了这段代码:

connection.controlTransfer(0x21, 34, 0, 0, null, 0, 0);
connection.controlTransfer(0x21, 32, 0, 0, new byte[] { (byte) 0x80,
                                0x25, 0x00, 0x00, 0x00, 0x00, 0x08 }, 7, 0);

我知道这是将设置请求发送到USB设备。 我不明白为什么requestType是0x21,为什么requestID是32,34等。

根据这里的规范: http//www.beyondlogic.org/usbnutshell/usb6.shtml#SetupPacket ,在标准设备请求,标准接口请求和标准端点请求中,requestType都不是0x21而且requestID都没有32或34.这些参数是否有任何解释,包括传输的日期缓冲?

设置包中的第一个字节(bmRequestType)由3个字段组成。 第一个(最低有效)5位是接收者,接下来的2位是类型,最后一位是方向。

如果您的值为0x21,则其二进制表示形式为100001.如果将其拆分为单个字段,则为0 01 00001,对应于主机到设备,类和接口,方向,分别是类型和收件人字段。

所以这是一个控制消息,它被发送到一个特定的接口,由一些标准的usb类定义。

既然你提到这是用于与USB连接到串口适配器,我将假设这可能被发送到通信接口,根据通信设备USB类定义

根据该文档,bRequest值34(0x22)对应于SET_CONTROL_LINE_STATE消息,而32(0x20)对应于SET_LINE_CODING消息(第51和53页),这似乎是串行设置/初始化的一部分设备。

每个消息的详细信息在第57和58页进一步定义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM