【问题标题】:Android sending data to Arduino via BluetoothAndroid 通过蓝牙向 Arduino 发送数据
【发布时间】:2016-03-20 20:33:28
【问题描述】:

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

在我的公共 void run() 代码的底部,我为我的一个按钮设置了一个 OnClickListener 以尝试发送......好吧,一旦按下它只是为了看看我是否可以发送一些有用的东西阿杜诺。

这里是我的 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();
                        }
                    }
                });

【问题讨论】:

  • 您可以将问题中的代码缩小到一个更小的示例,而不是倾倒您的整个活动?
  • 很抱歉。我倾向于通过查看所有内容而不是小sn-ps来学习最好,因为通常在其他部分有一些相关信息。我将代码缩小到有问题的 OnClick 侦听器。

标签: java android bluetooth arduino-uno


【解决方案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();

    }
}

希望这会有所帮助:)

【讨论】:

    猜你喜欢
    • 2013-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多