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

标签 android usb ftdi

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

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

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

如果我去检查 DDMS 日志,当我的应用程序无法接收数据时,我总是会发现以下调试消息:

Tag: extractReadData::
Text: written != totalData, written= 16384 totalData=196

(文本中的数字并不总是相同)。 并且

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

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

Tag: UsbRequestJNI
Text: init

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

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

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

谁能帮我理解:

  • 这两条消息的来源
  • 出现的原因
  • 如何解决导致这些问题的问题

非常感谢任何可以参与的人。

最好, 马泰奥

最佳答案

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

关于Android - 与 FTDI 芯片和 d2xx 驱动程序的 USB 通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24457495/

相关文章:

android - 矢量图像在 Android 中显示错误

android - android中的Edittext验证错误消息?

javascript - 如何通过单击ReactJS网页上的按钮通过USB发送一些位?

linux - 如何找到连接usb设备的dev路径?

Java - USB 弹出后应用程序是否仍然运行

使用 linux 命令行进行 FTDI eeprom 编程

java - JD2XX Java FTDI 库 - 我可以从哪里获取它?

android - Android NDK 编译库

java - 有没有办法让我的应用程序等待从 Firebase 检索数据,然后再继续代码?

c++ - Thorlabs APT 入门