【发布时间】:2015-10-27 13:26:14
【问题描述】:
我正在开发一个跟踪器 iOS 应用程序来跟踪设备的 (GPS) 位置(该设备目前是一个 Arduino Uno,带有用于蓝牙连接的 Adafruit Bluefruit LE UART Friend 和一个用于 GPS 坐标的 Ublox GPS 模块)。我已经设置了 Arduino 和一个 iOS 应用程序,并且我通过一个服务通过单独的特征成功地接收了经度和纬度。
要使用我的跟踪设备的位置在 MapkitView 中添加/更新注释,我需要在一个函数中访问经度和纬度。然而 BLEHandler 和 BLEHandlerDelegate 都只发送一个特征(纬度或经度)的值。因此,我认为我需要一些功能或调整,我可以将这两个值(纬度和经度)加入到 ViewController 中访问。
您能否提供一些指导或展示一些示例代码来说明如何完成这项工作?
我是编程界的新手,所以请原谅我的天真。
非常感谢。
这里是一些代码示例: BLEHandler
func peripheral(peripheral: CBPeripheral!, didUpdateValueForCharacteristic characteristic: CBCharacteristic!, error: NSError!) {
var dataStrLat : String?
var dataStrLong : String?
if characteristic.UUID == UUID_CHAR_LAT {
var charValue : NSData = characteristic.value
dataStrLat = NSString(data: charValue, encoding: NSASCIIStringEncoding) as? String
//var dataStrLat : String? = NSString(data: charValue, encoding: NSASCIIStringEncoding) as? String
if(dataStrLat == nil){
dataStrLat = "blank"
}
NSLog("%@: Characteristic (gps lat) changed for %@ with value %@", TAG, peripheral.name, dataStrLat!)
delegate.receivedStringValue(peripheral.name, dataStr: dataStrLat!)
}
if characteristic.UUID == UUID_CHAR_LONG {
var charValue : NSData = characteristic.value
dataStrLong = NSString(data: charValue, encoding: NSASCIIStringEncoding) as? String
//var dataStrLong : String? = NSString(data: charValue, encoding: NSASCIIStringEncoding) as? String
if(dataStrLong == nil){
dataStrLong = "blank"
}
NSLog("%@: Characteristic (gps long) changed for %@ with value %@", TAG, peripheral.name, dataStrLong!)
delegate.receivedLongitudeValue(peripheral.name, dataStr: dataStrLong!)
}
}
BLEHandlerDelegate
func receivedStringValue(deviceName: String, dataStr : String)
func receivedLongitudeValue(deviceName: String, dataStr : String)
【问题讨论】:
-
你为什么不在一个字符串中表示纬度,经度对:例如“17.123456,58.123456”。然后将其分成 lat 和 lon 组件
-
您好,感谢您的建议。我正在使用基于 Bluefruit (NRF51) 的 BLE 板,它允许通过 Arduino 发送最多 20 个字节的数据包。由于纬度/经度占用更多字节(字符),我不得不拆分数据包。我还没有弄清楚如何使它小于 20 字节并决定拆分数据包。如果可以在一个数据包/字符串中发送纬度/经度,我确实可以使用它们并在需要时拆分它们。
标签: ios swift bluetooth gps mapkit