【问题标题】:How to identify the address of endpoint in "USB to 4-Port Serial"?如何识别“USB to 4-Port Serial”中的端点地址?
【发布时间】:2018-06-27 08:31:34
【问题描述】:

我正在使用 Android Studio 为 Pico i.MX7Dual 开发板上的 Android Things 目标进行编程。 我有一个 USB 串行转换器(“USB 到 4 端口串行”),我想与每个串行端口进行通信。 我尝试使用 USB Host API 列出设备:

UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
HashMap<String, UsbDevice> deviceList = manager.getDeviceList();
Iterator<UsbDevice> deviceIterator = deviceList.values().iterator();
while(deviceIterator.hasNext()){
    UsbDevice device = deviceIterator.next();
    Log.d("USBList",device.toString());
}

我在 Logcat 中获得了它:

D/USBList: UsbDevice[mName=/dev/bus/usb/001/005,mVendorId=38672,mProductId=30784,mClass=255,mSubclass=0,mProtocol=255,mManufacturerName=null,mProductName=null,mVersion=2.0,mSerialNumber=null,mConfigurations=[
UsbConfiguration[mId=1,mName=null,mAttributes=160,mMaxPower=50,mInterfaces=[
UsbInterface[mId=0,mAlternateSetting=0,mName=null,mClass=255,mSubclass=0,mProtocol=255,mEndpoints=[
UsbEndpoint[mAddress=129,mAttributes=2,mMaxPacketSize=512,mInterval=255]
UsbEndpoint[mAddress=2,mAttributes=2,mMaxPacketSize=512,mInterval=255]
UsbEndpoint[mAddress=131,mAttributes=2,mMaxPacketSize=512,mInterval=255]
UsbEndpoint[mAddress=4,mAttributes=2,mMaxPacketSize=512,mInterval=255]
UsbEndpoint[mAddress=133,mAttributes=2,mMaxPacketSize=512,mInterval=255]
UsbEndpoint[mAddress=6,mAttributes=2,mMaxPacketSize=512,mInterval=255]
UsbEndpoint[mAddress=135,mAttributes=2,mMaxPacketSize=512,mInterval=255]
UsbEndpoint[mAddress=8,mAttributes=2,mMaxPacketSize=512,mInterval=255]
UsbEndpoint[mAddress=137,mAttributes=3,mMaxPacketSize=16,mInterval=5]]]]

如果我理解的话,我必须通过 UsbInterface 与 UsbEndpoint 通信,但我只有 4 个串行端口但获得了 9 个 UsbEndpoint。

所以我不知道接下来要做什么来识别与之通信的好的 UsbEndPoint。

提前致谢。

【问题讨论】:

    标签: android android-studio serial-port usb android-things


    【解决方案1】:

    Android Things Peripheral I/O API 支持大多数 USB 串行转换器,因此我建议您首先检查一下您的转换器是否在外围设备列表下显示为 UartDevice

    PeripheralManager.getInstance().getUartDeviceList()
    

    设备通常会以USB1-1:1.0 之类的名称命名。

    如果此子系统不支持您的设备,那么您可能需要深入研究 USB API。让我们进一步解码您的端点描述符输出。您的设备有 8 个“批量”类型的端点 (mAttributes=2) 和一个中断类型的端点 (mAttributes=3)。批量端点为每个串行通道配对(一个用于输入,一个用于输出)。您需要阅读每个端点的方向值才能确定(未打印在日志中)。它们的列出顺序很可能表明每个频道的配对。

    然后,您需要联系您的 USB 设备制造商,并找到描述他们用于传输数据的协议的数据表。设备/接口类都是0xFF (255),意思是“厂商特定”。从本质上讲,这意味着它们不符合标准 USB 设备类,需要提供有关协议的文档。

    【讨论】:

      猜你喜欢
      • 2021-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-20
      相关资源
      最近更新 更多