VID app具有一个修改当前与其连接的蓝牙设备名称的功能,以添加一些设备个性化的元素。

修改蓝牙设备的名称并不是一件困难的事情,按照手册规定的AT指令通过串口发送到蓝牙设备即可。不过手机要通过蓝牙连接的无线通信方式来修改蓝牙设备的名称,则并不简单。原因在于:手机发送的遵循AT指令格式的数据会被蓝牙当作普通数据内容而传送到单片机;

蓝牙设备处于连接的状态下,AT指令并不能完成对设备名称的修改。

解决办法:必须由单片机通过串口来进行AT指令的操作;

App发送携带有用户输入的自定义名称信息的命令给单片机;然后自动取消蓝牙连接;

单片机在解读手机发来的命令后,通过AT指令将蓝牙设备的名称修改为用户所输入的名称。

当中遇到了一个问题,使耗费了两天:

在确保单片机程序的正确性之后,

iOS源代码如下:

-(void) setDevice_Name {

[self Bluetooth_Send : command ]; //发送带有用户输入的自定义名称信息的命令command;

if ( sensor.activePeripheral.state == CBPeripheralStateConnected) { //判定是否为连接状态

[sensor.manager cancelPeripheralConnection : sensor.activePeripheral ] ; //取消连接

Sensor.activePeripheral = nil;

}

}

Ps:蓝牙连接及其它相关操作的代码直接引用了蓝牙模块供应商提供的例程,所以不必提供上来了。

现象是:成功修改蓝牙设备名称的机率极低!

跟踪单片机程序的运行发现:单片机并没有收到手机端发来的命令。

在修改代码之后,代码大意如下:

-(void)setDevice_Name {

[self Bluetooth_Send : command ]; //发送带有用户输入的自定义名称信息的命令command;

[NSTimer scheduledTimerWithInterval : 1.0f target : self selector : @selector(disconnectBLE) userInfo : nil repeats :NO]; //在延时1s后,执行disconnectBLE;

}

-(void)disconnectBLE {

if ( sensor.activePeripheral.state == CBPeripheralStateConnected) { //判定是否为连接状态

[sensor.manager cancelPeripheralConnection : sensor.activePeripheral ] ; //取消连接

Sensor.activePeripheral = nil;

}

}

成功实现了修改名称的功能。

作为非计算机/app开发专业人员,未能理解其中的原因。个人猜想为:程序并非在将command发送完成之后才执行取消连接。而是先把command读取到发送缓冲区,在另一线程中进行发送,而取消连接的操作在同步进行,导致command命令未能完整发出。

希望得到专业人士的指点。

蓝牙设备改参数教程_修改蓝牙设备的名称相关推荐

  1. 蓝牙设备改参数教程_蓝牙精确定位技术下的化工厂安全管理系统,蓝牙定位标签...

    一.项目背景; 苏州新导针对普瑞玛智能装备有限公司现场的实际情况与安全管理的需求,结合蓝牙定位技术,特设计适用于化工厂实际需求的定位安全管理系统. 通过蓝牙定位建设人员定位安全管理系统,可实现以下目标 ...

  2. #{}不自动改参数类型_证件照上传不成功,教你修改分辨率、调整照片大小

    ​关于上传证件照的问题我写过三篇文章,可能过程有些繁琐,一些没有计算机基础的朋友还是感觉很麻烦. 今天写的这篇文章简单.全面,看了这篇文章,相信你的证件照一定能够上传成功. 1.确定证件照的背景 报考 ...

  3. keil5改工程名称_修改Keil工程名称并添加其他模块文件

    学习目标 在上一篇文章 <基于STM32固件库的MDK5工程建立> 基础上,将Keil工程名称Template修改为Usart 添加延时函数文件及串口1的实现文件 main.c文件中测试p ...

  4. #{}不自动改参数类型_我是干流动补胎的,想让我的柴油机气泵自动打气,怎么改装。谢谢。...

    展开全部 买一个启动系统来 这个系统有源自带电瓶的,也有启2113动电机和启动模5261块的,怎么4102划算怎么去改,改1653装可以让柴油机实现全自动控制,低气压10公斤柴油机自动点火启动,高气压 ...

  5. #{}不自动改参数类型_【Just For Fun】C - 可变参数函数、可变参数宏 __VA_ARGS__、额外的逗号

    [Just For Fun] 本系列纯粹娱乐.研究用.一些旁门左道的东西. 事实上可能完全没用. (๑•̀ω•́๑) 對於可变参数函数.可变参数宏 __VA_ARGS__ , 我曾經有在另一些地方寫過 ...

  6. #{}不自动改参数类型_如何在不刷新页面的情况下改变URL

    本文为饥人谷原创文章,首发于 前端学习指南. 问没有具体业务场景的技术问题都是耍流氓,那在回答这个问题之前先简单介绍一下业务场景. 下午6点半,小 H写了一个下午的代码揉揉眼睛伸个懒腰,「今天终于能早 ...

  7. uc3842改可调电源教程_《学习笔记》--DC/DC电源电路设计实例

    1.设计概述 利用LTC3704实现3.3V 1.5V的转换,最大输出电流1A(LTC3704是一款支持正向电源电压转换为负向电源电压的DC/DC电源芯片,支持的输入端电源电压范围是2.5V~36V, ...

  8. 修改战网服务器,使命召唤16现代战争怎么改战网地区_修改战网客户端的方法_3DM单机...

    <使命召唤16:现代战争>即将在25日正式发售,由于游戏PC版没有登陆steam只能通过战网购买,而游戏并不会登陆国服战网,因此玩家需要手动修改战网客户端才能并游玩购买游戏.以下就是&qu ...

  9. dnf十字斩改暴风教程_十字改秒杀所有代码

    十字斩改暴风:21058 十字斩改红屏秒:24331 十字斩改紫爆:24293 十字斩改狙击秒:11169 十字斩改秒杀:24326 十字斩改BUFF秒:24070 十字斩改觉醒:24067 十字斩改 ...

最新文章

  1. 领导让我重构代码_领导不是由代码构成
  2. Label的作用是什么?是怎么用的?
  3. 如何来理解Python中的字典数据类型
  4. 如何在Bash中的分隔符上拆分字符串?
  5. Java数据类型和MySql数据类型对应表
  6. jQuery.noConflict() 解决冲突 原理深入
  7. 不要小看日本的AI公司
  8. C++常用函数有哪些?
  9. Java保存class文件,[转载]Class文件在JVM中如何存储
  10. Paper再现:MD+AI自动编码机探测蛋白变构(一):文章分析
  11. SpringBoot整合调用微信模板方法实现微信公众号消息通知推送,Java实现微信公众号给关注用户推送自定义消息通知(手把手从0到1)
  12. 详解高级前端面试常问的EventLoop
  13. python把正整数翻译成英文_将Python整数转换为单词
  14. 为什么要进行软件验收测试?如何获得软件验收测试报告
  15. Tampermonkey 高级API的使用 附Demo
  16. 2022年茶艺师(中级)考试题模拟考试题库及答案
  17. STM32之SWD连接配置说明
  18. 网络安全体系与网络安全模型
  19. 不使用采集卡,实现相机手机多机位直播
  20. WEB服务及WSDL

热门文章

  1. android棉花糖,清甜棉花糖:安卓M/Android 6.0上手体验评测
  2. 私有化场景下大规模云原生应用的交付实践
  3. Kaggle泰坦尼克号船难--逻辑回归预测生存率
  4. “大数据杀熟”?商家对数据的使用可能远超出想象
  5. 关于OSPF的五种报文类型介绍、OSPF八种状态机变化与报文交互介绍。
  6. FBX二进制文件格式规范
  7. 怎样成为优秀的前端_如何成为优秀的在线社区会员
  8. 微信小程序返回上一页 没有上一页的情况下返回首页
  9. 怀孕用计算机来算周期怎么算,怀孕周期计算器公式
  10. Linux初识 —— 基本指令的使用