【发布时间】:2014-06-27 17:19:23
【问题描述】:
我正在开发一个 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 主机库。
谁能帮我理解:
- 这两条消息的来源
- 出现的原因
- 如何解决导致它们的问题
非常感谢任何可以参与的人。
最好, 马特奥
【问题讨论】: