在iOS Swift中写入BLE接收器

时间:2015-03-27 03:19:57

标签: ios swift bluetooth bluetooth-lowenergy uuid

我是iOS和BLE的新手。我一直在关注连接并将数据发送到Arduino上的BLE接收器板的教程。本教程是为不同的主板设计的,我正在使用(如果可能有帮助,BLE主板是Adafruit nrf8001)。

以下代码设置UUID ...

let BLEServiceUUID = CBUUID(string: "6E400001-B5A3-F393-E0A9-E50E24DCCA9E") let PositionCharUUID = CBUUID(string: "6E400002-B5A3-F393-E0A9-E50E24DCCA9E") let BLEServiceChangedStatusNotification = "kBLEServiceChangedStatusNotification"

此代码将我的iOS设备连接到BLE板。

central.connectPeripheral(peripheral, options: nil)

然后我在ViewController中设置了一个滑块,我想将该滑块的值发送到BLE板。这是我的writePosition函数:

func writePosition(position: UInt8)->NSData { let currentValue = NSUserDefaults.standardUserDefaults().floatForKey("sliderValue") var currentValueString=NSString(format: "%.5f", currentValue) var writeType:CBCharacteristicWriteType let newString:NSString = currentValueString let data = NSData(bytes: newString.UTF8String, length: newString.length) peripheral?.writeValue(data, forCharacteristic: self.positionCharacteristic, type: writeType) return data }

请注意,我的arduino和我的应用都确认它们确实已连接。但是,如果我更改应用程序中的滑块值,它不会将其值发送到BLE板。我做错了什么?

提前致谢!

1 个答案:

答案 0 :(得分:0)

请注意,无法(通常)将数据写入BLE,速度超过35至50 ms。最好使用计时器(在iOS中最小刻度在50到100毫秒之间)写入字符,而不是直接从滑块写入。因此,计时器轮询滑块的值并写入它。更高级的应用应该使用tx队列。

此外,您可能需要查看以下答案:SWIFT - BLE communications