4

我一直在开发一个 Android 应用程序,它将作为基于 Arduino 的Digispark开发板的主机。该板的问题之一是它没有专用的 USB 控制器,而是使用低速 USB 总线的软件实现。

话虽如此,当我将 Digispark 连接到我的Droid Bionic时,我可以在我自己的应用程序中使用枚举以及通过使用 USB 主机控制器应用程序来查看设备。这似乎是成功的一半。

我现在坚持的是以下内容。当我连接 Digispark 并尝试运行我的应用程序时,枚举会返回多个匹配相同VIDPID的设备。我看不出这是怎么可能的,但这是我的代码示例和我得到的输出:

代码

UsbDevice anyDevice;
while(deviceIterator.hasNext()){
    anyDevice = deviceIterator.next();
    if(anyDevice.getVendorId() == 5824 && anyDevice.getProductId() == 1503){
        device = anyDevice;
        Log.d(TAG, "vid and pid " + anyDevice.getVendorId() + " " + anyDevice.getProductId());
        Log.d(TAG, "? " + anyDevice.getDeviceName());
        Log.d(TAG, "? " + anyDevice.getDeviceId());
        Log.d(TAG, "? " + anyDevice.getInterface(0).getEndpoint(0));
        Log.d(TAG, "DIGI FOUND");
    }
}
Log.i(TAG," No more devices connected.");

Eclipse 日志输出

03-28 19:32:40.773: D/USBTest(6228): vid and pid 5824 1503
03-28 19:32:40.773: D/USBTest(6228): ? /dev/bus/usb/003/003
03-28 19:32:40.773: D/USBTest(6228): ? 3003
03-28 19:32:40.773: D/USBTest(6228): ? UsbEndpoint[mAddress=129,mAttributes=3,mMaxPacketSize=8,mInterval=10]
03-28 19:32:40.773: D/USBTest(6228): DIGI FOUND
03-28 19:32:40.773: D/USBTest(6228): vid and pid 5824 1503
03-28 19:32:40.773: D/USBTest(6228): ? /dev/bus/usb/003/005
03-28 19:32:40.773: D/USBTest(6228): ? 3005
03-28 19:32:40.773: D/USBTest(6228): ? UsbEndpoint[mAddress=129,mAttributes=3,mMaxPacketSize=8,mInterval=10]
03-28 19:32:40.773: D/USBTest(6228): DIGI FOUND
03-28 19:32:40.773: D/USBTest(6228): vid and pid 5824 1503
03-28 19:32:40.773: D/USBTest(6228): ? /dev/bus/usb/003/015
03-28 19:32:40.773: D/USBTest(6228): ? 3015
03-28 19:32:40.773: D/USBTest(6228): ? UsbEndpoint[mAddress=129,mAttributes=3,mMaxPacketSize=8,mInterval=10]
03-28 19:32:40.773: D/USBTest(6228): DIGI FOUND
03-28 19:32:40.773: I/USBTest(6228):  No more devices connected.

这是 Digispark 和 Android 组合的软件问题,还是由于我糟糕的软件技能而导致的错误?

4

0 回答 0