3

我正在使用来自http://www.ftdichip.com/Android.htm的官方驱动程序

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

03-20 13:37:52.359: WARN/FTDI(4453): 6 个字节可用

03-20 13:37: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 的板。

4

1 回答 1

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");
        }
    }
于 2013-03-23T14:37:46.280 回答