簡體   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