本文主要介绍在使用汇承4.0蓝牙BLE串口助手HC-COM,通过手机向蓝牙模块发送数据、或者通过手机向与蓝牙模块连接的单片机发送指令时,串口中断函数的编写方法及出错的原因和改正方法

   我们怎么把指令发送出去,以及单片机是如何实现接收的呢?,这就要通过串口中断来实现了,大多数单片机的串口例程或者汇承给的资料包里的例程都会给出类似下面给的一个串口中断的参考代码,但是它是有问题的,对于HC-COM来说,是不能正常工作的
void Com_Int(void) interrupt 4
{uchar receive_data;EA = 0;if(RI == 1) //当硬件接收到一个数据时,RI会置位{       RI = 0;receive_data = SBUF;//接收到的数据if(receive_data == '1')     {LED =0;//接收到1亮灯}else{LED =1; //其他情况灯灭}}SBUF=receive_data;//将接收到的数据放入到发送寄存器while(!TI);           //等待发送数据完成TI=0;                        //清除发送完成标志位        EA = 1;
}
    按照上面的代码,当我们利用手机上的app HC-COM向单片机发送1的的时候,接收的数据receive_data=1,此时呢LED应该等于0,也就是LED会被点亮,但是实际上它只会闪一下,这就说明,我们通过HC-COM发送1的时候,单片机先接收到我们发的1,之后又接收到其他的信息,在上面的程序中,我们让单片机把接收到的信息又通过蓝牙模块发送给手机,利用HC-COM进行显示,如下图所示:
    乍一看,我们发送1的时候,只返回了一个1 ,发送0的时候,只返回了一个0,那单片机接收的其他信息是从何而来的呢?,为啥手机没有显示返回的其他信息呢?对此我进行了大量的实验,最终发现这个app,它一次发送实际上是发送20位,什么意思呢? 当我们输入一个1点击发送的时候,它实际上发送的是1000 0000 0000 0000 0000,也就是说当我们输入的数据的位数不足20位时它会自动补零,这就解释了为什么LED灯不会常亮,只会闪一下,因为在接收完我们发送的1后,它又接收了19个0,把这20个数据返回我们手机上的时候,它这个app把它补得这19个0又以空格的格式进行显示,而不是显示0(有点坑)。
    为了让LED常亮,我们需要输入20个1,如上图所示,也就是不给它补零的机会。这种方法呢用起来十分的不方便,可能个别有耐心的朋友也能接受,但是如果我们要通过HC-COM发送指令,实现对小车的遥控,也就说需要我们快速的输入指令,这种方法是不行的,怎么办呢?,对大部分人了说不具备修改这个app的能力,那么只能修改单片机的接收和发送函数了,因此我把上面的串口中断函数进行了简单的修改,如下:
void Com_Int(void) interrupt 4
{EA = 0;   if(RI == 1) //当硬件接收到一个数据时,RI会置位{ LED=0;RI = 0;receive_data = SBUF;//接收到的数据if(receive_data!=0)receive_real_data=receive_data;SBUF=receive_real_data;//将接收到的数据放入到发送寄存器while(!TI);           //等待发送数据完成TI=0;                        //清除发送完成标志位}EA = 1;
}
    只有接收到的数据不为0时,才赋值给新的变量receive_real_data,我们通过判断receive_real_data的值,来控制LED或者小车,而不是直接用接收到的值receive _data,同样我们返回到手机的数据,也改为receive_real_data。这样我们只需要发送一位的 1、2、3、4、5、6、7、8、等就可以了,用起来很方便。
 switch(receive_real_data) { case '1': xxx; break; case '2':xxx; break; case '3': xxx; break; case '4':xxx; break; case '5': xxx; break; case '6': xxx; break; case '7':xxx; break; case '8': xxx; break; }
    上面代码中的XXX代表,你要单片机去执行的任务或者在接收到相关指令后的反应
    若想了解如何利用手机,通过蓝牙模块实现对小车的控制可以参考如下博文:

    详细介绍如何从零开始制作51单片机控制的智能小车(四)———通过蓝牙模块实现数据传输以及通过手机蓝牙实现对小车运动状态的控制

   点击以上蓝色字体即可跳转。
或者直接访问如下网址: https://blog.csdn.net/qq_44339029/article/details/106562519

汇承4.0蓝牙BLE串口助手HC-COM的使用方法及出错的原因和改正方法相关推荐

  1. 20220728使用电脑上的蓝牙和汇承科技的蓝牙模块HC-05配对蓝牙串口传输

    20220728使用电脑上的蓝牙和汇承科技的蓝牙模块HC-05配对蓝牙串口传输 2022/7/28 11:27 电脑:DELL Vostro 3888,WIN10系统 五.蓝牙模块如何与电脑连接(从模 ...

  2. Android 蓝牙BLE串口通信之高低位转换、16进制字符串转换float浮点型

    蓝牙技术的普及与发展,为传统设备提供了一种低成本无线通信的方式.串口作为一种使用广泛的通信接口,通过串口转蓝牙,进行无线通信传输的需求逐渐展现出来. 蓝牙串口模块是嵌入式设备上的常用模块,它可以方便地 ...

  3. 无人机蓝牙图传串口助手APP(地面端、飞机端)

    这个APP是在2016年11月底-12月初开发的,现在想把这项目开源共享给有需要的开发者参考!源码有需要请留言联系本人,由于本项目属于公司项目,不能完全开源出来,只提供部分技术支持!请谅解! 由于地面 ...

  4. android 蓝牙ble调试助手,Android蓝牙调试助手源码分享

    package com.example.android.BluetoothChat; /** * 描述:蓝牙服务核心类 */ import java.io.IOException; import ja ...

  5. 惠惠购物助手android版3.8.2无法安装的原因及解决方法

    今天在android手机上安装惠惠购物助手最新版(3.8.2)的时候,提示安装失败.期初,还以为自己手机有问题,但是安装了几个软件都正常之后判断原因出在app上. 调试错误信息 打开android s ...

  6. c语言错误lnk2001,vc6.0 LNK2001错误原因及改正方法

    学习VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于编程者来说,最好改的错误莫过于编译错误, 而一般说来发生连接错误时,编译都已通过.产生连接错误的原因非常多,尤其LNK2001错 ...

  7. C#实现笔记本自带蓝牙与汇承HC-08(BLE)蓝牙模块通讯

    汇承HC-08蓝牙C#通讯 目录 问题背景 感谢 BLE介绍 参考代码 参考业务逻辑 参考库和例程 程序思路 难点介绍 问题1平台和windows sdk 的组件 问题2优化速度和更改同步 问题3蓝牙 ...

  8. Unity与汇承HC-02蓝牙串口模块通讯

    概述 本来以为用Unity开发蓝牙功能非常简单,但是实际上去测试的时候才发现,还是有不少问题的.Unity中蓝牙通讯插件基本上也都是是用于安卓和ios系统的,但是现在的需求是要和HC-02蓝牙串口模块 ...

  9. 20220727使用汇承科技的蓝牙模块HC-05配对手机进行蓝牙串口的演示

    20220727使用汇承科技的蓝牙模块HC-05配对手机进行蓝牙串口的演示 2022/7/27 18:55 Android11:摩托罗拉 motorola edge s 6GB+128GB 骁龙870 ...

最新文章

  1. DOM对象与jquery对象有什么不同
  2. daterangepicker 使用方法总结
  3. easyUI 运用窗口和form表单制作导出功能
  4. 与詹金斯一起将GitLab中的Gradle项目发布到Artifactory
  5. 【数据库】一篇文章搞懂数据库隔离级别那些事(LBCC,MVCC)
  6. [转载] python strptime函数转时间数组_python—时间与时间戳之间的转换
  7. MessageDialog MessageDialogPage
  8. 读书笔记:普林斯顿微积分读本
  9. 基于小波Block-Thresholding的降噪方法
  10. RFB Net 笔记
  11. Facebook登陆SDK接入(Android)
  12. 蓝桥杯精选赛题系列——统计数字
  13. Centos 7 安装 jq json 插件以及使用方法
  14. GitHub上受欢迎的Android UI Library
  15. 从零开始学java(二十六)--多维数组,多维数组存储表格数据
  16. Mac的最新版本JDK下载失败的解决方法
  17. 通过FinalShell打通ssh隧道
  18. 谷物调节肠道菌群,促进代谢健康
  19. 长春理工大学第八届电子设计大赛 之 信号发生器
  20. 产品从无到有的完整工作流程

热门文章

  1. 离散型均匀分布 连续型均匀分布
  2. 游戏开发中道具一键合成思路,多级别道具合成,采用递归方法,简单高效。
  3. 腾讯云存储产品全线升级,满足更多高性能存储场景
  4. Mysql.索引存储结构演进(面试一次搞定)
  5. 一切没你想象那么糟,让你瞬间开心的30件小事
  6. 游戏服务器 数据同步方案
  7. 《和沐阳一起学POST+JS逆向》视频教程
  8. Java中关于UTM转经纬度
  9. maven 打包错误:Please refer to xxx\target\surefire-reports for the individual test results.
  10. Scratch编程-画图模块13【寿光市青少年创意编程大赛真题】