国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

修改藍牙設備的名稱

2019-11-14 18:22:47
字體:
來源:轉載
供稿:網友

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

希望得到專業人士的指點。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 即墨市| 仲巴县| 房山区| 宽甸| 武汉市| 南雄市| 万安县| 涿州市| 巴南区| 绥芬河市| 深水埗区| 安陆市| 渭源县| 胶南市| 台前县| 广水市| 南岸区| 利川市| 新昌县| 长宁区| 香格里拉县| 乌兰察布市| 玉门市| 大兴区| 永泰县| 时尚| 六安市| 邢台县| 宁国市| 望奎县| 巨野县| 错那县| 牡丹江市| 崇礼县| 昌平区| 平凉市| 金寨县| 武宁县| 永康市| 镶黄旗| 咸宁市|