赞
踩
本小节主要介绍下用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 | 设备名称 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。