我一直致力于开发一个Android应用程序,它将作为基于Arduino的Digispark开发板的主机。该板的一个问题是它没有专用的USB控制器,而是使用低速USB总线的软件实现。
话虽这么说,当我将Digispark连接到我的Droid Bionic时,我能够在我自己的应用程序中使用枚举,也可以通过使用USB主控制器应用程序来查看设备。这似乎是战斗的一半。
我现在坚持的是以下内容。当我连接Digispark并尝试运行我的应用程序时,枚举会返回多个设备匹配相同的VID和PID。我不知道它是如何可能的,但这里是我的代码示例和我得到的输出:
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.");
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组合的软件问题,还是因为我的软件技能不佳而出错?