2016-05-15 3 views
2

私はArduinoからAndroidデバイスにスローされたデータを読み込むコードを作成しました。それはこのように書きます:アンドロイドでRunnable内の条件を作成する

public void run() { 
     byte[] buffer = new byte[1024]; 
     int bytes; 
     final StringBuilder readMessage = new StringBuilder(); 
     while (true) { 
      try { 
       bytes = connectedInputStream.read(buffer); 
       final String string_now = new String(buffer, 0, bytes); 
       readMessage.append(string_now); 
       // final int finalBytes = bytes; 
       runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
         tvBPM.setText(string_now); 
         readMessage.setLength(0); 
        } 
       }); 
      } catch (IOException e) { 
       Toast.makeText(getApplicationContext(),"Connection Lost!",Toast.LENGTH_LONG).show(); 
      } 
     } 
    } 

このコードは、私の "ThreadConnectedがスレッドを拡張するプライベートクラスの内部に位置している

今string_nowによって保持された値が数値です。私はそこに格納されている値が150より大きいか50より小さいかどうかをユーザーに伝えたいと思います。私が試したコードですが、完全には機能しません。

runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        final int getValue = Integer.getValue(Integer.parseInt(string_now)); 
        if (getValue > 150 || getValue < 50) { 
         Toast.makeText(getApplicationContext, "Unstable", Toast.LENGTH_SHORT).show(); } 
        else { 
        tvBPM.setText(string_now); 
        readMessage.setLength(0); } 
       } 
      }); 

どのように私はこの仕事をすることができますか?ありがとうございました。

+2

を本当に有用な情報はない「完全には動作しません」。あなたは、あなたが期待しているものと実際に何が起こっているのかについてより多くの情報を提供できます –

+0

このコードは、作成したプロトタイプからのtvBPMの心拍数の値を表示します。これで、tvBPMに表示されている値が条件を満たすかどうかをチェックします(if else文)。現在のところ、私はStartボタンを押した後にアプリケーションを閉じるだけで、runOnUiThread()コードを含むスレッドを指示します。私の悪い英語のために申し訳ありません – KCX

答えて

1
bytes = connectedInputStream.read(buffer); 
final String string_now = new String(buffer, 0, bytes); 

このコードは、それがArrayIndexOutOfBoundsException、または何を与えて、ゴミの表示を開始する時期ピアが、接続を閉じた後も永遠に実行されます。

if (bytes == -1) 
{ 
    break; 
} 

catchブロックの後に次のよう:あなたはそれらの2行の間に、次の欠けている

finally 
{ 
    try 
    { 
     connectedInputStream.close(); 
    } 
    catch (IOException exc) 
    { 
     // whatever ... 
    } 
} 
+0

私は参照してください。しかし、上の2つのコードを削除しました。なぜなら、arduinoがオンに切り替えられている間にすべての値をキャッチするはずだからです。しかし、それを指摘してくれてありがとう。 – KCX

+0

Arduinoが切断された後は何も捕まえられません。 'キャッチ'する価値はありません。再接続するか、ピアが再接続するまで待つ必要があります。 – EJP

関連する問題