Android 消息处理程序未向TextView传递数据
这个问题的标题可能不正确,因为我假设这就是问题所在。我对Java和Android都是新手,已经为此奋斗了好几天 我试图通过FTDI电缆、usb to go和Android设备连接到ECU(非OBD-2) 我已经基于FTDI网站上显示的示例,使用他们的AndroidD2xx.jar库、示例代码并阅读了他们的文档 我遇到的问题是TextView“dataView”根本没有更新。事实上,下面的一行显示了一个错误:“未使用局部变量dataView的值”-TextView追加行由于位于单独的线程中而未被看到?或者这可能向我表明我对消息处理程序的实现可能不正确或类似 除此之外,来自ECU的数据预计为十六进制格式,最初精确为6字节。所以我问题的第二部分是如何在文本视图中将十六进制信息显示为字符串格式的十六进制Android 消息处理程序未向TextView传递数据,android,textview,hex,android-handler,ftdi,Android,Textview,Hex,Android Handler,Ftdi,这个问题的标题可能不正确,因为我假设这就是问题所在。我对Java和Android都是新手,已经为此奋斗了好几天 我试图通过FTDI电缆、usb to go和Android设备连接到ECU(非OBD-2) 我已经基于FTDI网站上显示的示例,使用他们的AndroidD2xx.jar库、示例代码并阅读了他们的文档 我遇到的问题是TextView“dataView”根本没有更新。事实上,下面的一行显示了一个错误:“未使用局部变量dataView的值”-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);
}
}
}
}
TextView数据视图=(TextView)findViewById(R.id.dataView);
-----------------------------------------------------------
最终处理程序=新处理程序(){
@凌驾
公共无效handleMessage(消息消息消息){
如果(iavailable>0){
append(String.copyValueOf(readDataToText,0,iavailable));
}
}
};
------------------------------------------------------------
公共类readECUThread扩展线程{
汉德勒;
readECUThread(处理程序h){
mHandler=h;
this.setPriority(Thread.MIN_PRIORITY);
}
@凌驾
公开募捐{
int i;
试一试{
睡眠(50);
}捕捉(中断异常e){
}
已同步(ftDev){
iavailable=ftDev.getQueueStatus();
如果(iavailable>0){
如果(IAAvailable>readLength){
iavailable=读取长度;
}
ftDev.read(readData,iavailable);
对于(i=0;i
在我最初发布的代码的第1行中,这是一个简单而愚蠢的错误:
TextView dataView = (TextView) findViewById(R.id.dataView);
应该是:
dataView = (TextView) findViewById(R.id.dataView);
Eclipse并没有将此视为一个错误,所以它让我挠头了一段时间。现在,我将数据输入到TextView字段,但字符非常奇怪(可能是韩语,因为它是三星手机?)。您是否尝试过设置消息的对象。在执行mHandler.sendMessage(msg)之前,类似msg.obj=readDataToText的内容;然后在handleMessage methodNo hoomi中阅读它,不知道具体怎么做,所以复习了一些教程,希望我能解决它。