gpt4 book ai didi

java - 关于android中controltransfer设置USB通信的说明

转载 作者:搜寻专家 更新时间:2023-10-30 21:02:54 28 4
gpt4 key购买 nike

我正在尝试编写 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 ,在标准设备请求、标准接口(interface)请求和标准端点请求中,requestType没有一个是0x21,requestID没有一个是32或34。这些参数包括传输的datebuffer有解释吗??

最佳答案

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

如果你有一个值 0x21,它有 100001 的二进制表示。如果你把它分成单独的字段,这是 0 01 00001,它对应于主机到设备、类和接口(interface),对于分别是方向、类型和收件人字段。

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

既然你提到这是为了与 USB 转串口适配器通信,我假设这可能被发送到通信接口(interface),根据 USB Class Definitions for Communication Devices

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

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

关于java - 关于android中controltransfer设置USB通信的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10467846/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com