2013-03-20 28 views
3

我使用官方驱动从http://www.ftdichip.com/Android.htm官方FTDI的Android驱动程序的read()不工作

03-20 13:37:52.359:WARN/FTDI(4453):阅读开始

03 -20 13:37:52.359:WARN/FTDI(4453):37::可用

03-20 13 6个字节57.960:WARN/FTDI(4453):0字节读

03-20 13: 37:57.960:WARN/FTDI(4453):阅读完成

这样做的源代码很简单:

public int read(byte[] buffer, int timeout) throws IOException { 
    Log.w(TAG, "read starting"); 
    try {    
     Log.w(TAG, device.getQueueStatus() + " bytes available"); 
     int read = device.read(buffer); 
     Log.w(TAG, read + " bytes read"); 
     return read; 
    } finally { 
     Log.w(TAG, "read finished"); 
    } 
} 

他们的支持部门没有回复我,甚至一个星期后。我在Android 4.0.4上使用Arduino Duemilanove基于ftdi的电路板。

+0

任何代码如何调用此'读'功能?什么是缓冲区?什么是设备? – RvdK 2013-03-20 08:18:17

+0

看到上面的代码(byte [] buffer = new byte [1024],所以它似乎没问题)。它是三星galaxy tab2 10.1(android ICS),另一个usb lib工作正常(包括read())。但它没有所有必要的功能,所以我更喜欢官方驱动程序,但工作 – 4ntoine 2013-03-20 08:20:15

回答

3

是的,我做到了..

遵循这一以读取输入数据:

  1. 开盘后调用restartInTask()
  2. 获取可用输入读取字节前
  3. 只读可用字节数> 0

工作代码片段:

public int read(byte[] buffer, int timeout) throws IOException { 
     params.setReadTimeout(timeout); 
     Log.w(TAG, "read starting"); 
     try { 
      int available = device.getQueueStatus(); 
      Log.w(TAG, available + " bytes available"); 

      if (available <= 0) 
       return 0; 

      int read = device.read(buffer, available, timeout); 
      Log.w(TAG, read + " bytes read"); 
      return read; 
     } finally { 
      Log.w(TAG, "read finished"); 
     } 
    } 
+0

我意识到这是一个老问题,但我有一个类似的问题(请参阅我的问题:http://stackoverflow.com/questions/ 22985558/FTDI-D2XX-Android的Java的未读)。但是,您的解决方案对我无效。 – Bovaz 2014-04-10 14:30:37

相关问题