消息处理程序不将数据传递给TextView

时间:2014-08-22 14:22:55

标签: android textview hex android-handler ftdi

这个问题的标题可能不正确,因为我假设这是问题所在。我是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);
                }
            }

        }
}

1 个答案:

答案 0 :(得分:0)

在我最初发布的代码的第一行中,这是一个简单的愚蠢错误:

TextView dataView = (TextView) findViewById(R.id.dataView);

应该刚刚:

dataView = (TextView) findViewById(R.id.dataView);

Eclipse没有把它当作一个错误,所以它让我挠了一会儿。我现在获取数据到TextView字段,但是非常奇怪的字符(可能是韩文,因为它是三星手机?)。