从InStream读取的Android从未解决(无数据读取,无崩溃)

时间:2011-08-07 23:25:23

标签: android stream

我在这里有一个设备可以发送状态请求命令,然后我用

读取它

bytes = mmInStream.read(statusBuffer);

虽然它改变了它的状态但我遇到了麻烦。有时我会恢复当前状态,有时程序将挂在该行上而不做其他任何事情。它不会崩溃,移动到下一行或任何东西。我只能通过关闭设备和切断连接继续前进。

我们这里有一个黑莓火炬根本没有这个错误所以它必须是我的代码。

有人可以给我一些故障排除提示吗?下面是读取设备当前状态的while循环。

    while (true) {

            getStatus();

            try {
                    bytes = 0;
                    while(bytes < 1){

                        bytes = mmInStream.read(statusBuffer);


                        if (bytes != 0){
                            response = new String(statusBuffer);
                                            //Handle response code
                            }

                        }   
                    }
                } catch (Exception e) {
                    Log.e(TAG, "disconnected FROM WHILE TRUE LOOP", e);
                    connectionLost();
                    break;
                }
    }

1 个答案:

答案 0 :(得分:0)

如果没有可用的字节,则读取返回-1,您错过了比较并继续循环。

如果你的行以\ n char结尾,那么通过BufferedReader读取它会容易得多。无论如何,你的循环设计不是很好。

DO    {        //读取字节        //将结果存储在byteRead

  //if( byteRead != -1 )
  //build a string

} //做    while(byteRead!= -1)

此致  斯特凡