练提琴的工程师 2016-07-21 13:08 采纳率: 0%
浏览 2874

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

最近在着手攻坚无人机的基于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) {
        }
    }
};

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

  • 写回答

1条回答 默认 最新

  • zqbnqsdsmd 2017-03-05 15:48
    关注
    评论

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站