因为几天我处理混乱的USB问题。我的Android(4.2)应用程序应该连接USB设备,使用USB HID中断协议发送/接收数据。从Android到设备的数据发送工作完美,但我收到适当的数据时遇到了很多问题。主要应用基于3个任务:主任务(UI),USB接收任务和USB传输任务。 USB的任务有单独的队列来插入接收数据(接收器)或获取来自主任务的发送(发送者)数据。我试图嗅探通过USB传输的数据(使用Android虚拟机和Windows USB分析器),一切看起来都不错,但Android只接收零(有时会收到另一个预期值)。
这是我的读写代码 - 两者都在单独的Runnable实例中运行:
public boolean writeRawData(UsbDeviceConnection connection, UsbRequest request, ByteBuffer buffer, int bufsize)
{
if (request.queue(buffer, bufsize) == true)
{
return true;
}
return false;
}
public ByteBuffer readRawData(UsbDeviceConnection connection, UsbRequest request, ByteBuffer buffer, int bufsize)
{
if (request.queue(buffer, bufsize) == true)
{
if (connection.requestWait() == request)
{
//deal with received data -> almost always wrong!
}
}
return null;
}