마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 아두이노 블루투스 연결 문제

0 추천
private class SocketThread extends Thread {

  private final BluetoothSocket mmSocket;
  private InputStream mmInStream;
  private OutputStream mmOutStream;

  public SocketThread(BluetoothSocket socket) {

   mmSocket = socket;

   try {

    mmInStream = socket.getInputStream();
    mmOutStream = socket.getOutputStream();

   } catch (IOException e) {

    showMessage("Get Stream error");

   }

  }

  public void run() {

   byte[] buffer = new byte[1024];

   int bytes;

   while (true) {

    try {

     bytes = mmInStream.read(buffer);
     
     String strBuf = new String(buffer, 0, bytes);

     System.out.println("CHECK: " + strBuf);

     // showMessage(strBuf);

     SystemClock.sleep(1);

    } catch (IOException e) {

     showMessage("Socket disconneted");

     break;

    }

   }

  }

안녕하세요 안드로이드와 아두이노를 블루투스를 통해 값을 받아오는 과정에서 문제가 생겨 질문드립니다.

아두이노에서 두개의 센서를 활용해 각각의 값을 안드로이드에 전송하려는데, 만약에 "AAA35.62" (AAA는 각각의 센서값을 구분하기 위해 넣은 문자 값입니다.)이 값을 보내면 안드로이드에서 받아보니, 어쩔 때는 "AAA" 어쩔때는 "36.52" 이값만 또는 아예 값이 애매하게 잘린 .52 이렇게 값이 들어옵니다. 제대로 "AAA35.62"이렇게 받아오고 싶을 때는 어떻게 해야하나요?

 

아두이노에서 안드로이드로 값을 보낼때는

bluetooth.println("AAA"+ String(value)); delay(1000) 이렇게 보냈습니다.

위의 소스는 값을 받아오는 안드로이드 소스 부분입니다.

strbuf 값이 아두이노에서 받아오는 것인데요.. 왜 이런 문제가 생기는지 모르겠습니다.

 

 

 

 

 

SuperPro (860 포인트) 님이 2015년 6월 6일 질문

1개의 답변

0 추천
아두이노에서 데이터 보낼때 정수부데이터, 소수점 이하부분 데이터를 나눠서 변수에 저장한 다음에

 

println("AAA"+정수부+String(".")+소수점이하부분)이렇게 보내세요

 

참고로 정수부랑 소수점 이하부분은 int형으로 선언해서 보내도 상관없습니다

어차피 println에서 알아서 string형으로 변환해서 보내줍니다.
안상훈 (180 포인트) 님이 2015년 6월 6일 답변
...