这个问题的标题可能不正确,因为我假设这是问题所在。我是Java和Android的新手,并且已经在这方面苦苦挣扎了好几天。
我正在尝试通过FTDI线,usb-to-go和Android设备连接到ECU(非OBD-2)。
我的大部分代码都基于FTDI网站上显示的示例,使用他们的Android D2xx.jar库,示例代码和阅读他们的文档。
我遇到的问题是TextView“dataView”根本没有更新。事实上,以下行显示错误:“未使用局部变量dataView的值” - 由于TextView追加行位于单独的线程中而未被看到?或者这可能告诉我,我的消息处理程序的实现可能是不正确的或类似的东西?
除此之外,来自ECU的数据预计为十六进制格式,最初精确为6个字节。所以我的问题的第二部分是如何在textView中以字符串格式显示十六进制信息?
TextView dataView = (TextView) findViewById(R.id.dataView);
-----------------------------------------------------------
final Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (iavailable > 0) {
dataView.append(String.copyValueOf(readDataToText, 0, iavailable));
}
}
};
------------------------------------------------------------
public class readECUThread extends Thread {
Handler mHandler;
readECUThread(Handler h) {
mHandler = h;
this.setPriority(Thread.MIN_PRIORITY);
}
@Override
public void run() {
int i;
try {
Thread.sleep(50);
} catch (InterruptedException e) {
}
synchronized (ftDev) {
iavailable = ftDev.getQueueStatus();
if (iavailable > 0) {
if (iavailable > readLength) {
iavailable = readLength;
}
ftDev.read(readData, iavailable);
for (i = 0; i < iavailable; i++) {
readDataToText[i] = (char) readData[i];
}
Message msg = mHandler.obtainMessage();
mHandler.sendMessage(msg);
}
}
}
}
答案 0 :(得分:0)
在我最初发布的代码的第一行中,这是一个简单的愚蠢错误:
TextView dataView = (TextView) findViewById(R.id.dataView);
应该刚刚:
dataView = (TextView) findViewById(R.id.dataView);
Eclipse没有把它当作一个错误,所以它让我挠了一会儿。我现在获取数据到TextView字段,但是非常奇怪的字符(可能是韩文,因为它是三星手机?)。