极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 19518|回复: 0

请教关于HC05蓝牙速传模块中间无法传输数据的问题

[复制链接]
发表于 2016-7-20 23:16:04 | 显示全部楼层 |阅读模式
最近在着手攻坚无人机的基于Arduino蓝牙模块与手机间的通信的技术点。本来一切都已经非常顺利了,可以实现了我需要的数据在手机和蓝牙模块间的传输,然后利用Arduino模块作为MCU进行数据的处理。但是最近新出现了一个问题,说明如下,急求各路大神帮忙:

在手机蓝牙与基于Arduino扩展出来的蓝牙模块进行连接(这里应该不算是配对)后,开始一段时间内,手机与模块间的通信一切正常,可以完全正确且完整地接收到手机传来的数据,但是在过了一段时间后,不知道为何,Arduino模块接收不到手机经蓝牙传来的数据了,检查了配对连接,手机app程序执行情况一切都是正常的,也就是说,从手机通过蓝牙发送数据、信道的存在性等方面,至少表面上看都是正常的,如果需要重新恢复,则需要完全断开连接后重新连接两个模块,才能恢复到最开始的正常情况。

时间非常紧迫,我现在连问题可能出在哪都没思路了,更别提解决问题了,所以急求论坛内各路大神帮忙指一条明路,万分感谢!

下面附上手机app通过蓝牙发出信息的一段代码:

/*这是一个连接按钮,通过点击,可以实现手机蓝牙与在Arduino上扩展的蓝牙模块的连接*/
    private class ConnectButtonListener implements OnClickListener {
        public void onClick(View v) {
            if (adapter != null) {
                //Toast.makeText(myContext, "本机支持蓝牙功能!", Toast.LENGTH_SHORT).show();
                if (!adapter.isEnabled()) {
                    //如果蓝牙设备不可用的话,创建一个intent对象,该对象用于启动一个Activity,提示用户启动蓝牙适配器
                    Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
                    startActivity(intent);
                }

                Set<BluetoothDevice> devices = adapter.getBondedDevices();
                if (devices.size() > 0) {
                    for (Iterator iterator = devices.iterator(); iterator.hasNext(); ) {
                        BluetoothDevice device = (BluetoothDevice) iterator.next();
                        Toast.makeText(myContext, device.getAddress(), Toast.LENGTH_SHORT);
                        Log.d("Bondedtag", device.getAddress());
                        Log.d("Bondedtag", device.getName());

                        if (connect_result) {
                            break;
                        }

                        UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
                        try {
                            bluetoothSocket = device.createRfcommSocketToServiceRecord(uuid);
                            bluetoothSocket.connect();
                            Log.d("mytag", "Connected!");
                            Toast.makeText(myContext, "已连接", Toast.LENGTH_SHORT).show();
                            connect_result = true;
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
                adapter.startDiscovery();
            } else {
                Toast.makeText(myContext, "本机不支持蓝牙功能!", Toast.LENGTH_SHORT).show();
            }
        }
    }




    /*这是一个Android里的进度条,模拟飞机的油门推杆,当进度条被改变时获取改变后的值,然后通过蓝牙发送给Arduino扩展的蓝牙模块*/
    private OnSeekBarChangeListener verticalSeekBarChangeListener = new OnSeekBarChangeListener() {

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {

        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {

        }

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            verticalText.setText(Integer.toString(progress) + "%");
            Youmen = Integer.toString(progress) + "*";
            //Log.v("stop", "Conn!");
            //发送更新后的数据
            try {
                if (adapter.isEnabled() == false) {
                    Toast.makeText(myContext, "蓝牙未开启!", Toast.LENGTH_SHORT).show();
                    Log.v("stop", "Unopened!");
                } else if (connect_result == false) {
                    Toast.makeText(myContext, "蓝牙未连接,请重试!", Toast.LENGTH_SHORT).show();
                    Log.v("stop", "Unconnected!");
                } else {
                    /*下面就是通过蓝牙模块发送data变量的数据了*/
                    String data = Youmen;//+percent+"*"+angle+"*";
                    byte b[] = data.getBytes();
                    OutputStream outputStream = bluetoothSocket.getOutputStream();
                    outputStream.write(b);
                    Log.v("status","Send!");
                    Log.v("stop", "Connected!");
                }
            } catch (IOException e) {
            }
        }
    };

只需各路大神看看,然后提出自己的想法,觉得可能是哪里有问题或者不稳定即可,不一定要解决方案,急!万分感谢!!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-28 21:03 , Processed in 0.038876 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表