Android通过蓝牙向Arduino发送数据

时间:2016-03-20 20:33:28

标签: java android bluetooth arduino-uno

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

在public void run()的代码底部,我已经为我的一个按钮设置了一个OnClickListener来尝试发送...好一些东西一旦被按下,看看我是否可以发送SOMETHING有用Arduino。

这是我有OnClickListener的地方。我相信我应该向Arduino发送“T”。

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

1 个答案:

答案 0 :(得分:1)

<强>第一

基本上根据您的要求,您不能使用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发送和接收数据的示例代码

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

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

    }
}

希望这会有所帮助:)