2016-03-20 5 views
0

Используя различные обучающие программы, мне удалось подключить свой телефон Android к модулю bluetooth HC-05, подключенному к Arduino. То, что я пытаюсь сделать, это настроить 5 кнопок, которые будут передавать уникальное целое число на кнопку только при нажатии кнопки, иначе они отправят «0», когда кнопка будет отпущена. ergo BUTTON1 посылает «1» при нажатии и «0» при отпускании, BUTTON2 нажимает «2» при нажатии и «0» при отпускании. В настоящее время я не могу понять, как отправлять ЛЮБОЕ данные по соединению. От чтения и просмотра различных учебников я получил небольшое понимание, но, похоже, что-то не хватает.Android отправляет данные в Arduino через Bluetooth

К нижней части моего кода в общедоступном void run(), я установил OnClickListener для одной из моих кнопок, чтобы попытаться отправить ... ну что-то после нажатия, чтобы увидеть, могу ли я послать SOMETHING полезным к Ардуину.

Вот где у меня есть OnClickListener. Я считаю, что я должен отправить «Т» в Ардуино.

pUpBtn.setOnClickListener(new OnClickListener() 

       { 
        @Override 
        public void onClick(View v) { 
         String testr="T:"; 
         byte[] msgBuffer = testr.getBytes(); 
         try { 

          mmOutStream.write(msgBuffer); 
         } catch (IOException e) { 
          e.printStackTrace(); 
         } 
        } 
       }); 
+0

Вместо того, чтобы сбрасывать всю вашу деятельность может сузить код в ваш вопрос к меньшему примеру? – JAL

+0

Извините. Я стараюсь учиться лучше всего, видя все, а не мелкие фрагменты, поскольку обычно в них есть небольшая часть соответствующей информации. Я сузил код до слушателя OnClick. – SkyLine

ответ

0

Первый

В основном согласно вашему требованию, вы не можете использовать onClickListner использовать вместо onTouchListner

Пример

button.setOnTouchListener(new OnTouchListener() { 
@Override 
public boolean onTouch(View v, MotionEvent event) { 
    if(event.getAction() == MotionEvent.ACTION_DOWN) { 
     //send integer value here.(pressed) 
    } else if (event.getAction() == MotionEvent.ACTION_UP) { 
     //Send zero here.(released) 
    } 
} 
}; 

здесь пример кода для отправки и получения данные от bluetoothSPP

этот метод для подключения устройства Bluetooth к удаленному устройству

private void connectToDevice(BluetoothDevice mBTDevice) { 
    try { 
     SPP_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); 

     mBtSocket = mBTDevice.createRfcommSocketToServiceRecord(SPP_UUID); 
     mBtSocket.connect(); 

    } catch (IOException e) { 
     Log.d("connectBT", "while connecting device"); 
     e.printStackTrace(); 

    } catch (Exception e) { 
     e.printStackTrace(); 

    } 
} 

использовать это для отправки байт.

public void send(String data) { 

    byte[] buffer = data.getBytes(); 
    try { 
     mOutputStream = mBtSocket.getOutputStream(); 
     mOutputStream.write(buffer); 
     Log.d("message", data + " sent"); 
    } catch (IOException e) { 
     e.printStackTrace(); 

    } 
} 

использовать эту функцию для отправки Целые

public void send() { 

    byte[] buffer = new bytes[size]; 
      buffer[0]=(byte)'1';//prepare data like this 
      .. 
      .. 
    try { 
     mOutputStream = mBtSocket.getOutputStream(); 
     mOutputStream.write(buffer); 
     Log.d("message", " sent"); 
    } catch (IOException e) { 
     e.printStackTrace(); 

    } 
} 

Надеюсь, это поможет :)

Смежные вопросы