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

앱에서 아두이노 데이터 전송 에러

0 추천

 
   void sendData(String msg) {
  msg += mStrDelimiter;
  try {
   mOutputStream.write(msg.getBytes());
  } catch (Exception e) {
   Toast.makeText(getApplicationContext(), "데이터 전송 중 오류가 발생했습니다.",
     Toast.LENGTH_LONG).show();
   finish();
  }
 }
  super.onActivityResult(requestCode, resultCode, data);
 }
 
 
 private void showSelectDialog(int requestCode, Intent data){
  String key = "";
  Log.d("test1", key);     //구글음성인식이면
   key = RecognizerIntent.EXTRA_RESULTS; //키값 설정
  
  mResult = data.getStringArrayListExtra(key);  //인식된 데이터 list 받아옴.
  String[] result = new String[mResult.size()];   //배열생성. 다이얼로그에서 출력하기 위해
  mResult.toArray(result);         // list 배열로 변환
  
  //1개 선택하는 다이얼로그 생성
  AlertDialog ad = new AlertDialog.Builder(this).setTitle("선택하세요.")
       .setSingleChoiceItems(result, -1, new DialogInterface.OnClickListener() {
        @Override public void onClick(DialogInterface dialog, int which) {
          mSelectedString = mResult.get(which);  //선택하면 해당 글자 저장
        }
       })
       .setPositiveButton("확인", new DialogInterface.OnClickListener() {
        @Override public void onClick(DialogInterface dialog, int which) {
         mEditReceive.setText(mEditReceive
             .getText().toString()
             + "인식결과 : " + mSelectedString + mStrDelimiter);
         //mEditReceive.setText("인식결과 : "+ mSelectedString);  //확인 버튼 누르면 결과 출력
         
         if(mSelectedString.equalsIgnoreCase("on"))
          sendData("1");
         else if(mSelectedString.equalsIgnoreCase("off"))
          sendData("2");
         else if(mSelectedString.equalsIgnoreCase("auto"))
          sendData("3");
         else if(mSelectedString.equalsIgnoreCase("stop"))
          sendData("4");
         else if(mSelectedString.equalsIgnoreCase("sleep"))
          sendData("5");
         else if(mSelectedString.equalsIgnoreCase("switch"))
          sendData("6");
        }
       })
       .setNegativeButton("취소", new DialogInterface.OnClickListener() {
        @Override public void onClick(DialogInterface dialog, int which) {
         // mEditReceive.setText("");  //취소버튼 누르면 초기화
         mSelectedString = null;
        }
       }).create();
  ad.show();
 }

   public void clickLayout(View v) {   
     int id = v.getId();       
     LinearLayout layout = (LinearLayout)findViewById(id);        
     Intent it = null;    
   
     switch(id) {  
   case R.id. onnn:    
            sendData("7");

     case R.id.info :    
           it = new Intent(MainActivity.this, information.class);  
           this.startActivity(it);  
           break;
             case R.id.quit :    
              finish();
         
             case R.id. offf:    
              sendData("2");
         }
     }
 }

다른건 다 정상동장하는데 해당부분만 에러가 발생하네요.(빨간색)

수신측 아두이노에서 확인시 11이라고 중복된 값이 뜨고 정상 동작을 하지 않습니다. 바로 위에 on 동작시 senddata1은 정상동작 하는데요.

그렇다고 아두이노 변수를 11로 바꿔봐도 인식이 안된다고 에러가 뜨고. 왜이렇게  중복으로 보내지는 에러가 날까요??

송신측에서 뭔가 수신측과 전송속도를 안맞춰서 그런건지..;; 다른건 되는데 이거 하나만 안되는게 애매하네요.

다른 변수도 동시에 들어간다고 찍히더라도 잘 되는데 말이죠.(ex offf는 정상동작)

설과제 (120 포인트) 님이 2015년 5월 24일 질문
아, 11이라고 해놨는데 1써놓으면 11 가고 7써놓으며 ㄴ77가고 변수 바꿔도 수신측 인식에는 문제가 있더군요.

1개의 답변

0 추천

 case R.id. onnn:
sendData("7");

break; <---------------------- 브레이크는 안쓰시는지요?

             안쓰면 밑에것도 수행 할것인데요

case R.id.info :
it = new Intent(MainActivity.this, information.class);
this.startActivity(it);
break;


case R.id.quit :
finish();

case R.id. offf:
sendData("2");
}

 

 

--------------------------------

doridori2013@nate.com

익명사용자 님이 2015년 5월 24일 답변
너 돈 받고 잠적하고 사기치고 다닌다며,
왜이렇게 또 열심히 활동하니? 돈 떨어졌니?
답변 열심히하는 건 좋은데,
이메일은 지우고하고,
행여 다른사람들 한테 개별 연락 받아서 등쳐먹을 생각은 하지마라.
일이 필요하면 구인구직란에 올려.
...