Android-USB与FTDI芯片和d2x驱动程序的通信

Android-USB与FTDI芯片和d2x驱动程序的通信,android,usb,ftdi,Android,Usb,Ftdi,我正在开发一个android(android 4.2)项目,在该项目中,我从通过usb连接的设备读取数据。在连接的传感器板上,我有一个FTDI芯片组,所以我使用他们的d2xx驱动程序 从一开始一切正常:我可以通过usb连接获取数据并进行处理。我在运行于和AsyncTask的循环中执行此操作,在该循环中,我将采集命令写入传感器板,以告知其采集数据。一旦接收到所有数据,就会对其进行处理。然后,采集命令再次写入传感器板,并采集和处理新数据 但是,过了一段时间(似乎不是固定时间),设备无法从传感器板读取

我正在开发一个android(android 4.2)项目,在该项目中,我从通过usb连接的设备读取数据。在连接的传感器板上,我有一个FTDI芯片组,所以我使用他们的d2xx驱动程序

从一开始一切正常:我可以通过usb连接获取数据并进行处理。我在运行于和
AsyncTask
的循环中执行此操作,在该循环中,我将采集命令写入传感器板,以告知其采集数据。一旦接收到所有数据,就会对其进行处理。然后,采集命令再次写入传感器板,并采集和处理新数据

但是,过了一段时间(似乎不是固定时间),设备无法从传感器板读取任何其他数据。请注意,这里的传感器板没有故障,因为我已经能够使用在笔记本电脑上运行的程序执行相同的处理,对其进行彻底测试

如果在我的应用程序无法接收数据时,我检查我总是找到的DDMS日志,则会显示以下调试消息:

Tag: extractReadData::
Text: written != totalData, written= 16384 totalData=196
(文本中的数字并不总是相同的)。 及

在这些消息之后,除了看到结束的几个处理线程的日志外,我得到的唯一日志(重复并直到我停止应用程序)是:

在正常操作期间,我从应用程序的不同部分(采集、数据处理等)接收日志消息,但一旦我收到报告的消息,这些消息就不再出现

我知道,当我通过USB连接进行通信时,特别是当我执行写入命令(向传感器板发送获取和发送某些数据的命令)时,在正常操作过程中会出现标记为
UsbRequestJNI
的日志消息。因此,在收到这两条消息后,我的应用程序似乎无法写入传感器板

我不知道另外两条消息是从哪里来的。我最好的猜测是,它们要么来自d2xx FTDI驱动程序,要么来自某个底层USB主机库

谁能帮我理解:

  • 这两条消息的来源是什么
  • 出现的原因
  • 如何解决导致它们的问题
非常感谢任何一位能够参与进来的人

最好的, Matteo

我后来发现(通过与FTDI的支持团队讨论),我所面临的问题是由Android FTDI驱动程序中的bug引起的。关于线程中的锁。
截至今天(2014年10月22日),这些漏洞尚未解决。此外,类似的错误也会影响Windows CE7 ARM版本的驱动程序

Tag: ProcessBulkIn::
Text Buffer is full, waiting for read....
Tag: UsbRequestJNI
Text: init