SWIFT中的蓝牙:获取19个字节的数据并转换为UInt

时间:2015-05-07 21:38:24

标签: swift bluetooth byte nsdata

我想将Concept2划船者连接到我的iPhone。 相应的蓝牙数据表可在此处找到:http://www.concept2.com/files/pdf/us/monitors/PM5_BluetoothSmartInterfaceDefinition.pdf

我想找回不同的数据:ElapsedTime,Distance,Split / interval等。

从UUID地址0X0031我按以下顺序得到19字节数据:经过时间Lo(0.01秒lsb),经过时间中位数,经过时间高,距离低(0.1 m lsb),距离中间,距离Hi, ...

所以1个字节对应1个属性。

我需要提取与属性对应的字节并进行转换。 我认为所有字节数据都是无符号类型(用于提取)。

ElapsedTime变量有3个字节。为了构建ElapsedTime变量,我计算如下:

class func dataToUnsignedBytes8(value:NSData) -> [UInt8]{
    let count = value.length
    var array = [UInt8](count: count, repeatedValue: 0)
    value.getBytes(&array, length: count * sizeof(UInt8))
    return array
}

class func getElapsedTime(value : NSData) -> Double {
    let dataFromSensor = dataToSignedBytes8(value)
    let elapsedTime = Double(dataFromSensor[2] * 65536 + dataFromSensor[1]*256 + dataFromSensor[0])
    return elapsedTime
}

但我不确定我在做什么。

ElapsedTime_Hi字节是否位于dataFromSensor的索引3处,ElapsedTime_Mid位于dataFromSensor的索引2处,ElapsedTime_Lo位于索引0处的dataFromSensor处?

为其他属性提取相应字节的最佳方法是什么?

提前谢谢

此致

0 个答案:

没有答案