我刚接触BLE,目前正在尝试制作一个简单的应用程序,它将连接到我的自定义BLE设备.我能够发现BLE设备,但由于某种原因我无法连接到它.我尝试用'浅蓝'检查它,它显示我的设备可连接,似乎工作正常.但在我发现设备后,我的应用程序,CB经理尝试连接到它,似乎"冻结"?功能'didConnect peripheral'永远不会被触发,外设状态永远是'连接'.
我该如何识别问题?我可以在连接方法中包含任何选项,还是以某种方式跟踪连接过程?
我很感激任何建议在哪里寻找问题.
在XCode 8.2.1中工作,使用Swift 3. iOS 10.2.1安装在测试手机上
这是我的代码:
import UIKit
import CoreBluetooth
class InfoPageViewController: UIViewController, CBCentralManagerDelegate, CBPeripheralDelegate {
var manager:CBCentralManager!
var peripheral:CBPeripheral!
let BEAN_NAME = "MyDevice"
override func viewDidLoad() {
super.viewDidLoad()
manager = CBCentralManager(delegate: self, queue: nil)
}
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
let device = (advertisementData as NSDictionary)
.object(forKey: CBAdvertisementDataLocalNameKey)
as? NSString
if device?.contains(BEAN_NAME) == true {
self.manager.stopScan()
self.peripheral = peripheral
self.peripheral.delegate = self
manager.connect(peripheral, options: nil) …Run Code Online (Sandbox Code Playgroud) 我对iOS编程和蓝牙协议都很陌生.我找到了一个用swift编写的示例代码,并尝试修改它以使用我自己的蓝牙模块.我有这个模块是DBM01从道尔吉.
我需要使用的服务是FFF0,并且特征是FFF1用于发送ASCII值.
当我在我的macbook上使用LightBlue应用程序并连接到我设计的板上,其上有DBM01模块时,我可以发送char值为"1"并得到预期的响应(打开LED)以及何时我发送值"0"它关闭LED.
现在有了我的代码,我可以连接到DBM01模块.我可以打印它的名字.但是,我无法通过以下功能与其断开连接.我也不确定这是用于断开设备还是在设备断开时自动调用.无论如何,它无论如何都无效.
func centralManager(central: CBCentralManager,
didDisconnectPeripheral peripheral: CBPeripheral,
error: NSError?)
Run Code Online (Sandbox Code Playgroud)
我的主要问题是我真的不明白我如何指定服务和我感兴趣的特性并连接到具有它们的特定设备.
我也无法发送消息.当我尝试时,我得到预定义的错误,因为以下条件不成立
if writeCharacteristic != nil
Run Code Online (Sandbox Code Playgroud)
以下是我的完整代码.
感谢您是否可以指出我在哪里做错了以及如何通过特定服务和特征信息连接到特定设备并发送数据.
//
// ViewController.swift
// bleSwift
//
import UIKit
import CoreBluetooth
class ViewController: UIViewController, CBCentralManagerDelegate, CBPeripheralDelegate {
var centralManager: CBCentralManager!
var peripheral: CBPeripheral!
var writeCharacteristic: CBCharacteristic!
var service: CBService!
var characteristic: CBCharacteristic!
var bluetoothAvailable = false
let message = "1"
@IBOutlet weak var deviceName: UILabel!
@IBOutlet weak var ServiceName: UILabel!
@IBOutlet weak var CharacteristicsName: UILabel! …Run Code Online (Sandbox Code Playgroud) 你可以在iOS应用程序中配对蓝牙LE设备,即不通过设置.试图让用户更容易与特定设备配对.
如果是这样的话?