android通过FT311D芯片usb通信

android设备使用usb线通过FT311D芯片与下位机设备进行通信,但是在最后退出程序时,由于fileinputstream.read方法在阻塞,所以无法彻底清除退出,当再一次启动程序与下位机通信时,就是报错。有大神帮忙解答一下么!!!十分感谢!!!

2个回答

最起码得知道错误是什么呀,

qq_35881076
qq_35881076 错误是no such device.错误的原因就是退出程序时read方法仍在阻塞。没有释放资源。关键代码我想办法给你看一下
接近 4 年之前 回复
qq_35881076
qq_35881076 给您私信的,回复了好几次都是失败
接近 4 年之前 回复

关键代码如下:
private class read_thread extends Thread {

    public void run() {
        try {
            while (READ_ENABLE) {

                if (inputstream != null) {
                    try {
                        readcount = inputstream.read(usbdata, 0, 1024);

                    } catch (Exception e) {

                        Log.i("test", "读取异常了" + e.getMessage()+";"+e.getCause());
                        continue;
                    }

                    if (readcount > 0) {// 收到数据了
                        Message msg = new Message();
                        msg.obj = buffer;
                        msg.arg1 = readcount;
                        mHandler.sendMessage(msg);

                        for (int i = 0; i < readcount; i++) {
                            Log.i("test", "接收到第" + i + "位的数据" + buffer.get(i));
                        }
                    } 
                }
            }
        } catch (Exception e) { 
            Log.i("test", "异常了" + e);
        }
        Log.i("test", "while (READ_ENABLE == false)线程结束");

    }
}

public void DestroyAccessory() {

    READ_ENABLE = false;    
    try {
        inputstream.close();
    } catch (Exception e) {
        Log.i("test", "异常"+e.getMessage());
    }
}
qq_35881076
qq_35881076 额。。我电脑没有网,全是手机发的。。。请您多多见谅。我现在面临的问题就是我发的代码那个子线程里的循环跳不出来,您看看能给点建议么??
接近 4 年之前 回复
ngh8897
stevefat 我的意思是看下错误的log 看下,这样我才能根据log 去看看为什么
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐