作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 FTDI UMFT201XB(I2C 串行 USB 接口(interface))通过 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 = 00
、iavailable2 = 12(Dec)
,以及iavailable3 = 12(十二月)
。
很明显,200来自
databuf1[0]= 0x64;
databuf1[2]= 0x64;
ftDevice.read(databuf1,iavailable2)
不会将任何字节提取到 databuf1
。并且可用字节仍然是 12(Dec)
(iavailable3 = 12
)。
请帮忙。
最佳答案
我遇到了类似的问题。尝试将读取部分移动到不同的线程。当我将 FT_Device
传递给 AsyncTask
的读取字节的 doInBackground()
方法时,它对我有用。
关于android - 无法从 FTDI 串行 I2C 读取字节到 Android Eclipse Java 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21501424/
我是一名优秀的程序员,十分优秀!