零. 概述

本小节主要介绍下用PC上位机测试蓝牙协议栈功能HFP Profile,包括

拨打电话,挂断电话,接听电话,Audio Transfer,获取通话电话号码,获取本地电话号码,激活语音识别,获取本地号码,获取运营商名字,3GPP指令.

注意:此上位机我已经集成了串口助手功能,所以不需要额外的开串口工具,集串口助手以及协议栈测试一体的工具

使用视频如下:

超级酷炫!!上位机跟蓝牙电话协议栈搭配,实现PC控制手机

一. 声明

本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下:

第一篇:蓝牙综合介绍 ,主要介绍蓝牙的一些概念,产生背景,发展轨迹,市面蓝牙介绍,以及蓝牙开发板介绍。

第二篇:Transport层介绍,主要介绍蓝牙协议栈跟蓝牙芯片之前的硬件传输协议,比如基于UART的H4,H5,BCSP,基于USB的H2等

第三篇:传统蓝牙controller介绍,主要介绍传统蓝牙芯片的介绍,包括射频层(RF),基带层(baseband),链路管理层(LMP)等

第四篇:传统蓝牙host介绍,主要介绍传统蓝牙的协议栈,比如HCI,L2CAP,SDP,RFCOMM,HFP,SPP,HID,AVDTP,AVCTP,A2DP,AVRCP,OBEX,PBAP,MAP等等一系列的协议吧。

第五篇:低功耗蓝牙controller介绍,主要介绍低功耗蓝牙芯片,包括物理层(PHY),链路层(LL)

第六篇:低功耗蓝牙host介绍,低功耗蓝牙协议栈的介绍,包括HCI,L2CAP,ATT,GATT,SM等

第七篇:蓝牙芯片介绍,主要介绍一些蓝牙芯片的初始化流程,基于HCI vendor command的扩展

第八篇:附录,主要介绍以上常用名词的介绍以及一些特殊流程的介绍等。

另外,开发板如下所示,对于想学习蓝牙协议栈的最好人手一套。以便更好的学习蓝牙协议栈,相信我,学完这一套视频你将拥有修改任何协议栈的能力(比如Linux下的bluez,Android下的bluedroid)。

-------------------------------------------------------------------------------------------------------------------------

CSDN学院链接(进入选择你想要学习的课程):https://edu.csdn.net/lecturer/5352?spm=1002.2001.3001.4144

蓝牙交流扣扣群:970324688

Github代码:https://github.com/sj15712795029/bluetooth_stack

入手开发板:https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-22329603896.18.5aeb41f973iStr&id=622836061708

蓝牙学习目录:https://blog.csdn.net/XiaoXiaoPengBo/article/details/107727900

--------------------------------------------------------------------------------------------------------------------------

二. 上位机-蓝牙电话功能介绍

整个通信架构如下:

上位机主要通过UART跟蓝牙开发板通信,用于发送指令给蓝牙开发板,并且用于接收蓝牙开发板的回传状态

上位机-蓝牙电话功能图篇如下:

整个蓝牙电话一共分几个功能区:

① 串口配置区,此部分包括自动侦测热插拔,串口打开,关闭功能,注意波特率是115200,其他数据格式没有开放出来(数据位是8,停止位为1,无奇偶校验)

② 蓝牙功能开启/关闭按钮,后续所有的功能要在蓝牙开启的条件下测试

③ HFP状态信息,包括HFP连接状态,对端的BT mac地址,信号强度显示以及电量显示

④ 部分HFP测试区,包括获取运营商名字,获取本地号码,开启/关闭语音信箱,扩展HFP的3GPP指令获取手机制造商名字,扩展HFP的3GPP指令获取手机组件名称

⑤ 通话信息区测试,包括通话状态显示,通话时间显示,通话号码显示,接听电话,挂断电话,切换音源(Audio Transfer),设置MIC/SPK的印象,通话中键盘号码发送(DTMF)

⑥ 拨打电话号码区

⑦ 串口助手区,包括接收区以及发送区

注意:上位机跟MCU是通过串口指令交互json指令来实现控制以及状态回传的,所以在运行APP的时候需要把Newtonsoft.Json.dll放在跟exe一个路径下,交互指令如下

① 上位机控制MCU的指令如下:

蓝牙测试例程上位机发送给开发板JSON格式
说明 FUNC OPERATE PARAM1 PARAM2 PARAM3 PARAM4 PARAM5 PARAM6
HFP获取运营商名字 BT HFP_NET_N            
HFP Audio Transfer BT BT_AUDIO_TRANSFER            
HFP接听来电 BT HFP_ANSWER            
HFP挂断电话 BT HFP_CALLEND            
HFP通过手机号拨打电话 BT HFP_CALLOUT_PN 电话号码          
HFP获取本机电话号码 BT HFP_LPN            
HFP获取通话电话号码 BT HFP_CLCC            
HFP设置MIC音量 BT HFP_VGM MIC音量值          
HFP设置SPK音量 BT HFP_VGS SPK音量值          
HFP发送通话键盘号 BT HFP_DTMF 键盘号          
HFP开启语音识别功能 BT HFP_VGE            
HFP关闭语音识别功能 BT HFP_VGD            
HFP获取厂商名称 BT HFP_CGMI            
HFP获取手机名称 BT HFP_CGMM            

② MCU回传给上位机的指令如下:

蓝牙测试例程开饭发送给上位机JSON格式
说明 FUNC OPERATE STATUS PARAM1 PARAM2 PARAM3 PARAM4 PARAM5
HFP连接成功 BT BT_CON_RESULT SUCCESS/FAIL HFP 蓝牙地址      
HFP断开成功 BT BT_DISCON_RESULT SUCCESS/FAIL HFP        
HFP SCO连接成功 BT BT_SCO_CON_RESULT SUCCESS/FAIL HFP 蓝牙地址      
HFP SCO断开成功 BT BT_SCO_DISCON_RESULT SUCCESS/FAIL HFP        
HFP信号强度更新 BT BT_HFP_SIGNAL_STRENGTH SUCCESS 信号强度        
HFP漫游状态更新 BT BT_HFP_ROAM_STATUS SUCCESS 漫游状态        
HFP电量状态更新 BT BT_HFP_BATT_LEVEL SUCCESS 电量状态        
HFP运营商名称更新 BT BT_HFP_OPERATOR SUCCESS 运营商名称        
HFP电话状态更新 BT BT_HFP_CALL_STATUS SUCCESS 电话状态        
HFP电话Setup状态更新 BT BT_HFP_CALL_SETUP SUCCESS 电话Setup状态        
HFP本地号码更新 BT BT_HFP_LOCAL_PN SUCCESS 本地号码        
HFP电话号码更新 BT BT_HFP_CALL_PN SUCCESS 电话号码        
HFP厂商名称更新 BT BT_HFP_MANU_ID SUCCESS 厂商名称        
HFP设备名称更新 BT BT_HFP_MODULE_ID SUCCESS 设备名称        

STM32 上位机 测试蓝牙电话功能功能(包括拨打电话/挂断电话/接听电话/Audio Transfer/获取通话电话号码/获取本地电话号码/激活语音识别/获取本地号码/获取运营商名字/3GPP指令)相关推荐

  1. Xamarin.Android实现自动拨打及挂断电话的功能

    目录 1.说明 2.具体实现 2.1 效果 2.2 原理说明 2.3 具体代码实现 2.3.1 layout 2.3.3 广播接收器 2.3.3 拨打电话的Activity 2.3.4 主界面Acti ...

  2. 基于Arduino平台dmp库+匿名四轴上位机测试MPU6050

    基于Arduino平台dmp库+匿名四轴上位机测试MPU6050

  3. 安卓隐藏摄像_【快讯:诺基亚发布三款安卓机;全面屏手机的最终形态,目标是去掉摄像头;iPhone 打电话不息屏或挂断电话后不亮屏是什么问题?】...

    资讯一 [诺基亚发布三款安卓新机:带来了可拆后盖设计] 2月25日,诺基亚在MWC 2019正式召开发布会,发布了诺基亚4.2.诺基亚3.2.诺基亚1 Plus三款全新安卓机型. 其中诺基亚4.2是三 ...

  4. USB HID上位机测试(C#)

    目录 1.基本测试 1.1.通过Bus Hound可以看到设备列表 1.2. 通过API获取到设备接口文件列表​ 1.3.用BUS Hound收发测试 2.C#上位机 2.1.打开设备 报告Repor ...

  5. visual studio STM32上位机开发 LED上位机

    上段时间杂事比较多,没来得及写东西,下面开始记录一下这几天开发的第一个算是比较合格的上位机吧. 首先板子上面使用CH340串口,RX和TX连接PA9和PA10使用usart进行通信,led的端口可以自 ...

  6. mpu6050上位机测试软件设计方法以及源码下载

    硬件:MPU6050传感器模块+Ginkgo 2 I2C Adapter软件:Qt(MinGW 4.4)+Qwt(6.0.2) 效果: 2013-5-21 10:44 上传 下载附件 (82.91 K ...

  7. Android开发教程--自定义接听/挂断电话功能

    1.首先在manifest中加入如下的权限 <uses-permission android:name="android.permission.READ_PHONE_STATE&quo ...

  8. Android获取本机号码及运营商

    import android.content.Context; import android.telephony.TelephonyManager; import android.util.Log;p ...

  9. 上位机软件开发流程是怎样的?上位机开发软件分享

    随着科技的发展, 上位机软件开发已经成为当今社会的一个重要组成部分.上位机软件开发是一种技术,它可以帮助用户更好地控制和管理计算机系统.它可以帮助用户更有效地完成任务,提高工作效率,提高生产力. 上位 ...

  10. 手把手教你编写一个上位机

    关注+星标公众号,不错过精彩内容 转自 | 嵌入式大杂烩 嵌入式开发,基本都会用到有一些上位机工具,比如串口助手就是最常用的工具之一. 那么,今天分享有一篇由ZhengN整理的用Qt写的简单上位机教程 ...

最新文章

  1. SpringBoot开启异步方法
  2. ajax 下拉刷新 上拉加载更多,局部刷新iscroll控件的具体使用(下拉刷新,上拉加载更多)...
  3. MariaDB架构图与执行流程概述
  4. Android应用程序变量
  5. 同一个html页面中两个area,HTML中的map和area标签
  6. 46 CO配置-控制-利润中心会计-创建虚拟利润中心
  7. 网易云音乐ubuntu 18.04下无法打开的解决办法
  8. .net mvc web api 返回 json 内容,过滤值为null的属性
  9. hdu 1025 Constructing Roads In JGShining's Kingdom(DP + 二分)
  10. vb雅西高速计算机考试,雅西高速沿途风貌车拍八
  11. XAF How to: Implement Domain Components(如何实现领域构件)
  12. QuickBI和DataV
  13. stm32系统时钟配置,标准库v3.5
  14. 匿名管道 与 命名管道
  15. excel2013加载matlab宏,Matlab可以通过ActiveX在Excel文件中编写宏吗?
  16. 阿里云 python_阿里云python sdk
  17. FileZilla 无法连接服务器 fzSftp started, protocol_version=11
  18. 第十章-系统故障发生,哪些事务需要重做,哪些事务需要回滚
  19. INFOR ERP LN 创建表
  20. 我们能为别人留下什么?——纪念一位真正的兄长

热门文章

  1. esp8266 从硬件开发到app制作的简单示例
  2. vscode access denied to unins000.exe
  3. Javaweb实现在线预览word文件
  4. 七彩虹平板刷成android,七彩虹I803 Q1平板电脑刷机固件升级教程
  5. Matlab/Simulink怎么输出低版本仿真文件?
  6. 人脸数据库使用授权求助帖
  7. OA协同办公软件评测 —— Tower篇
  8. JQuery-表单验证
  9. VS2017 离线安装包下载
  10. IDM下载---一键安装版