【问题标题】:Cannot Read Bytes from an FTDI Serial I2C to Android Eclipse Java app无法从 FTDI 串行 I2C 读取字节到 Android Eclipse Java 应用程序
【发布时间】:2014-02-01 17:50:24
【问题描述】:

我有一个 FTDI UMFT201XB(I2C 串行 USB 接口)通过 OTG 电缆连接到 android 4.2 平板电脑。 FTDI 连接到 PIC MCU。我已经从 FTDI 运行了示例 TN-147,并且设备被正确识别。

我已修改 TN-147 示例以读取 MCU 已发送到 UMFT201XB 的 12 个字节。

代码是:

public void ReNew() {
        byte [] databuf = new byte[5] ;
        byte [] databuf1 = new byte[20];
        device_time=0;
        databuf1[0]= 0x64;
        databuf1[2]= 0x64;
        databuf[0]= 0x09;


        if(ftdid2xx.createDeviceInfoList(Device_ControlFragmentContext) <= 0)
            return;
        ftDevice = ftdid2xx.openByIndex(Device_ControlFragmentContext, 0);

        if (ftDevice == null) {
            Toast.makeText(Device_ControlFragmentContext, "Not supported device",Toast.LENGTH_SHORT).show();
            } else {
                //ftDevice.setLatencyTimer((byte)240);
                ftDevice.purge((byte) (D2xxManager.FT_PURGE_TX | D2xxManager.FT_PURGE_RX));
                ftDevice.setBitMode((byte)0x33 , (byte)0x20);
                iavailable1 = ftDevice.getQueueStatus();
                ftDevice.write(databuf , 1);
                ftDevice.restartInTask();
                iavailable2 = ftDevice.getQueueStatus();
                lenght_ = ftDevice.read(databuf1,iavailable2);
                iavailable3 = ftDevice.getQueueStatus();
                ftDevice.setBitMode((byte)0x32 , (byte)0x20);
                ftDevice.close();

                device_time=databuf1[0]+databuf1[1]+databuf1[2]+databuf1[3]+databuf1[4]+databuf1[5]+databuf1[6]+databuf1[7]+databuf1[8]+databuf1[9]+databuf1[10]+databuf1[11]+databuf1[12]+databuf1[13]+databuf1[14]+databuf1[16]+databuf1[17]+databuf1[18]+databuf1[15]+databuf1[19];
                DEVICE_TIME.setText(String.valueOf(device_time));
                days_view.setText(String.valueOf(iavailable1));
                hours_view.setText(String.valueOf(iavailable2));
                minutes_view.setText(String.valueOf(iavailable3));
                seconds_view.setText(String.valueOf(lenght_));
                SYSTEM_TIME.setText(String.valueOf(593));
        /////////////////////////////////////////////////////////////////////////////////           
    }
    ftDevice.close();

    }

我的问题是在执行时,device_time = 200 (dec)iavailable1 = 00iavailable2 = 12(Dec)iavailable3 = 12(Dec)

显然,200 来自

databuf1[0]= 0x64;
databuf1[2]= 0x64; 

ftDevice.read(databuf1,iavailable2) 不获取任何字节到databuf1。并且可用字节仍然是12(Dec) (iavailable3 = 12)。

请帮忙。

【问题讨论】:

    标签: android i2c ftdi d2xx


    【解决方案1】:

    我遇到了类似的问题。尝试将读取部分移动到不同的线程。当我将FT_Device 传递给读取字节的AsyncTaskdoInBackground() 方法时,它对我有用。

    【讨论】:

      猜你喜欢
      • 2020-04-24
      • 1970-01-01
      • 2015-09-18
      • 2021-12-28
      • 1970-01-01
      • 2012-01-19
      • 1970-01-01
      • 1970-01-01
      • 2014-10-28
      相关资源
      最近更新 更多