2016-04-19 17 views
0

Arduino HC-05からAndroidにフロートデータを送信しようとしています。データを受け取るための私のアンドロイドコードはArduino HC-05 BluetoothからAndroidにデータを送信する正しい方法は何ですか?

byte buffer[]; 
      buffer = new byte[2048]; 
      int bytes = dataInputStream.read(buffer); 
      if(bytes > 0) { 
       String message = new String(buffer, 0, bytes); 
       Log.i(TAG, "listen: " + message); 
      } 

です。私はバイトバッファを解析してフロートに戻すことができません。私はグーグルを試みたが、助けはしなかった。誰かが私に間違っていることを教えてもらえますか?

これ以降に得られる文字列は、疑問符を含む未知の文字です。

私Aurdinoコード内の下

:私が得る

double duration, distance,FrontSensor,LeftSensor; 

のボイドループ() {

SonarSensor(trigPinFront, echoPinFront); 
FrontSensor = distance; 
if(FrontSensor > 30) { 
    FrontSensor = FrontSensor/30; 
    BTserial.write(FrontSensor); 
Serial.println(FrontSensor); 
} 
delay(1000); 

}

出力は次のとおりです。 私が使用するOutput I get

答えて

0

代わりに次のコード:

//create new class for connect thread 
    private class ConnectedThread extends Thread { 
     private final InputStream mmInStream; 
     private final OutputStream mmOutStream; 


    //creation of the connect thread 
    public ConnectedThread(BluetoothSocket socket) { 
     InputStream tmpIn = null; 
     OutputStream tmpOut = null; 

     try { 
      //Create I/O streams for connection 
      tmpIn = socket.getInputStream(); 
      tmpOut = socket.getOutputStream(); 
     } catch (IOException e) { } 

     mmInStream = tmpIn; 
     mmOutStream = tmpOut; 
    } 

    public void run() { 
     byte[] buffer = new byte[256]; 
     int bytes; 

     // Keep looping to listen for received messages 
     while (true) { 
      try { 
       bytes = mmInStream.read(buffer);   //read bytes from input buffer 
       String readMessage = new String(buffer, 0, bytes); 
       // Send the obtained bytes to the UI Activity via handler 
       bluetoothIn.obtainMessage(handlerState, bytes, -1, readMessage).sendToTarget(); 
      } catch (IOException e) { 
       break; 
      } 
     } 
    } 
    //write method 
    public void write(String input) { 
     byte[] msgBuffer = input.getBytes();   //converts entered String into bytes 
     try { 
      mmOutStream.write(msgBuffer);    //write bytes over BT connection via outstream 
     } catch (IOException e) { 
      //if you cannot write, close the application 
      Toast.makeText(getBaseContext(), "Connection Failure", Toast.LENGTH_LONG).show(); 
      finish(); 

      } 
     } 
    } 

これは、私がArduinoからBluetooth情報を取得するために働いています! :)

EDIT: Arduinoの使用中doubleto文字列から値を変換するには:

dtostrf(floatVar, minStringWidthIncDecimalPoint, numVarsAfterDecimal, charBuf);

+0

入力ストリームを使用してバッファから読み込み値を取得しようとしています。私は文字列の入力を正しく取得します。浮動小数点数や整数データを送信すると、疑問符でランダムな文字に変換されます – vipulsodha

+0

私は浮動小数点数もintegrersも使用し、正しい変数を取得する前にコードを使用しています。 – Alvaro

+0

私は出力。 – vipulsodha

0

これは役に立つかもしれません。

int charsRead = 0; 
char[] buffer = new char[BUFFER_SIZE]; 
while (mRun) 
{ 
    charsRead = in.read(buffer); 
    serverMessage = new String(buffer).substring(0, charsRead); 
     if (serverMessage != null && mMessageListener != null) { 
      Log.e("RESPONSE FROM SERVER", "S: Received Message: '" + serverMessage + "'"); 
     } 
    serverMessage = null; 
} 
+0

が動作しません。私が得意な奇妙な出力。 – vipulsodha

+0

出力を教えてもらえますか? –

+0

http://i.stack.imgur.com/5szPn.png – vipulsodha

関連する問題