2016-03-20 91 views
0

使用各种教程,我设法将我的Android手机连接到连接到Arduino的HC-05蓝牙模块。我想要做的是设置5个按钮,只有当按钮按下时才会传输每个按钮的唯一整数,否则当按钮被释放时它们将发送“0”。 ergo BUTTON1按下时发送“1”,释放时发送“0”,BUTTON2按下时发送“2”,发布时发送“0”。目前,我无法弄清楚如何通过连接发送任何数据。从阅读和观看各种教程,我已经获得了一个小小的理解,但似乎缺少一些东西。Android通过蓝牙向Arduino发送数据

在我的代码的公共void run()的底部,我已经为我的按钮之一设置了一个OnClickListener来尝试发送...以及一旦它的按下,只是为了看看我可以发送SOMETHING有用到Arduino。

这里是我的OnClickListener。我相信我应该发送“T”给Arduino。

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) 
    } 
} 
}; 

这里是用于发送和接收的示例代码数据来自蓝牙SPP

此方法是蓝牙设备连接到远程设备

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(); 

    } 
} 

希望这有助于:)

相关问题