2011-08-07 17 views
0

私は私がステータス要求コマンドを送信することができ、ここでデバイスを持って、その後、私はそれがAndroidの読み込みがstatusBuffer((データが、何のクラッシュを読まない)

バイト= mmInStream.readを使用して読んで解決されることはありません);

ステータスが変わったときに問題が発生しました。時々私は現在の状態を取り戻すでしょう、プログラムがその行にぶら下がり、何もしません。クラッシュしたり、次の行に移動したりすることはありません。私は、デバイスの電源を切って接続を切断することによってのみ進めることができます。

ここには私のコードでなければならないこのエラーが全くないブラックベリートーチがあります。

トラブルシューティングのヒントを教えていただけますか?以下は、デバイスの現在のステータスを読み取る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; 
       } 
    } 

答えて

0

利用可能なバイトがない場合は、-1の読み取りによって返され、あなたの比較を欠場、あなたがループに行きます。

行が\ n文字で終わっている場合は、たとえばBufferedReaderで読みやすくなります。とにかく、あなたのループはあまりうまく設計されていません。

行う// 一方(byteRead!= -1)

よろしく、 ステファン

を{//バイト //はbyteRead

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

に結果を格納する読み取り}行います

+0

あなたのコードが動作していないので、いくつかのログ情報で読み込みをラップしました: Log.i(TAG、 "WHILE LOOP:About aboutバイト ")。 \t \t \t \t \t bytes = mmInStream.read(statusBuffer); \t \t \t \t \t Log.i(TAG、 "WHILE LOOP:" + Integer.toString(bytes)+ "bytes"); しかし、私は問題に遭遇したときにその2番目のログには決してしないので、-1かどうかをチェックすることはできません。 – Bryan

+0

そして、バッファを埋めるのではなく、1バイトを読み込むとどうなりますか? – Snicolas

+0

同じことが起こりました。私はbyteRead = mmInstream.read()を試しました。また、1バイトのバッファと同じ結果を見た。 – Bryan

関連する問題