在iOS SDK中使用BLE从外部设备发送和接收数据
我必须使用BLE从外部设备(数据记录器温度计)获取数据。请参阅下面的图片了解该设备。在iOS SDK中使用BLE从外部设备发送和接收数据
该设备仅在发送一条命令时才发送数据。我的意思是我们必须首先发送静态字节数据到设备,然后它将发送显示在图像中的T1,T2,T3和T4值的数据。
我可以使用BLE将数据发送到一个iOS设备,使用BTLE Central Peripheral Transfer Demo和answer。但是,我无法使用这种方式向外部设备发送和接收数据。
正如本演示中提到的,我使用CBPeripheralManager
和CBCentralManager
来使用BLE发送和接收数据。此外,我可以使用EAAccessoryManager
来显示所有BLE连接附近的列表。因此,当用户从列表中单击任何设备时,我会获取该设备的UUID并尝试使用该UUID发送和接收数据。
是否有任何其他方式使用蓝牙将iOS设备发送和接收数据到任何外部设备?
我想分享一下,Android Developer使用SSP而不是BLE来实现这个功能。这是否可以在iOS中使用BLE来完成此操作?
任何帮助,将不胜感激。
我总是用CoreBluetooth执行这一协议(CBCentralManagerDelegate,CBPeripheralDelegate)和重写此方法:
func centralManagerDidUpdateState(_ central: CBCentralManager)
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber)
func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral)
func centralManager(_ central: CBCentralManager, didFailToConnect peripheral: CBPeripheral, error: Error?)
func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?)
// Check if the service discovered is a valid Service
func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?)
func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?)
// And for getting the value changes in the BLE Device...
func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?)
func peripheral(_ peripheral: CBPeripheral, didWriteValueFor characteristic: CBCharacteristic, error: Error?)
我希望它能帮助
您写入或读取数值之前,你需要知道哪些特点是可读的并且是可写的,比你可以读或写。只需BTLE的过程为:
扫描周边 - > conenect - >查找服务 - >发现的特点 - > ...你需要
操作,如果你想写值可写特性,需要确认外设将响应此写入请求,否则您将在回调中收到错误:peripheral(_:didWriteValueFor:error)
可能是“未知错误”。
当您尝试读取你需要呼叫特征的价值:readValue(for:)
或setNotifyValue(_:for:)
,外围设备的更新的结果将在响应peripheral(_:didUpdateValueFor:error:)
以上,是我BTLE数据传输的理解。希望能帮助你。
您确定该设备实际支持BLE吗?经典的蓝牙和BLE是两种不同的协议/堆栈。通过'EAAccessoryManager'可见的设备是Classic Bluetooth设备,而不是BLE设备。要扫描BLE设备,您应该使用'CBCentralManager scanForPeripheralsWithServices:options:'。 – jcaron