我是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板。我做错了什么?
提前致谢!
答案 0 :(得分:0)
请注意,无法(通常)将数据写入BLE,速度超过35至50 ms。最好使用计时器(在iOS中最小刻度在50到100毫秒之间)写入字符,而不是直接从滑块写入。因此,计时器轮询滑块的值并写入它。更高级的应用应该使用tx队列。
此外,您可能需要查看以下答案:SWIFT - BLE communications