修改蓝牙设备的名称

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命令未能完整发出。

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

时间: 2024-11-10 11:51:47

修改蓝牙设备的名称的相关文章

Azure PowerShell (2) 修改Azure订阅名称

<Windows Azure Platform 系列文章目录> 为什么要修改订阅名称? 这里主要有两个原因: (1)最近发现一个问题,国内世纪互联运维的Azure,默认的订阅名称是中文的,如"企业客户试用账号"等. 但是在英文的操作系统中,使用PowerShell选择的订阅的时候,中文的订阅名称会变成乱码. (2)在某些情况下,客户的IT部门要通过订阅的名称来区分不同的用途.而Windows Azure默认的订阅名称无法满足这样的需求. 这里笔者以世纪互联运维的Window

修改NGINX版本名称为任意WEB SERVER

下载好Nginx的安装文件nginx-1.6.0.tar.gz,并把它解压. wget http://nginx.org/download/nginx-1.6.0.tar.gz tar xzvf nginx-1.2.3.tar.gz 然后我们修改src/core/nginx.h. #define NGINX_VERSION "1.2.3" #define NGINX_VER "nginx/" NGINX_VERSION #define NGINX_VAR "

myeclipse如何修改Web项目名称,eclipse如何修改项目名字

myeclipse如何修改Web项目名称 1.复制一个现有的项目,重命名项目名称 2.这里的项目名称重新命名了,但是Web项目本质下的名称还是没有改变的.所以需要更改,更改方法-->选择项目右击"属性" 3.搜索"web",找到web选项 4.将Web-context-root重新命名为(你需要的名字) eclipse如何修改项目名字 1:修改项目目录下:.project文件 <?xml version="1.0" encoding=

Android 使用Log4j把日志写入SD卡,动态修改输出文件名称

一.Log4j简单使用 1. 下载log4j.jar http://logging.apache.org/log4j/2.x/ 2. 创建Java代码 public class Loggers { public static Logger logger = Logger. getLogger(Loggers. class); public static void init() { try { PatternLayout patternLayout = new PatternLayout(); p

两步修改CentOS主机名称

在CentOS系统中,修改主机名称的步骤如下: 1. 修改network文件 编辑network文件,配置如下: vi /etc/sysconfig/network 配置 NETWORKING=yes HOSTNAME=Hadoop-cluster 2 加载配置 hostname Hadoop-cluster hostname Hadoop-cluster 两步修改CentOS主机名称,布布扣,bubuko.com

爆微信公众平台个人类账号一年内可主动修改一次名称

本周二时ytkah接收了一条微信公众号的消息,提示[公众号“***”已更改名称为“***”],当时还不明就里,以为是运营者发的,就没怎么关注,后面有部分网友反映,微信个人公众号可以改名了,每年可主动改名一次.看来是真的.之前我们说过微信认证时可以改名,现在应该更简单了. 在公众平台有提示:个人类账号一年内可主动修改一次名称.修改个人公众号名称的步骤并不复杂,首先需要扫描二维码验证(验证必须绑定本人银行卡).之后同意修改名称的协议.修改名称(名称长度为3—30个字符)之后确认修改就可以了. 值得一

修改Azure订阅名称

Azure的订阅名称默认为"Windows Azure Enterprise" 或"Windows Azure 企业",这样的话如果是EA用户,创建了很多子账户,管理员无法直观的看出每个订阅是谁在使用,如下图 但是这个订阅名称其实是可以修改的,可以修改为能够更直观的名称.接下来我们就来看下如何修改Azure订阅名称. 首先登录到Azure管理界面,然后点击右上角的账户,如下图 然后点击查看我的账单 点击Windows Azure Enterprise 点击编辑订阅信

ios xcode如何修改应用的名称

ios xcode如何修改应用的名称 当你创建一个project时,会要求你输入product name & company identifier,这两个property的值should和你在apple developer member center的"Provisioning Portal"的"App IDs"里创建的bundle identifier (NOT App ID)匹配!如果不匹配的话,push notification feature和clo

修改采样线名称

问题来源: 在Autodesk论坛中,一位朋友提出了这样一个问题:要把路线曲线点.超高点等特征信息在横断面图标题中显示出来,注意是横断面图. 解决方法: 如果直接解决这个问题,貌似不可行,但可以稍稍绕一点路,通过采样线名称来实现--把采样线名称当做横断面图的标题! 这样以来,我们只需修改采样线名称即可!手工修改应该不大现实,我们可以通过简单的代码来实现! 代码如下: 注意这只是测试代码,测试前提假定路线有一个采样线编组,如果采样线编组多于一个,代码也只能修改第一个采样线编组中采样线的名称. 超高