Ard*_*sar 3 bluetooth ios raspberry-pi bluetooth-lowenergy swift
我用 swiftUI 创建了一个新应用程序,并尝试使用 coreBluetooth 库连接 Raspberry Pi 4。我搜索了所有谷歌,但我坚持连接 Raspberry Pi 4。我可以找到所有设备(外围设备),但无法连接他们。
这是代码;
class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate {
var myCentral: CBCentralManager!
@Published var isSwitchedOn = false
@Published var peripherals = [Peripheral]()
override init() {
super.init()
myCentral = CBCentralManager(delegate: self, queue: nil)
myCentral.delegate = self
}
func centralManagerDidUpdateState(_ central: CBCentralManager) {
if central.state == .poweredOn {
isSwitchedOn = true
}
else {
isSwitchedOn = false
}
}
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
var peripheralName: String!
if let name = advertisementData[CBAdvertisementDataLocalNameKey] as? String {
peripheralName = name
}
else {
peripheralName = "Unknown"
}
if peripheral.identifier.uuidString == "6D915395-3E79-0072-22A3-009DDC331F7C" {
myCentral.stopScan()
myCentral.connect(peripheral, options: nil)
print("okokokokok")
}
let newPeripheral = Peripheral(id: peripherals.count, name: peripheralName, rssi: RSSI.intValue)
print(newPeripheral)
peripherals.append(newPeripheral)
}
func centralManager(central: CBCentralManager!,didConnectPeripheral peripheral: CBPeripheral!)
{
peripheral.discoverServices(nil)
print("Connected")
print(peripheral.name!)
print(peripheral.services!)
}
}
Run Code Online (Sandbox Code Playgroud)
删除了 stackoverfow 的一些代码部分 bc
您的连接问题不是持有对要连接的 CBPeripheral 对象的引用。所以你已经通过在课堂上引用它来解决了这个问题BLEManager。
现在如何向 Raspberry 发送数据或从 Raspberry 获取数据?CBPeripheralDelegate那么你必须在你的班级中实施BLEManager。
CBPeripheralDelegate;您需要为发现的服务调用discoverCharacteristics 。discoverCharacteristics(_:for:)同样,当使用您在回调中调用的方法发现给定服务的特征时didDiscoverServices,如果您想了解特征更新,可以设置通知值。CBPeripheralDelegate在这个回调中;您可以从CBCharacteristic获取接收到的数据。值属性。请注意,该value属性是可选的,因此您需要小心处理它。